Отчет комиссионера (агента) о продажах / Форма документа / Модуль формы

файл
#Область ОписаниеПеременных

&НаКлиенте
Перем ПроверкаКонтрагентовПараметрыОбработчикаОжидания Экспорт;

&НаКлиенте
Перем ФормаДлительнойОперации Экспорт;

&НаКлиенте
Перем КэшированныеЗначения; // используется механизмом обработки изменения реквизитов ТЧ

&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;

&НаКлиенте
Перем ТекущиеДанныеИдентификатор; // Используется для передачи текущей строки в обработчик ожидания

#КонецОбласти

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	УстановитьУсловноеОформление();
	
	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;

	ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
	
	ИспользуетсяЦенообразование25 = ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25();

	ИсправлениеДокументов.ПриСозданииНаСервере(ЭтаФорма, Элементы.СтрокаИсправление);
	
	ХозяйственнаяОперацияПоУмолчанию = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию");
	КомиссионныеПродажи25 = ?(Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионера, Истина, Ложь);
	
	Если КомиссионныеПродажи25 Тогда
		
		Элементы.ТоварыЗаполнитьЦеныПоСоглашению.Видимость = Ложь;
		Элементы.ТоварыЗаполнитьЦеныПоДоговору.Видимость = Истина;
		Элементы.ТоварыЗаполнитьЦеныКомитента.Видимость = Истина;
		Элементы.ТоварыЗаполнитьЦеныКлиента.Видимость = Истина;
		Элементы.ТоварыВидЦеныПродажи.Видимость = Истина;
		
	Иначе
		
		Элементы.ТоварыЗаполнитьЦеныПоСоглашению.Видимость = Истина;
		Элементы.ТоварыЗаполнитьЦеныПоДоговору.Видимость = Ложь;
		Элементы.ТоварыЗаполнитьЦеныКомитента.Видимость = Ложь;
		Элементы.ТоварыЗаполнитьЦеныКлиента.Видимость = Ложь;
		Элементы.ТоварыВидЦеныПродажи.Видимость = Ложь;
		
	КонецЕсли;
	
	УправлениеСвязямиПараметровВыбораРеквизитовФормы();
	ЗаполнитьУстановитьВидимостьСерий();
	ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма);
	
	// Обработчик подсистемы "ВерсионированиеОбъектов"
	ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
	
	Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
		ПриЧтенииСозданииНаСервере();
		НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
		РассчитыватьВознаграждение = Истина;
	КонецЕсли;
	
	Если КлиентскоеПриложение.ТекущийВариантИнтерфейса() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
		Элементы.ГруппаИтого.ЦветФона = Новый Цвет();
	КонецЕсли;
	
	ПродажиСервер.УстановитьОтметкуНезаполненногоДоговора(Элементы, "Договор");
	
	ВзаиморасчетыСервер.ФормаПриСозданииНаСервере(ЭтаФорма);

	Элементы.ТоварыВидЦены.БыстрыйВыбор = Не ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовЦен");
	
	// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	ПроверкаКонтрагентов.ПриСозданииНаСервереДокумент(ЭтотОбъект, Параметры);
	ПроверкаКонтрагентовВызовСервераПереопределяемыйУТ.ФормаДокументаПриСозданииНаСервере(ЭтотОбъект);
	// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

	// ИнтеграцияС1СДокументооборотом
	ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец ИнтеграцияС1СДокументооборотом
	
	// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаДокумента();
	ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
	ПараметрыЭДОПриСоздании.ДокументССылка = Объект.Ссылка;
	ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
	ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
	ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
	
	ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
	// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	
	Элементы.ДекорацияСостояниеЭДО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьОбменЭД");
	
	// Обработчик подсистемы "Свойства"
	ДополнительныеПараметры = Новый Структура;
	ДополнительныеПараметры.Вставить("Объект", Объект);
	ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
	ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
	УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
	
	СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
	
	СпособРасчетаВознаграждения = Объект.СпособРасчетаВознаграждения;
	ПроцентВознаграждения = Объект.ПроцентВознаграждения;
	СуммаВознаграждения = Объект.СуммаВознаграждения;

	// СтандартныеПодсистемы.РаботаСФайлами
	ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
	ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
	РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
	// Конец СтандартныеПодсистемы.РаботаСФайлами
	
	УчетПрослеживаемыхТоваровЛокализация.УстановитьЗаголовокНомерГТД(Элементы, "ТоварыНомерГТД");

	УчетНДСУП.УстановитьВидимостьКомандыЗаполнитьСтавкуНДС(ЭтотОбъект);

КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.Свойства
	
	МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтотОбъект, "СканерШтрихкода");
	
	// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	ПроверкаКонтрагентовКлиент.ПриОткрытииДокумент(ЭтотОбъект);
	// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	
	// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
	// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	// СтандартныеПодсистемы.РаботаСФайлами
	РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
	// Конец СтандартныеПодсистемы.РаботаСФайлами

КонецПроцедуры

&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
	
	ПринудительноЗакрытьФорму = Истина;
	
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии()
	
	МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)

	Если ИсточникВыбора.ИмяФормы = "ОбщаяФорма.ПодборПоТоварамПереданнымНаКомиссию" Тогда
		
		ПолучитьТоварыИзХранилища(ВыбранноеЗначение);
		
	ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровПереданныхНаОтветственноеХранение.Форма.Форма" Тогда
		
		ЦеныРассчитаны = Истина;
		ОбработкаВыбораПодборПереданныхТоваров(ВыбранноеЗначение, ЦеныРассчитаны);
		
	ИначеЕсли УчетНДСУПКлиент.ЗаконченоРедактированиеСчетовФактурКомиссионеру(ВыбранноеЗначение, ИсточникВыбора) Тогда
		
		ОбновитьТекстСчетаФактурыКомиссионеру();
		
	ИначеЕсли УчетНДСУПКлиент.ЗаконченоРедактированиеСчетаФактурыПолученного(ВыбранноеЗначение, ИсточникВыбора) Тогда
		
		ОбновитьТекстСчетаФактурыПолученные();
		
	ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.ВидыЗапасов.Форма.ФормаВводаВидовЗапасов" Тогда
		
		ПолучитьВидыЗапасовИзХранилища(ВыбранноеЗначение);
		
	ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
		
		НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);
		
	ИначеЕсли ЗакупкиКлиент.ЭтоПодборНомераГТД(ИсточникВыбора) Тогда
		
		ОбработатьПодборНомераГТД(ВыбранноеЗначение);
		
	КонецЕсли;
	
	Если Окно <> Неопределено Тогда
		Окно.Активизировать();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаЗаписиНового(НовыйОбъект, Источник, СтандартнаяОбработка)
	
	Если ЗакупкиКлиент.ЭтоУказаниеНомераГТД(Источник) Тогда
		Действия = Новый Структура;
		
		ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(ЭтотОбъект, Действия);
		
		ЗакупкиКлиент.ОбработатьУказаниеНомераГТД(ЭтотОбъект, НовыйОбъект, , , Действия);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	
	// Подсистема "Свойства"
	Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
		ОбновитьЭлементыДополнительныхРеквизитов();
		УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
	КонецЕсли;
	
	// ПодключаемоеОборудование
	Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
		Если ИмяСобытия = "ScanData" И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
			ОбработатьШтрихкоды(МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр));
		КонецЕсли;
	КонецЕсли;
	// Конец ПодключаемоеОборудование

	// Неизвестные штрихкоды
	Если Источник = "ПодключаемоеОборудование"
		И ИмяСобытия = "НеизвестныеШтрихкоды"
		И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
		
		КэшированныеЗначения.Штрихкоды.Очистить();
		ДанныеШтрихкодов = Новый Массив;
		Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл
			ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
		КонецЦикла;
		Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл
			ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
		КонецЦикла;
		
		ОбработатьШтрихкоды(ДанныеШтрихкодов);
		
	КонецЕсли;
	
	// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	ПроверкаКонтрагентовКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
	// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	
	// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	ПараметрыОповещения = ОбменСКонтрагентамиКлиент.ПараметрыОповещенияЭДО_ФормаДокумента();
	ПараметрыОповещения.Форма = ЭтотОбъект;
	ПараметрыОповещения.ДокументСсылка = Объект.Ссылка;
	ПараметрыОповещения.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
	ПараметрыОповещения.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
	
	ОбменСКонтрагентамиКлиент.ОбработкаОповещения_ФормаДокумента(ИмяСобытия, Параметр, Источник, ПараметрыОповещения);
	// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	
	ИсправлениеДокументовКлиент.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр, Источник);
	
	Если ИмяСобытия = "ОбновитьДокументИБПослеЗаполнения"  И Параметр.Найти(Объект.Ссылка) <> Неопределено Тогда
		ЭтаФорма.Прочитать();
	ИначеЕсли ИмяСобытия = "ОбновитьДокументИБПослеЗаполненияИзФайла"  И Параметр.Найти(Объект.Ссылка) <> Неопределено Тогда
		ПриЧтенииСозданииНаСервере();
	ИначеЕсли ИмяСобытия = "Запись_СчетФактураКомиссионера" Тогда
		ОбновитьТекстСчетаФактурыКомиссионеру();
	ИначеЕсли ИмяСобытия = "Запись_СчетФактураВыданный"
		И (Параметр.Свойство("ФормаВладелец") И Параметр.ФормаВладелец = УникальныйИдентификатор
			Или Параметр.Свойство("СписокОснований") И Параметр.СписокОснований.НайтиПоЗначению(Объект.Ссылка) <> Неопределено) Тогда
		ОбновитьТекстСчетаФактурыКомиссионеру();
	ИначеЕсли ИмяСобытия = "Запись_СчетФактураПолученный" Тогда
		ОбновитьТекстСчетаФактурыПолученные();
	КонецЕсли;

	Если ВзаиморасчетыКлиент.НуженВызовОбработкиОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
		ИзмененаОплатаСервер(ИмяСобытия, Параметр, Источник);
	КонецЕсли;
	
	СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
	
	// СтандартныеПодсистемы.РаботаСФайлами
	РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
	// Конец СтандартныеПодсистемы.РаботаСФайлами
	
	Если ИмяСобытия = "ПриИзмененииДоговора"
		И Источник = ЭтотОбъект Тогда
		ДоговорПриИзменении(Элементы[Параметр]);
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)

	// СтандартныеПодсистемы.УправлениеДоступом
	УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.УправлениеДоступом
	
	// Обработчик механизма "ДатыЗапретаИзменения"
	ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
	
	ИсправлениеДокументов.ПриЧтенииНаСервере(ЭтаФорма, Элементы.СтрокаИсправление);
	
	ПриЧтенииСозданииНаСервере();
	
	ВзаиморасчетыСервер.ФормаПриЧтенииНаСервере(ЭтаФорма);
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
	
	СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
	// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриЧтенииНаСервере_ФормаДокумента();
	ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
	ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
	ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
	ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
	ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
	ОбменСКонтрагентами.ПриЧтенииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
	// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	
КонецПроцедуры

&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
	// Конец СтандартныеПодсистемы.Свойства
	
КонецПроцедуры

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
	
	СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
	
	Если НеВыполнятьПроверкуПередЗаписью Тогда
		НеВыполнятьПроверкуПередЗаписью = Ложь;
		Возврат;
	КонецЕсли;
	
	// Если документ проводится, корректность графика оплаты по заказу
	Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
		Если РассчитыватьВознаграждение Тогда
		
			Отказ = Истина;
			ДополнительныеПараметры = Новый Структура;
			ДополнительныеПараметры.Вставить("ПараметрыЗаписи", ПараметрыЗаписи);
			КомиссионнаяТорговляКлиент.НеобходимоРассчитатьВознаграждение(
				Новый ОписаниеОповещения("ПередЗаписьюНеобходимоРассчитатьВознаграждениеЗавершение", ЭтотОбъект, ДополнительныеПараметры),
				ЭтаФорма);
			
		КонецЕсли;
		
	КонецЕсли;
	
	ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ПараметрыЗаписи, Отказ);
	
КонецПроцедуры

&НаКлиенте
Процедура ПередЗаписьюНеобходимоРассчитатьВознаграждениеЗавершение(НеобходимоРассчитатьВознаграждение, ДополнительныеПараметры) Экспорт
	
	НеобходимоРассчитатьВознаграждение = НеобходимоРассчитатьВознаграждение = Истина;
	
	ПередЗаписьюНаКлиентеСервер(НеобходимоРассчитатьВознаграждение);
	
	Если НеобходимоРассчитатьВознаграждение Тогда
		КомиссионнаяТорговляКлиент.ОповеститьОбОкончанииРасчетаВознаграждения(Объект.СпособРасчетаВознаграждения);
	КонецЕсли;
	
	ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ДополнительныеПараметры.ПараметрыЗаписи,,Истина);
	
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаКлиентеСервер(НеобходимоРассчитатьВознаграждение)
	
	Если НеобходимоРассчитатьВознаграждение Тогда
		РассчитатьКомиссионноеВознаграждениеСервер();
	КонецЕсли;
	
	ВзаиморасчетыВызовСервера.ФормаПередЗаписьюНаКлиентеСервер(ЭтаФорма);
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	
	// Обработчик механизма "Свойства"
	УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
		
	// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	ПроверкаКонтрагентов.ПередЗаписьюНаСервереДокумент(ЭтотОбъект, ТекущийОбъект);
	// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	
	ВзаиморасчетыСервер.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
	МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
	
	// ИнтеграцияС1СДокументооборотом
	ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
	// Конец ИнтеграцияС1СДокументооборотом
	
КонецПроцедуры

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)

	// СтандартныеПодсистемы.УправлениеДоступом
	УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
	// Конец СтандартныеПодсистемы.УправлениеДоступом
	
	СтруктураХарактеристикиНоменклатуры = Новый Структура;
	СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",	Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
	СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакАртикул",	Новый Структура("Номенклатура", "Артикул"));
	СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
	СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
	
	УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(
		СтруктураХарактеристикиНоменклатуры);
	
	НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураХарактеристикиНоменклатуры);
	ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
	
	ОбновитьТекстСчетаФактурыПолученные();
	
	ОбновитьТекстСчетаФактурыКомиссионеру();
	
	ВзаиморасчетыСервер.ФормаПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект.ДополнительныеСвойства);
	
	// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	ПроверкаКонтрагентов.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
	// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами

	МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
	
	// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	ПараметрыПослеЗаписи = ОбменСКонтрагентами.ПараметрыПослеЗаписиНаСервере();
	ПараметрыПослеЗаписи.Форма = ЭтотОбъект;
	ПараметрыПослеЗаписи.ДокументСсылка = Объект.Ссылка;
	ПараметрыПослеЗаписи.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
	ПараметрыПослеЗаписи.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;

	ОбменСКонтрагентами.ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи, ПараметрыПослеЗаписи);
	// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	
	РазблокироватьДанныеФормыДляРедактирования();
	
	СобытияФорм.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
	
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
	
	ПараметрыЗаписи.Вставить("КлючиДокументаОповещение", РаботаСЖурналамиДокументовКлиент.ПолучитьПараметрыКлючаПоДокументу(
		Объект.Ссылка, Объект.Дата, Объект.ХозяйственнаяОперация));
	Оповестить("Запись_ОтчетКомиссионера", ПараметрыЗаписи, Объект.Ссылка);
	ВзаиморасчетыКлиент.ФормаПослеЗаписи(ЭтаФорма);
		
	// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	ОбменСКонтрагентамиКлиент.ПослеЗаписи_ФормаДокумента(ЭтаФорма, ПараметрыЗаписи);
	// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами	
	
	МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
	
	ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтаФорма, Объект, ПараметрыЗаписи);
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
		МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
		МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
	КонецЕсли;
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура СтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
	
	// СтандартныеПодсистемы.Свойства
	Если ТекущаяСтраница.Имя = "СтраницаДополнительно"
		И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
		
		СвойстваВыполнитьОтложеннуюИнициализацию();
		УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
	КонецЕсли;
	// Конец СтандартныеПодсистемы.Свойства
	
	Если ТекущаяСтраница.Имя = "ГруппаОсновное" Тогда
		ВзаиморасчетыКлиент.ОбновитьТекстГиперссылкиЭтапыОплаты(ЭтаФорма);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
	
	ПересчитыватьЦены = Ложь;
	
	Если (ИспользоватьСоглашенияСКлиентами
		И ЗначениеЗаполнено(Объект.Соглашение)
		И ЗначениеЗаполнено(Объект.Валюта)
		И Не КомиссионныеПродажи25)
		Или (ЗначениеЗаполнено(Объект.Договор)
		И КомиссионныеПродажи25)
		И Объект.Товары.Количество() <> 0 Тогда
		
		МассивХозяйственныхОпераций25 = Новый Массив;
		МассивХозяйственныхОпераций25.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияЧерезКомиссионера"));
		МассивХозяйственныхОпераций25.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияЧерезКомиссионераБезПереходаПраваСобственности"));
		
		Если МассивХозяйственныхОпераций25.Найти(Объект.ХозяйственнаяОперация) <> Неопределено Тогда
			
			Если ЗначениеЗаполнено(Объект.Договор) Тогда
				
				ОбработчикОповещения = Новый ОписаниеОповещения("ДоговорПриИзмененииЗавершение", ЭтотОбъект);
				ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДоговора(Объект, ОбработчикОповещения);
				Возврат;
				
			КонецЕсли;
			
		Иначе
			
			ПараметрыОповещения = Новый Структура("ПересчитыватьЦены", ПересчитыватьЦены);
			ОбработчикОповещения = Новый ОписаниеОповещения("ДатаПриИзмененииЗавершение", ЭтотОбъект, ПараметрыОповещения);
			ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДаты(Объект, ОбработчикОповещения);
			Возврат;
			
		КонецЕсли;
		
	КонецЕсли;
	
	ДатаПриИзмененииФрагмент(ПересчитыватьЦены);
	
	// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Объект.Дата);
	// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	
КонецПроцедуры

&НаКлиенте
Процедура ДатаПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
	
	ПересчитыватьЦены = ДополнительныеПараметры.ПересчитыватьЦены;
	
	Если РезультатВопроса = Истина Тогда
		ПересчитыватьЦены = Истина;
	КонецЕсли;
	
	ДатаПриИзмененииФрагмент(ПересчитыватьЦены);
	
КонецПроцедуры

&НаКлиенте
Процедура ДатаПриИзмененииФрагмент(Знач ПересчитыватьЦены)
	
	ЦеныРассчитаны = ДатаПриИзмененииСервер(ПересчитыватьЦены);
	
	Если ПересчитыватьЦены Тогда
		ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОрганизацияПриИзменении()
	
	ОрганизацияПриИзмененииСервер();
	
КонецПроцедуры

&НаКлиенте
Процедура ВалютаПриИзменении(Элемент)
	
	Если ЗначениеЗаполнено(Объект.Валюта) Тогда
		
		КомиссионнаяТорговляКлиент.ПроверитьНеобходимостьПересчетаВВалютуОтчетыПоКомиссии(
			Новый ОписаниеОповещения("ВалютаПриИзмененииВопросПересчитатьВалютуЗавершение", ЭтотОбъект),
			Объект,
			ВалютаДокумента);
		
	Иначе
		ВалютаДокумента = Объект.Валюта;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ВалютаПриИзмененииВопросПересчитатьВалютуЗавершение(ПересчитатьВалюту, ДополнительныеПараметры) Экспорт
	
	ВалютаПриИзмененииСервер(
		Объект.Валюта,
		ПересчитатьВалюту);
		
	ЦенообразованиеКлиент.ОповеститьОбОкончанииПересчетаСуммВВалюту(ВалютаДокумента, Объект.Валюта);
	
	ВалютаДокумента = Объект.Валюта;
	
КонецПроцедуры

&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
	
	Если ЗначениеЗаполнено(Объект.Партнер) Тогда
		ПартнерПриИзмененииСервер();
		Если ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение) Тогда
			ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродажПоУмолчанию();
		КонецЕсли;
	КонецЕсли;
	
	// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элемент);
	// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	
КонецПроцедуры

&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
	
	КонтрагентПриИзмененииСервер();
	
	// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элемент);
	// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	
КонецПроцедуры

&НаКлиенте
Процедура НалогообложениеНДСПриИзменении(Элемент)
	
	НалогообложениеНДСПриИзмененииСервер();
	РассчитыватьВознаграждение = Истина;
	
КонецПроцедуры

&НаКлиенте
Процедура ЦенаВключаетНДСПриИзменении(Элемент)
	
	ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения);
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПараметрыРегистрацииСчетовФактурПолученныхСервер(Знач Объект)
	
	Возврат Документы.ОтчетКомиссионера.ПараметрыРегистрацииСчетовФактурПолученных(Объект);
	
КонецФункции	

&НаКлиенте
Процедура ТекстСчетаФактурыПолученныеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
	
	ПараметрыРегистрации = ПараметрыРегистрацииСчетовФактурПолученныхСервер(Объект);
	
	УчетНДСУПКлиент.ОбработкаНавигационнойСсылкиСчетаФактурыПолученные(
		ЭтаФорма,
		НавигационнаяСсылка,
		СтандартнаяОбработка,
		ПараметрыРегистрации);
		
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПараметрыРегистрацииСчетовФактурКомиссионеруСервер(Знач Объект)
	
	Возврат Документы.ОтчетКомиссионера.ПараметрыРегистрацииСчетовФактурКомиссионеру(Объект);
	
КонецФункции

&НаКлиенте
Процедура ТекстСчетаФактурыКомиссионеруОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	ОчиститьСообщения();
	ПараметрыРегистрации = ПараметрыРегистрацииСчетовФактурКомиссионеруСервер(Объект);
	
	УчетНДСУПКлиент.ОбработкаНавигационнойСсылкиСчетаФактурыКомиссионеру(
		ЭтаФорма,
		НавигационнаяСсылкаФорматированнойСтроки,
		СтандартнаяОбработка,
		ПараметрыРегистрации);
			
		
	ОбновитьТекстСчетаФактурыКомиссионеру();
	
КонецПроцедуры

&НаКлиенте
Процедура СоглашениеПриИзменении(Элемент)
	
	Если Не ЗначениеЗаполнено(Объект.Соглашение) Тогда
		КомиссионерНеВедетУчетПоРНПТ = Ложь;
		Возврат;
	КонецЕсли;
	
	СоглашениеПриИзмененииСервер();
	ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродаж();
	
КонецПроцедуры

&НаКлиенте
Процедура ДоговорСоздание(Элемент, СтандартнаяОбработка)
	
	ПродажиКлиент.ОткрытьФормуСозданияДоговора(ЭтотОбъект, Элемент, "Объект.Договор", Объект.Партнер, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура ДоговорПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
	
	Если РезультатВопроса = Истина Тогда
		ЦеныРассчитаны = ДоговорПриИзмененииЗавершениеСервер();
		ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоДоговору(ЦеныРассчитаны);
	Иначе
		НалогообложениеНДСПриИзмененииСервер();
		РассчитыватьВознаграждение = Истина;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)
	
	ТекстСообщения = "";
	ДоговорПриИзмененииСервер(ТекстСообщения);
	
	Если ЗначениеЗаполнено(ТекстСообщения) Тогда
		ПоказатьОповещениеПользователя(
			НСтр("ru = 'Цены не могут быть заполнены'"),
			,
			ТекстСообщения,
			БиблиотекаКартинок.Информация32);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ДоговорНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	СтруктураОтбора = Новый Структура;
	СтруктураОтбора.Вставить("Организация", Объект.Организация);
	СтруктураОтбора.Вставить("ПометкаУдаления", Ложь);
	СтруктураОтбора.Вставить("ВалютаВзаиморасчетов", Объект.Валюта);
	СтруктураОтбора.Вставить("Контрагент", Объект.Контрагент);
	СтруктураОтбора.Вставить("Статус", ПредопределенноеЗначение("Перечисление.СтатусыДоговоровКонтрагентов.Действует"));
	СтруктураОтбора.Вставить("ХозяйственнаяОперация", ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию"));
	СтруктураОтбора.Вставить("ВестиРасчетыЧерезКонечныхПокупателей", Ложь);
	СтруктураОтбора.Вставить("КомиссионныеПродажи25", КомиссионныеПродажи25);
	СтруктураОтбора.Вставить("ПометкаУдаления", Ложь);
	
	СтруктураПараметровВыбора = Новый Структура;
	
	СтруктураПараметровВыбора.Вставить("Партнер", Объект.Партнер);
	СтруктураПараметровВыбора.Вставить("Соглашение", Объект.Соглашение);
	СтруктураПараметровВыбора.Вставить("Отбор",СтруктураОтбора);
	СтруктураПараметровВыбора.Вставить("РежимВыбора", Истина);
	
	СписокПорядков = Новый СписокЗначений;
	СписокПорядков.Добавить(ПредопределенноеЗначение("Перечисление.ПорядокРасчетов.ПоЗаказам"));
	СписокПорядков.Добавить(ПредопределенноеЗначение("Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов"));
	
	СтруктураПараметровВыбора.Вставить("ДоступныеПорядкиРасчетов", СписокПорядков);
	
	СтруктураПараметровВыбора.Вставить("Отбор",СтруктураОтбора);
		ОткрытьФорму("Справочник.ДоговорыКонтрагентов.Форма.ФормаВыбора",
		СтруктураПараметровВыбора,
		Элемент,
		Элемент,)
	
КонецПроцедуры

&НаКлиенте
Процедура СоглашениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

	ПараметрыВыбораСоглашения = ПродажиКлиент.ПараметрыНачалаВыбораСоглашенияСКлиентом();
	
	ПараметрыВыбораСоглашения.Элемент                     = Элемент;
	ПараметрыВыбораСоглашения.Партнер                     = Объект.Партнер;
	ПараметрыВыбораСоглашения.Документ                    = Объект.Соглашение;
	ПараметрыВыбораСоглашения.ДатаДокумента               = Объект.Дата;
	ПараметрыВыбораСоглашения.ХозяйственнаяОперация       = ХозяйственнаяОперацияПоУмолчанию;
	ПараметрыВыбораСоглашения.КомиссионныеПродажи25       = КомиссионныеПродажи25;
	ПараметрыВыбораСоглашения.ДанныеФормыСтруктура        = Объект;
	
	ПродажиКлиент.НачалоВыбораСоглашенияСКлиентом(ПараметрыВыбораСоглашения, СтандартнаяОбработка);

КонецПроцедуры

&НаКлиенте
Процедура ПоРезультатамИнвентаризацииПриИзменении(Элемент)
	
	УправлениеЭлементамиФормы();
	
КонецПроцедуры

&НаКлиенте
Процедура СпособРасчетаВознагражденияПриИзменении(Элемент)
	
	Если Не Объект.СпособРасчетаВознаграждения = СпособРасчетаВознаграждения Тогда
		ДополнительныеПараметры = Новый Структура("ВосстановитьРеквизиты", Ложь);
		Оповещение = Новый ОписаниеОповещения(
			"СпособРасчетаВознагражденияПриИзмененииНеобходимоРассчитатьВознаграждениеЗавершение", ЭтотОбъект, ДополнительныеПараметры);
		КомиссионнаяТорговляКлиент.НеобходимоРассчитатьВознаграждение(Оповещение, ЭтотОбъект);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура СпособРасчетаВознагражденияПриИзмененииНеобходимоРассчитатьВознаграждениеЗавершение(НеобходимоРассчитатьВознаграждение, ДополнительныеПараметры) Экспорт
	
	Если НеобходимоРассчитатьВознаграждение = Истина Тогда
		СпособРасчетаВознаграждения = Объект.СпособРасчетаВознаграждения;
		РассчитатьКомиссионноеВознаграждениеСервер();
		КомиссионнаяТорговляКлиент.ОповеститьОбОкончанииРасчетаВознаграждения(Объект.СпособРасчетаВознаграждения);
	ИначеЕсли ДополнительныеПараметры.ВосстановитьРеквизиты Тогда
		Объект.СпособРасчетаВознаграждения = СпособРасчетаВознаграждения;
	КонецЕсли;
	
	СпособРасчетаВознагражденияПриИзмененииСервер();
	
	Если Объект.СпособРасчетаВознаграждения = ПредопределенноеЗначение("Перечисление.СпособыРасчетаКомиссионногоВознаграждения.НеРассчитывается") Тогда
		Объект.ПроцентВознаграждения = 0;
		Объект.СуммаВознаграждения = 0;
		ПроцентВознаграждения = 0;
		СуммаВознаграждения = 0;
		Объект.Услуга = ПредопределенноеЗначение("Справочник.Номенклатура.ПустаяСсылка");
		Объект.СтавкаНДСВознаграждения = ПредопределенноеЗначение("Справочник.СтавкиНДС.ПустаяСсылка");
		Объект.ДатаПлатежа = Дата(1, 1, 1, 0, 0, 0);
		Объект.УдержатьВознаграждение = Ложь;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура СпособРасчетаВознагражденияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СпособРасчетаВознаграждения = Объект.СпособРасчетаВознаграждения;
	
КонецПроцедуры

&НаКлиенте
Процедура ПроцентВознагражденияПриИзменении(Элемент)
	
	Если Не Объект.ПроцентВознаграждения = ПроцентВознаграждения Тогда
		ДополнительныеПараметры = Новый Структура;
		ДополнительныеПараметры.Вставить("ВосстановитьРеквизиты", Ложь);
		ДополнительныеПараметры.Вставить("ОчиститьКомиссионноеВознаграждение", Ложь);
		ОписаниеОповещения = Новый ОписаниеОповещения(
			"ПроцентСуммаВознагражденияПриИзмененииНеобходимоРассчитатьВознаграждениеЗавершение", ЭтотОбъект, ДополнительныеПараметры);
		КомиссионнаяТорговляКлиент.НеобходимоРассчитатьВознаграждение(ОписаниеОповещения, ЭтотОбъект);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура СуммаВознагражденияПриИзменении(Элемент)

	Если Не Объект.СуммаВознаграждения = СуммаВознаграждения Тогда
		ДополнительныеПараметры = Новый Структура;
		ДополнительныеПараметры.Вставить("ВосстановитьРеквизиты", Ложь);
		ДополнительныеПараметры.Вставить("ОчиститьКомиссионноеВознаграждение", Ложь);
		ОписаниеОповещения = Новый ОписаниеОповещения(
			"ПроцентСуммаВознагражденияПриИзмененииНеобходимоРассчитатьВознаграждениеЗавершение", ЭтотОбъект, ДополнительныеПараметры);
		КомиссионнаяТорговляКлиент.НеобходимоРассчитатьВознаграждение(ОписаниеОповещения, ЭтотОбъект);
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура ПроцентСуммаВознагражденияПриИзмененииНеобходимоРассчитатьВознаграждениеЗавершение(НеобходимоРассчитатьВознаграждение, ДополнительныеПараметры) Экспорт
	
	Если НеобходимоРассчитатьВознаграждение = Истина Тогда
		
		РассчитатьКомиссионноеВознаграждениеСервер();

		СпособРасчетаДляОповещения = ?(
			ДополнительныеПараметры.ОчиститьКомиссионноеВознаграждение,
			ПредопределенноеЗначение("Перечисление.СпособыРасчетаКомиссионногоВознаграждения.НеРассчитывается"),
			Объект.СпособРасчетаВознаграждения);
		КомиссионнаяТорговляКлиент.ОповеститьОбОкончанииРасчетаВознаграждения(СпособРасчетаДляОповещения);

		ПроцентВознаграждения = Объект.ПроцентВознаграждения;
		СуммаВознаграждения = Объект.СуммаВознаграждения;

	ИначеЕсли ДополнительныеПараметры.ВосстановитьРеквизиты Тогда

		Объект.ПроцентВознаграждения = ПроцентВознаграждения;
		Объект.СуммаВознаграждения = СуммаВознаграждения;

	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура УслугаПриИзменении(Элемент)
	
	УслугаПриИзмененииСервер();
	
КонецПроцедуры

&НаКлиенте
Процедура СтавкаНДСВознагражденияПриИзменении(Элемент)
	
	КомиссионнаяТорговляКлиент.СтавкаНДСВознагражденияПриИзменении(Объект, ПроцентНДС);
	
КонецПроцедуры

&НаКлиенте
Процедура УдержатьВознаграждениеПриИзменении(Элемент)
	
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);
	УдержатьВознаграждениеПриИзмененииСервер();
	
КонецПроцедуры

&НаКлиенте
Процедура МенеджерПриИзменении(Элемент)
	ЗаполнитьПодчиненныеСвойстваПоСтатистике("Менеджер");
КонецПроцедуры

&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
	
	НаправлениеДеятельностиПриИзмененииСервер();
	
КонецПроцедуры

&НаКлиенте
Процедура ДекорацияЭДОНажатие(Элемент, СтандартнаяОбработка)
	
	// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	ОбменСКонтрагентамиКлиент.СостояниеЭДОНажатие_ФормаДокумента(ЭтотОбъект, СтандартнаяОбработка);
	// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	
КонецПроцедуры

&НаКлиенте
Процедура СтрокаИсправлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	ИсправлениеДокументовКлиент.СтрокаИсправлениеОбработкаНавигационныйСсылки(
		ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыТовары

&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	Если Поле = Элементы.ТоварыЦена Тогда
		
		ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
		Если ЗначениеЗаполнено(ТекущиеДанные.ВидЦены) Тогда
			ОчиститьСообщения();
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
				НСтр("ru='Для редактирования цены очистите вид цены'"),
				Объект.Ссылка,
				ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Объект.Товары", ТекущиеДанные.НомерСтроки, "ВидЦены"),);
		КонецЕсли;
		
	ИначеЕсли КомиссионныеПродажи25
		И Поле = Элементы.ТоварыЦенаПродажи Тогда
		
		ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
		Если ЗначениеЗаполнено(ТекущиеДанные.ВидЦеныПродажи) Тогда
			ОчиститьСообщения();
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
				НСтр("ru='Для редактирования цены очистите вид цены'"),
				Объект.Ссылка,
				ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Объект.Товары", ТекущиеДанные.НомерСтроки, "ВидЦеныПродажи"),);
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ТоварыПриАктивизацииЯчейки(Элемент)
	
	Если Элемент.ТекущийЭлемент = Элементы.ТоварыНомерГТД Тогда
		
		ЗакупкиКлиент.ЗаполнитьСписокВыбораНомеровГТД(
			Элементы.Товары.ТекущиеДанные, Элементы.ТоварыНомерГТД.СписокВыбора);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
	
	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
	
	РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
	
	ПродажиКлиент.СтрокаНоменклатурыПриНачалеРедактирования(ЭтаФорма, "Товары", ТекущаяСтрока, НоваяСтрока, Копирование);
	
	НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий,
		Копирование);

КонецПроцедуры

&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
	
	ПроверитьСериюРассчитатьСтатус = Новый Структура;
	ПроверитьСериюРассчитатьСтатус.Вставить("Склад",                  ПредопределенноеЗначение("Справочник.Склады.ПустаяСсылка"));
	ПроверитьСериюРассчитатьСтатус.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
	ЗаполнитьПризнакТипНоменклатуры = Новый Структура("Номенклатура", "ТипНоменклатуры");

	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;

	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
	СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу"      , ТекущаяСтрока.Упаковка);
	СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
	Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение)) 
		Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
		СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
	Иначе
		СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
	КонецЕсли;
	СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
	СтруктураДействий.Вставить("ПересчитатьСуммуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект));
	СтруктураДействий.Вставить("ПересчитатьСумму");
	СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", Новый Структура("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС));
	СтруктураДействий.Вставить("ОчиститьСуммуВознаграждения");
	СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
	СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус",        ПроверитьСериюРассчитатьСтатус);
	СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры",       ЗаполнитьПризнакТипНоменклатуры);
	СтруктураДействий.Вставить("ЗаполнитьКодТНВЭД", Объект.НалогообложениеНДС);
	СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
	СтруктураДействий.Вставить("ЗаполнитьСтрануПроисхожденияНоменклатуры",
								ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтраныПроисхождения());
	
	УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(
		СтруктураДействий);
	
	ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(ЭтаФорма, СтруктураДействий);
	
	СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
		ЭтаФорма.ИмяФормы, "Товары"));
	
	ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
	
	Если Не ТекущаяСтрока.ВедетсяУчетПоРНПТ Тогда
		ТекущаяСтрока.НомерГТД = Неопределено;
		ТекущаяСтрока.ТипНомераГТД = Неопределено;
		ТекущаяСтрока.СтранаПроисхождения = Неопределено;
	КонецЕсли;
	
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);
	
	РассчитыватьВознаграждение = Истина;
	
КонецПроцедуры

&НаКлиенте
Процедура ТоварыХарактеристикаПриИзменении(Элемент)

	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;

	СтруктураДействий = Новый Структура;
	Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение)) 
		Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
		СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
	Иначе
		СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
	КонецЕсли;
	СтруктураДействий.Вставить("ПересчитатьСуммуНДС",  ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект));
	СтруктураДействий.Вставить("ПересчитатьСумму");
	СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", Новый Структура("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС));

	СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
		ЭтаФорма.ИмяФормы, "Товары"));

	ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);
	
	ТекущаяСтрока.СуммаВознаграждения = 0;
	РассчитыватьВознаграждение = Истина;

КонецПроцедуры

&НаКлиенте
Процедура ТоварыУпаковкаПриИзменении(Элемент)

	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
	
	Если ТекущаяСтрока.Количество = 0 Тогда
		ПересчитатьОстаткиПоДаннымУчетаСервер(ТекущаяСтрока.НомерСтроки);
		ТекущаяСтрока.КоличествоУпаковокФакт = ТекущаяСтрока.КоличествоУпаковокУчет;
	Иначе

		КоличествоДоПересчета = ТекущаяСтрока.Количество;
		
		КомиссионнаяТорговляКлиент.ОтчетКомиссионераТоварыУпаковкаПриИзменении(Объект, ТекущаяСтрока,
			ИспользоватьСоглашенияСКлиентами, КэшированныеЗначения);
		
		Если ТекущаяСтрока.Количество <> КоличествоДоПересчета И ТекущаяСтрока.Количество <> 0 Тогда
			ТекущаяСтрока.КоличествоУпаковокУчет = Окр(ТекущаяСтрока.КоличествоУпаковокУчет * КоличествоДоПересчета / ТекущаяСтрока.Количество, 2, 1);
			ТекущаяСтрока.КоличествоУпаковокФакт = ТекущаяСтрока.КоличествоУпаковокУчет - ТекущаяСтрока.КоличествоУпаковок;
		КонецЕсли;
		
	КонецЕсли;
	
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);

	РассчитыватьВознаграждение = Истина;

КонецПроцедуры

&НаКлиенте
Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент)

	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
	КомиссионнаяТорговляКлиент.ОтчетКомиссионераТоварыКоличествоУпаковокПриИзменении(Объект, ТекущаяСтрока, КэшированныеЗначения);;
	
	РассчитыватьВознаграждение = Истина;
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);

КонецПроцедуры

&НаКлиенте
Процедура ТоварыКоличествоУпаковокФактПриИзменении(Элемент)
	
	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
	
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковокПоФакту");
	СамообслуживаниеКлиентСервер.ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковокОтчетКомиссионера(СтруктураДействий, Объект);
	
	ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(ЭтаФорма, СтруктураДействий);
	
	ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
	
	РассчитыватьВознаграждение = Истина;
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ТоварыВидЦеныПриИзменении(Элемент)

	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;

	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
	СтруктураДействий.Вставить("ПересчитатьСуммуНДС",  ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект));
	СтруктураДействий.Вставить("ПересчитатьСумму");
	СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", Новый Структура("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС));
	СтруктураДействий.Вставить("ОчиститьСуммуВознаграждения");

	ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);

	РассчитыватьВознаграждение = Истина;
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);

КонецПроцедуры

&НаКлиенте
Процедура ТоварыВидЦеныПродажиПриИзменении(Элемент)
	
	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
	
	СтруктураДействий = Новый Структура;
	ПараметрыЗаполненияЦеныПродажи = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект);
	ПараметрыЗаполненияЦеныПродажи.Вставить("ИмяПоляЦена", "ЦенаПродажи");
	ПараметрыЗаполненияЦеныПродажи.Вставить("ИмяКолонкиВидЦены", "ВидЦеныПродажи");
	
	СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПараметрыЗаполненияЦеныПродажи);
	СтруктураДействий.Вставить("ОчиститьСуммуВознаграждения");
	
	ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
	КомиссионнаяТорговляКлиент.ОтчетКомиссионераТоварыЦенаПродажиПриИзменении(ТекущаяСтрока, КэшированныеЗначения);
	
	РассчитыватьВознаграждение = Истина;
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)

	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;

	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьСуммуНДС",  ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект));
	СтруктураДействий.Вставить("ПересчитатьСумму");
	СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", Новый Структура("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС));
	СтруктураДействий.Вставить("ОчиститьСуммуВознаграждения");

	ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
	
	РассчитыватьВознаграждение = Истина;
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);

КонецПроцедуры

&НаКлиенте
Процедура ТоварыСуммаПриИзменении(Элемент)
	
	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;

	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьЦенуСкидкуПоСуммеВПродажах");
	СтруктураДействий.Вставить("ПересчитатьСуммуНДС",  ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект));
	СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", Новый Структура("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС));
	СтруктураДействий.Вставить("ОчиститьСуммуВознаграждения");

	ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
	
	РассчитыватьВознаграждение = Истина;
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ТоварыСуммаНДСПриИзменении(Элемент)
	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;

	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", Новый Структура("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС));
	СтруктураДействий.Вставить("ОчиститьСуммуВознаграждения");

	ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
	
	РассчитыватьВознаграждение = Истина;
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);
КонецПроцедуры

&НаКлиенте
Процедура ТоварыСтавкаНДСПриИзменении(Элемент)

	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;

	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьСуммуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект));
	СтруктураДействий.Вставить("ПересчитатьСумму");
	СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", Новый Структура("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС));
	СтруктураДействий.Вставить("ПересчитатьСуммуПродажиНДС");
	СтруктураДействий.Вставить("ОчиститьСуммуВознаграждения");

	ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);

	РассчитыватьВознаграждение = Истина;
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);

КонецПроцедуры

&НаКлиенте
Процедура ТоварыЦенаПродажиПриИзменении(Элемент)
	
	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
	
	КомиссионнаяТорговляКлиент.ОтчетКомиссионераТоварыЦенаПродажиПриИзменении(ТекущаяСтрока, КэшированныеЗначения);

	РассчитыватьВознаграждение = Истина;
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ТоварыСуммаПродажиПриИзменении(Элемент)
	
	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
	
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьЦенуПродажиПоСуммеПродажи");
	СтруктураДействий.Вставить("ПересчитатьСуммуПродажиНДС");
	СтруктураДействий.Вставить("ОчиститьСуммуВознаграждения");
	
	ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
	
	РассчитыватьВознаграждение = Истина;
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ТоварыСуммаПродажиНДСПриИзменении(Элемент)
	
	РассчитыватьВознаграждение = Истина;
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ТоварыСуммаВознагражденияПриИзменении(Элемент)
	
	Объект.СуммаВознаграждения = Объект.Товары.Итог("СуммаВознаграждения");
	ИтогСуммаПродажи = Объект.Товары.Итог("СуммаПродажи");
	Объект.ПроцентВознаграждения = ?(ИтогСуммаПродажи <> 0, Объект.СуммаВознаграждения / ИтогСуммаПродажи * 100, 0);
	КомиссионнаяТорговляКлиент.РассчитатьКомиссионноеВознаграждениеНДС(Объект, ПроцентНДС);
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);
	
	УправлениеЭлементамиФормы();
	
КонецПроцедуры

&НаКлиенте
Процедура ТоварыПокупательПриИзменении(Элемент)
	
	// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элементы.Товары);
	// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами

КонецПроцедуры

&НаКлиенте
Процедура ТоварыДатаСчетаФактурыКомиссионераПриИзменении(Элемент)
	
	// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элементы.Товары);
	// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами

КонецПроцедуры

&НаКлиенте
Процедура ТоварыНомерГТДПриИзменении(Элемент)
	
	ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
	
	Если ТекущиеДанные = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ПараметрыЗаполнения = Новый Структура("НомерГТД", ТекущиеДанные.НомерГТД);
	
	Действия = Новый Структура;
	Действия.Вставить("ЗаполнитьТипНомераГТД", ПараметрыЗаполнения);
	Действия.Вставить("ЗаполнитьСтрануПроисхожденияДляНомераГТД", ПараметрыЗаполнения);
	
	ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(ЭтотОбъект, Действия);
	
	ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, Действия, Неопределено);
	
КонецПроцедуры

&НаКлиенте
Процедура ТоварыНомерГТДСоздание(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
	
	ДополнительныеПараметры = ЗакупкиКлиент.ДополнительныеПараметрыСозданияНомераГТД();
	ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, ЭтотОбъект);
	
	ДополнительныеПараметры.ОснованиеСтоимостиПоступления = Ложь;
	
	ПараметрыСоздания = ЗакупкиКлиент.ПараметрыСозданияНомераГТД(ТекущиеДанные,
																Элемент.ТекстРедактирования,
																ДополнительныеПараметры);
	
	ЗакупкиКлиент.ОткрытьФормуСозданияНомераГТД(ЭтотОбъект, ПараметрыСоздания);
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
	 РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
	 РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
	 РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
	 РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

&НаКлиенте
Процедура УстановитьИнтервал(Команда)
	
	ОбщегоНазначенияУТКлиент.РедактироватьПериод(Объект, 
		Новый Структура("ДатаНачала, ДатаОкончания", "НачалоПериода", "КонецПериода"));

КонецПроцедуры

&НаКлиенте
Процедура ПодборПоОстаткам(Команда)
	
	ПараметрыПроверки = РаботаСТабличнымиЧастямиКлиент.ПараметрыПроверкиЗаполнения();
	ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить("Организация", НСтр("ru = 'Организация'"));
	ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить("Партнер",     НСтр("ru = 'Комиссионер'"));
	Если КомиссионныеПродажи25 Тогда
		ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить("Договор", НСтр("ru = 'Договор'"));
		ПараметрыПроверки.Вставить("ПроверятьРаспроведенность", Ложь);
	КонецЕсли;
	Оповещение = Новый ОписаниеОповещения("ПодборПоОстаткамЗавершение", ЭтотОбъект);
	РаботаСТабличнымиЧастямиКлиент.ПроверитьВозможностьЗаполнения(ЭтаФорма, Оповещение, ПараметрыПроверки);
	
КонецПроцедуры

&НаКлиенте
Процедура ПересчитатьОстаткиПоДаннымУчета(Команда)
	
	ПараметрыПроверки = РаботаСТабличнымиЧастямиКлиент.ПараметрыПроверкиЗаполнения();
	ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить("Организация", НСтр("ru = 'Организация'"));
	ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить("Партнер",     НСтр("ru = 'Комиссионер'"));
	Оповещение = Новый ОписаниеОповещения("ПересчитатьОстаткиПоДаннымУчетаЗавершение", ЭтотОбъект);
	РаботаСТабличнымиЧастямиКлиент.ПроверитьВозможностьЗаполнения(ЭтаФорма, Оповещение, ПараметрыПроверки);
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьВидыЗапасов(Команда)
	
	ПараметрыРедактированияВидовЗапасов = ПоместитьТоварыИВидыЗапасовВХранилище();
	
	ФинансыКлиент.ОткрытьВидыЗапасов(ЭтотОбъект, ПараметрыРедактированияВидовЗапасов);
	
КонецПроцедуры

&НаКлиенте
Процедура ПоискПоШтрихкоду(Команда)
	
	ОчиститьСообщения();
	Оповещение = Новый ОписаниеОповещения("ПоискПоШтрихкодуЗавершение", ЭтотОбъект);
	ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьДанныеИзТСД(Команда)
	
	ОчиститьСообщения();
	
	МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(
		Новый ОписаниеОповещения("ЗагрузитьИзТСДЗавершение", ЭтотОбъект),
		УникальныйИдентификатор);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьИзТСДЗавершение(РезультатВыполнения, Параметры) Экспорт
	
	Если РезультатВыполнения.Результат Тогда
		ОбработатьШтрихкоды(РезультатВыполнения.ТаблицаТоваров);
	Иначе
		МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура РазбитьСтроку(Команда)
	
	ТаблицаФормы  = Элементы.Товары;
	ДанныеТаблицы = Объект.Товары;
	
	ПараметрыРазбиенияСтроки = РаботаСТабличнымиЧастямиКлиент.ПараметрыРазбиенияСтроки();
	Если Объект.ПоРезультатамИнвентаризации Тогда
		ПараметрыРазбиенияСтроки.Заголовок = НСтр("ru='Введите остаток по факту в новой строке.'");
		ПараметрыРазбиенияСтроки.ИмяПоляКоличество = "КоличествоУпаковокФакт";
	Иначе
		ПараметрыРазбиенияСтроки.РазрешитьНулевоеКоличество = Ложь;
	КонецЕсли;
	
	ДополнительныеПараметры = УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеПараметровРазбиенияСтрокиТабличнойЧасти(ТаблицаФормы.ТекущиеДанные);
	
	Оповещение = Новый ОписаниеОповещения("РазбитьСтрокуЗавершение", ЭтотОбъект, ДополнительныеПараметры);
	РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы, Оповещение, ПараметрыРазбиенияСтроки);
	
КонецПроцедуры

&НаКлиенте
Процедура РассчитатьВознаграждение(Команда)
	
	КомиссионнаяТорговляКлиент.НеобходимоРассчитатьВознаграждение(
		Новый ОписаниеОповещения("РассчитатьВознаграждениеНеобходимоРассчитатьВознаграждениеЗавершение", ЭтотОбъект),
		ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура РассчитатьВознаграждениеНеобходимоРассчитатьВознаграждениеЗавершение(НеобходимоРассчитатьВознаграждение, ДополнительныеПараметры) Экспорт
	
	Если НеобходимоРассчитатьВознаграждение = Истина Тогда
		РассчитатьКомиссионноеВознаграждениеСервер();
		КомиссионнаяТорговляКлиент.ОповеститьОбОкончанииРасчетаВознаграждения(Объект.СпособРасчетаВознаграждения);
		УправлениеЭлементамиФормы();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
	
	ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьЦеныПоСоглашению(Команда)

	Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоСоглашению(Объект, "Товары", НСтр("ru='Товары'")) Тогда
		
		ТекстОшибки = "";
		ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(ТекстОшибки);
		ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны, ТекстОшибки);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьЦеныПоДоговору(Команда)
	
	ВидЦеныКомиссионера = ПолучитьВидЦеныДоговора("ВидЦенУчетный");
	ВидЦеныПродажи = ПолучитьВидЦеныДоговора("ВидЦенПродажи");
	
	Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВиду(Объект, ВидЦеныКомиссионера)
		И ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВиду(Объект, ВидЦеныПродажи) Тогда
		
		ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦен("ВидЦенУчетный");
		ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦен("ВидЦенПродажи");
		ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьЦеныКомитента(Команда)
	
	ВидЦеныДоговора = ПолучитьВидЦеныДоговора("ВидЦенУчетный");
	
	Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВиду(Объект, ВидЦеныДоговора) Тогда
		
		ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦен("ВидЦенУчетный");
		ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьЦеныКлиента(Команда)
	
	ВидЦеныДоговора = ПолучитьВидЦеныДоговора("ВидЦенПродажи");
	
	Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВиду(Объект, ВидЦеныДоговора) Тогда
		
		ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦен("ВидЦенПродажи");
		ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайла(Команда)
	
	ПараметрыЗагрузки = РаботаСТабличнымиЧастямиКлиент.ПараметрыЗагрузкиНоменклатуры();
	ПараметрыЗагрузки.Организация = Объект.Организация;
	ПараметрыЗагрузки.ЗагружатьЦены = Истина;
	ПараметрыЗагрузки.ЦенаВключаетНДС    = Объект.ЦенаВключаетНДС;
	ПараметрыЗагрузки.НалогообложениеНДС = Объект.НалогообложениеНДС;
	ПараметрыЗагрузки.ДатаЗаполнения     = Объект.Дата;
	ПараметрыЗагрузки.ПараметрыОтбора.Вставить("ТипНоменклатуры",
		НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТареУслугеРаботе(Ложь));
	
	Оповещение = Новый ОписаниеОповещения("ЗагрузитьИзВнешнегоФайлаЗавершение", ЭтотОбъект);
	РаботаСТабличнымиЧастямиКлиент.ПоказатьФормуЗагрузкиНоменклатуры(ПараметрыЗагрузки, Оповещение);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайлаЗавершение(АдресЗагруженныхДанных, ДополнительныеПараметры) Экспорт
	
	Если ЗначениеЗаполнено(АдресЗагруженныхДанных) Тогда
		ПолучитьЗагруженныеТоварыИзХранилища(АдресЗагруженныхДанных);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПровестиДокумент(Команда)
	
	ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
	
	ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма, Истина);
	
КонецПроцедуры

// ИнтеграцияС1СДокументооборотом
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
	
	ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
	
КонецПроцедуры
// Конец ИнтеграцияС1СДокументооборотом

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
	УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
	ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

// ЭлектронноеВзаимодействие.ОбменСКонтрагентами

&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЭДО(Команда)
	
	ЭлектронноеВзаимодействиеКлиент.ВыполнитьПодключаемуюКомандуЭДО(Команда, ЭтаФорма, Объект);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбработчикОжиданияЭДО()
	
	ОбменСКонтрагентамиКлиент.ОбработчикОжиданияЭДО(ЭтотОбъект);
	
КонецПроцедуры

// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами

&НаКлиенте
Процедура ЗачетОплаты(Команда)
	
	ПоместитьРасшифровкуПлатежаВоВременноеХранилище();
	ВзаиморасчетыКлиент.ЗачетОплаты(ЭтаФорма, Элементы.ЗачетОплатыФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗачетОплатыВознаграждение(Команда)
	
	ПоместитьРасшифровкуПлатежаВоВременноеХранилище();
	ВзаиморасчетыКлиент.ЗачетОплаты(ЭтаФорма, Элементы.ЗачетОплатыПоВознаграждению);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьСтавкуНДС(Команда)

	Если Объект.Товары.Количество() = 0 Тогда
		ТекстПредупреждения = НСтр("ru = 'В список ""Товары"" не введено ни одной строки.'");
		ПоказатьПредупреждение(, ТекстПредупреждения);
		Возврат;
	КонецЕсли;

	ОповещениеОЗакрытии = Новый ОписаниеОповещения("ЗаполнитьСтавкуНДСЗавершение", ЭтотОбъект);
	ПараметрыФормы = Новый Структура();
	ПараметрыФормы.Вставить("ТипНалогообложенияНДС", Объект.НалогообложениеНДС);
	ОткрытьФорму("Справочник.СтавкиНДС.ФормаВыбора", ПараметрыФормы,,,,, ОповещениеОЗакрытии);

КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

// СтандартныеПодсистемы.Свойства

&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
	УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

// Конец СтандартныеПодсистемы.Свойства

&НаСервере
Процедура УстановитьУсловноеОформление()

	УсловноеОформление.Элементы.Очистить();

	//

	НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма);
	НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(ЭтаФорма, Ложь);
	НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма,
		"СерииПриПланированииОтгрузкиУказываютсяВТЧТовары");
	//
	
	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСтавкаНДС.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаНДС.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСумма.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаПродажиНДС.Имя);

	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.НалогообложениеНДС");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС;

	Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);

	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ВидЦены");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
	Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
	
	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНомерСчетаФактурыКомиссионера.Имя);
	
	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыДатаСчетаФактурыКомиссионера.Имя);
	
	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПокупатель.Имя);

	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КоличествоУпаковок");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ОтборЭлемента.ПравоеЗначение = 0;
	Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
	Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не требуется>'"));
	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
	//

	НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма);

	//

	ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеВидовЦен(ЭтаФорма);

	//
	
	НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтаФорма);
	
	//
	
	УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюПродажи(ЭтаФорма);
	
	//
	
	УчетПрослеживаемыхТоваровЛокализация.УстановитьУсловноеОформлениеКоличестваПоРНПТ(ЭтотОбъект);
	УчетПрослеживаемыхТоваровЛокализация.УстановитьУсловноеОформлениеУчетаПоГТДВДокументахКомиссионера(ЭтотОбъект);
	//
	
	ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеВидовЦен(ЭтаФорма, "ТоварыВидЦеныПродажи", "Объект.Товары.ВидЦеныПродажи");
	
	//
	
	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦенаПродажи.Имя);

	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ВидЦеныПродажи");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
	Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
	
	Если Открыта() Тогда
		Закрыть();
	КонецЕсли;
	
КонецПроцедуры

#Область ПриИзмененииРеквизитов

&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
	
	ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость, Объект.Договор);
	
	ДенежныеСредстваСервер.ПроверитьЗаполнитьБанковскийСчетОрганизацииПоВладельцу(Объект.Организация, Объект.БанковскийСчет, Объект.ФормаОплаты);
	ДенежныеСредстваСервер.ПроверитьЗаполнитьКассуОрганизацииПоВладельцу(Объект.Организация, Объект.Касса, Объект.ФормаОплаты);
	
	Если ЗначениеЗаполнено(Объект.Организация) Тогда
		ЗаполнитьДоговорПоУмолчанию();
		
		Если ИспользоватьНаправленияДеятельности Тогда
			НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
		КонецЕсли;
		
		ОбновитьТекстСчетаФактурыКомиссионеру();
		
		ОбновитьТекстСчетаФактурыПолученные();
		
		ЗаполнитьНалогообложениеНДСПродажи();
		НалогообложениеНДСПриИзмененииСервер();
		
		ПересчитатьКоличествоРНПТ();
	КонецЕсли;
	
	ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Организация");
	ЗаполнитьПодчиненныеСвойстваПоСтатистике("Организация");
	
	ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
	
	ЗаполнитьСписокВыбораГрузоотправитель();
	
КонецПроцедуры

&НаСервере
Процедура ВалютаПриИзмененииСервер(НоваяВалюта, ПересчитатьСуммы)
	
	ЗаполнитьДоговорПоУмолчанию();
	
	Если ПересчитатьСуммы Тогда
		ПродажиСервер.ПересчитатьСуммуДокументаВВалюту(
			Объект,
			ВалютаДокумента,
			Объект.Валюта,
			Истина, // ЕстьСуммаПродажи
			Истина); // ЕстьСуммаПродажиНДС
		РассчитыватьВознаграждение = Истина;
		РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);
	КонецЕсли;
	
	ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Валюта");
	
	ЗаполнитьПодчиненныеСвойстваПоСтатистике("Валюта");
	
КонецПроцедуры

&НаСервере
Процедура ПартнерПриИзмененииСервер()
	
	МассивИзмененныхРеквизитов = Новый Массив;
	МассивИзмененныхРеквизитов.Добавить("Партнер");
	
	Если ИспользоватьСоглашенияСКлиентами Тогда
		ЗаполнитьУсловияПродаж();
		МассивИзмененныхРеквизитов.Добавить("Валюта");
		МассивИзмененныхРеквизитов.Добавить("НаправлениеДеятельности");
		МассивИзмененныхРеквизитов.Добавить("Организация");
		МассивИзмененныхРеквизитов.Добавить("Контрагент");
		МассивИзмененныхРеквизитов.Добавить("Договор");
	КонецЕсли;
	
	ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.Партнер, Объект.Контрагент);
	ПартнерыИКонтрагенты.ЗаполнитьКонтактноеЛицоПартнераПоУмолчанию(Объект.Партнер, Объект.КонтактноеЛицо);
	
	ВалютаДокумента = Объект.Валюта;
	ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, МассивИзмененныхРеквизитов);
	
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);

	Если ИспользоватьНаправленияДеятельности Тогда
		НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
	КонецЕсли;
	
	ОбновитьТекстСчетаФактурыКомиссионеру();
	
	ОбновитьТекстСчетаФактурыПолученные();	
	
	УправлениеЭлементамиФормы();
	
	ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость, Объект.Договор);
	
	ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
	ОтветственныеЛицаСервер.ЗаполнитьМенеджера(Объект);
	
КонецПроцедуры

&НаСервере
Процедура КонтрагентПриИзмененииСервер()
	
	ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость, Объект.Договор);
	
	Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
		ЗаполнитьДоговорПоУмолчанию();
	КонецЕсли;

	Если ИспользоватьНаправленияДеятельности Тогда
		НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
	КонецЕсли;
	
	ЗаполнитьСписокВыбораГрузоотправитель();
	
	ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Контрагент");
	ЗакупкиСервер.ЗаполнитьСписокВыбораНаименованиеВходящегоДокумента(ЭтотОбъект, Объект.Контрагент);
КонецПроцедуры

&НаСервере
Процедура ДоговорПриИзмененииСервер(ТекстСообщения = "")
	
	Если ЗначениеЗаполнено(Объект.Договор) Тогда
		
		ВидЦеныКомиссионера = ПолучитьВидЦеныДоговора("ВидЦенУчетный");
		ВидЦеныПродажи = ПолучитьВидЦеныДоговора("ВидЦенПродажи");
		
		Если (Не ВидЦеныКомиссионера.ЦенаВключаетНДС = Неопределено 
				И Не Объект.ЦенаВключаетНДС = ВидЦеныКомиссионера.ЦенаВключаетНДС) 
			Или (Не ВидЦеныПродажи.ЦенаВключаетНДС = Неопределено 
				И НЕ Объект.ЦенаВключаетНДС = ВидЦеныПродажи.ЦенаВключаетНДС) Тогда
			
			ТекстСообщения = НСтр("ru='Признак ""Цена включает НДС"" различается в виде цен договора и документа'");
		
		КонецЕсли;
		
	КонецЕсли;
	
	ПродажиСервер.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчет);
	ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Договор");
	
	Если ИспользоватьНаправленияДеятельности Тогда
		НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
	КонецЕсли;
	
	ЗаполнитьНалогообложениеНДСПродажи();
	НалогообложениеНДСПриИзмененииСервер();
	ОтветственныеЛицаСервер.ЗаполнитьМенеджера(Объект);
	ЗаполнитьПодчиненныеСвойстваПоСтатистике("Договор");
	
КонецПроцедуры

&НаСервере
Процедура НалогообложениеНДСПриИзмененииСервер()
	
	КэшированныеЗначенияСлужебный = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("СкорректироватьСтавкуНДС",  ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
	ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначенияСлужебный);
	
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьСуммуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект));
	СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", Новый Структура("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС));
	СтруктураДействий.Вставить("ПересчитатьСуммуПродажиНДС");
	СтруктураДействий.Вставить("ОчиститьСуммуВознаграждения");
	
	ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
		КэшированныеЗначенияСлужебный.ОбработанныеСтроки,
		СтруктураДействий,
		Объект.Товары,
		Неопределено);
	
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ЗаполнитьКодТНВЭД", Объект.НалогообложениеНДС);
	ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
	
	ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);
	
	РассчитыватьВознаграждение = Истина;

	УчетНДСУП.УстановитьВидимостьКомандыЗаполнитьСтавкуНДС(ЭтотОбъект);
	АктулизироватьСтавкаНДСВознаграждения();
	
КонецПроцедуры

&НаСервере
Процедура АктулизироватьСтавкаНДСВознаграждения() 
	
	СтруктураЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
	
	ТекущаяСтрока = Новый Структура("СтавкаНДС", Справочники.СтавкиНДС.ПустаяСсылка());
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("СкорректироватьСтавкуНДС", СтруктураЗаполненияСтавкиНДС);
	ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, Неопределено);
	Объект.СтавкаНДСВознаграждения = ТекущаяСтрока.СтавкаНДС;
	
	Объект.СуммаНДСВознаграждения = УчетНДСУПКлиентСервер.РассчитатьСуммуНДС(Объект.СуммаВознаграждения,
		УчетНДСУПКлиентСервер.ЗначениеСтавкиНДС(Объект.СтавкаНДСВознаграждения));
	
КонецПроцедуры

&НаСервере
Процедура ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения)
	
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьСуммуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект));
	СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", Новый Структура("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС));
	ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);
	
	Элементы.ТоварыСумма.Видимость = Не Объект.ЦенаВключаетНДС;
	
КонецПроцедуры

&НаСервере
Процедура СоглашениеПриИзмененииСервер()
	
	ДокументОбъект = РеквизитФормыВЗначение("Объект");
	ДокументОбъект.ЗаполнитьУсловияПродажПоСоглашению();
	ОтветственныеЛицаСервер.ЗаполнитьМенеджера(ДокументОбъект);
	ЗначениеВРеквизитФормы(ДокументОбъект, "Объект");
	
	ЗаполнитьПризнакКомиссионерНеВедетУчетПоРНПТНаСервере();
	
	КомиссионнаяТорговляСервер.РассчитатьСуммуВознаграждения(Объект,, Истина);
	РассчитыватьВознаграждение = Ложь;
	
	СтруктураХарактеристикиНоменклатуры = Новый Структура;
	СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",	Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
	СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакАртикул",	Новый Структура("Номенклатура", "Артикул"));
	СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
	СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
	
	УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(
		СтруктураХарактеристикиНоменклатуры);
	
	НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураХарактеристикиНоменклатуры);
	
	ВалютаДокумента = Объект.Валюта;
	
	ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
	ЗаполнитьПризнакКомиссионерНеВедетУчетПоРНПТНаСервере();
	
	МассивИзмененныхРеквизитов = Новый Массив;
	
	МассивИзмененныхРеквизитов.Добавить("Партнер");
	МассивИзмененныхРеквизитов.Добавить("Валюта");
	МассивИзмененныхРеквизитов.Добавить("НаправлениеДеятельности");
	МассивИзмененныхРеквизитов.Добавить("Организация");
	МассивИзмененныхРеквизитов.Добавить("Контрагент");
	МассивИзмененныхРеквизитов.Добавить("Договор");
	МассивИзмененныхРеквизитов.Добавить("СпособРасчетаВознаграждения");
	МассивИзмененныхРеквизитов.Добавить("УдержатьВознаграждение");
	ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, МассивИзмененныхРеквизитов);
	
	УправлениеЭлементамиФормы();
	
	ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость, Объект.Договор);
	
	ОбновитьТекстСчетаФактурыКомиссионеру();
	
	ОбновитьТекстСчетаФактурыПолученные();

	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);
	
	ЗаполнитьПодчиненныеСвойстваПоСтатистике("Договор");

	Если ИспользоватьНаправленияДеятельности Тогда
		НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
	КонецЕсли;
	
	ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
	
КонецПроцедуры

&НаСервере
Функция ДоговорПриИзмененииЗавершениеСервер()
	
	КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("СкорректироватьСтавкуНДС",  ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
	ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);

	ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦен("ВидЦенУчетный");
	ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦен("ВидЦенПродажи");
		
	АктулизироватьСтавкаНДСВознаграждения();
	
	Возврат ЦеныРассчитаны;
	
КонецФункции


&НаСервере
Процедура УслугаПриИзмененииСервер()
	
	КомиссионнаяТорговляСервер.ЗаполнитьСтавкуНДСкомиссионногоВознаграждения(Объект, ПроцентНДС);
	
КонецПроцедуры

&НаСервере
Процедура СпособРасчетаВознагражденияПриИзмененииСервер()
	
	УправлениеЭлементамиФормы();
	ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "СпособРасчетаВознаграждения");
	ОбновитьТекстСчетаФактурыПолученные();
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьПризнакКомиссионерНеВедетУчетПоРНПТНаСервере()
	
	КомиссионерНеВедетУчетПоРНПТ =
		Не Справочники.СоглашенияСКлиентами.КомиссионерВедетУчетПоРНПТ(Объект.Соглашение);
	
КонецПроцедуры

&НаСервере
Функция ДатаПриИзмененииСервер(ПересчитыватьЦены)
	
	ИспользоватьУчетПрослеживаемыхИмпортныхТоваров =
		УчетПрослеживаемыхТоваровЛокализация.ИспользоватьУчетПрослеживаемыхИмпортныхТоваров(Объект.Дата);
	
	УчетПрослеживаемыхТоваровЛокализация.УстановитьВидимостьКоличестваРНПТ(ЭтаФорма, Объект.Дата);
	
	Если Не Элементы.ТоварыГруппаКоличествоПоРНПТ.Видимость Тогда
		ПересчитатьКоличествоРНПТ();
	КонецЕсли;
	
	Если ПересчитыватьЦены Тогда
		ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер();
	Иначе
		ЦеныРассчитаны = Ложь;
	КонецЕсли;
	
	ЗаполнитьНалогообложениеНДСПродажи();
	НалогообложениеНДСПриИзмененииСервер();
	
	ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
	
	Возврат ЦеныРассчитаны;
	
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Процедура ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(Форма, СтруктураДействий)
	
	Если Форма.КомиссионерНеВедетУчетПоРНПТ Тогда
		Возврат;
	КонецЕсли;
	
	УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
		Форма.Объект,
		СтруктураДействий,
		"Партнер");
	
КонецПроцедуры

&НаКлиенте
Процедура ТоварыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ОткрытьПодборСерий(Элемент.ТекстРедактирования);
	
КонецПроцедуры

&НаКлиенте
Процедура ТоварыСерияПриИзменении(Элемент)
	
	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
	
	ВыбранноеЗначение                            = НоменклатураКлиентСервер.ВыбраннаяСерия();
	ВыбранноеЗначение.Значение                   = ТекущаяСтрока.Серия;
	ВыбранноеЗначение.ИдентификаторТекущейСтроки = ТекущаяСтрока.ПолучитьИдентификатор();
	
	НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);
	
КонецПроцедуры

#КонецОбласти

#Область ПодборыИОбработкаПроверкиКоличества

// Процедура используется в автотесте процесса продаж.
//
&НаСервере
Функция ПоместитьТоварыВХранилище(Знач Товары, УникальныйИдентификатор)

	АдресПлатежейВХранилище = ПоместитьВоВременноеХранилище(
		Товары.Выгрузить(,"Номенклатура, Характеристика, НомерГТД, Количество, КоличествоПоРНПТ"),
		УникальныйИдентификатор);
		
	Возврат АдресПлатежейВХранилище;
	
КонецФункции

&НаСервере
Функция ПоместитьТоварыВХранилищеССерией(Знач Товары, УникальныйИдентификатор)

	АдресПлатежейВХранилище = ПоместитьВоВременноеХранилище(
		Товары.Выгрузить(,"НомерСтроки, Номенклатура, Характеристика, НомерГТД, Серия, Количество"),
		УникальныйИдентификатор);
		
	Возврат АдресПлатежейВХранилище;
	
КонецФункции

&НаСервере
Функция ПоместитьТоварыИВидыЗапасовВХранилище()
	
	Возврат ЗапасыСервер.ПоместитьТоварыИВидыЗапасовВХранилище(ЭтотОбъект);
		
КонецФункции

&НаСервере
Процедура ПолучитьВидыЗапасовИзХранилища(ВыбранноеЗначение)
	
	ЗапасыСервер.ОбработатьВводВидовЗапасовВручную(ВыбранноеЗначение, ЭтаФорма);
	
КонецПроцедуры

&НаСервере
Процедура ПолучитьТоварыИзХранилища(АдресПлатежейВХранилище)
	
	Перем КэшированныеЗначения;
	
	Объект.Товары.Загрузить(ПолучитьИзВременногоХранилища(АдресПлатежейВХранилище));
	
	СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
	
	ПараметрыЗаполнения = Новый Структура;
	ПараметрыЗаполнения.Вставить("Дата", ?(ЗначениеЗаполнено(Объект.КонецПериода), Объект.КонецПериода, Объект.Дата));
	ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
	ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
	ПараметрыЗаполнения.Вставить("Соглашение", Объект.Соглашение);
	ПараметрыЗаполнения.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
	ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, СтавкаНДС, ВидЦены");
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
	СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
	СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
	
	ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
		Объект.Товары, // Табличная часть
		, // Массив строк или структура отбора
		ПараметрыЗаполнения,
		СтруктураДействий);
	
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
	СтруктураДействий.Вставить("ПересчитатьСуммуПродажиПоСуммеСНДС");
	СтруктураДействий.Вставить("ПересчитатьЦенуПродажиПоСуммеПродажи");
	СтруктураДействий.Вставить("ПересчитатьСуммуПродажиНДС");
	СтруктураДействий.Вставить("ОчиститьСуммуВознаграждения");
	СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
	СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
	СтруктураДействий.Вставить("ЗаполнитьКодТНВЭД", Объект.НалогообложениеНДС);
	
	УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(
		СтруктураДействий);
	
	ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
	
	РассчитыватьВознаграждение = Истина;
	
	СтруктураХарактеристикиНоменклатуры = Новый Структура;
	СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",	Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
	СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакАртикул",	Новый Структура("Номенклатура", "Артикул"));
	СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
	
	НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураХарактеристикиНоменклатуры);
	ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
	
	ПересчитатьКоличествоРНПТ();
	
КонецПроцедуры

&НаСервере
Процедура ОбработкаВыбораПодборПереданныхТоваров(ВыбранноеЗначение, ЦеныРассчитаны)
	
	МассивСтрокДляПересчетаЦен = Новый Массив();
	ОбрабатываемыеСтроки = Новый Массив();
	
	ТаблицаТоваров       = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
	КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
	
	СвернутьНомераГТД = Не ИспользоватьУчетПрослеживаемыхИмпортныхТоваров Или КомиссионерНеВедетУчетПоРНПТ;
	
	ПроверитьСериюРассчитатьСтатус = Новый Структура;
	ПроверитьСериюРассчитатьСтатус.Вставить("Склад",                  ПредопределенноеЗначение("Справочник.Склады.ПустаяСсылка"));
	ПроверитьСериюРассчитатьСтатус.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
	
	СтруктураДействий = Новый Структура();
	СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
	СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус",        ПроверитьСериюРассчитатьСтатус);
	СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
	СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
	СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС",  ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
	СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
	СтруктураДействий.Вставить("ЗаполнитьКодТНВЭД", Объект.НалогообложениеНДС);
	СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
	СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу");
	СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу");
	
	УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
		Объект,
		СтруктураДействий,
		"Партнер");
	
	Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
		
		ПоискТоваров = Новый Структура();
		ПоискТоваров.Вставить("Номенклатура", СтрокаТовара.Номенклатура);
		ПоискТоваров.Вставить("Характеристика", СтрокаТовара.Характеристика);
		ПоискТоваров.Вставить("Серия", СтрокаТовара.Серия);
		Если Не СвернутьНомераГТД Тогда
			ПоискТоваров.Вставить("НомерГТД", СтрокаТовара.НомерГТД);
		КонецЕсли;
		СтрокиТоваров = Объект.Товары.НайтиСтроки(ПоискТоваров);
		
		Если СтрокиТоваров.Количество() = 0 Тогда
			
			Если Объект.ПоРезультатамИнвентаризации И СтрокаТовара.КоличествоПодобрано = 0 Тогда
				Продолжить;
			КонецЕсли;
			ТекущаяСтрока = Объект.Товары.Добавить();
			
		ИначеЕсли СтрокиТоваров.Количество() = 1 Тогда
			
			ТекущаяСтрока = СтрокиТоваров[0];
			Если Объект.ПоРезультатамИнвентаризации И СтрокаТовара.КоличествоПодобрано = 0 Тогда
				Объект.Товары.Удалить(ТекущаяСтрока);
				Продолжить;
			КонецЕсли;
			
		ИначеЕсли СтрокиТоваров.Количество() > 1 Тогда
			Для Каждого СтрокаКУдалению Из СтрокиТоваров Цикл
				Объект.Товары.Удалить(СтрокаКУдалению);
			КонецЦикла;
			Если Объект.ПоРезультатамИнвентаризации И СтрокаТовара.КоличествоПодобрано = 0 Тогда
				Продолжить;
			КонецЕсли;
			ТекущаяСтрока = Объект.Товары.Добавить();
		КонецЕсли;
		
		ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
		
		Если ТекущаяСтрока.Количество <> СтрокаТовара.КоличествоПодобрано Тогда
			МассивСтрокДляПересчетаЦен.Добавить(ТекущаяСтрока);
		КонецЕсли;
		
		ТекущаяСтрока.Количество = СтрокаТовара.КоличествоПодобрано;
		ТекущаяСтрока.КоличествоУпаковокУчет = СтрокаТовара.КоличествоОстаток;
		ТекущаяСтрока.КоличествоУпаковокФакт = СтрокаТовара.КоличествоОсталосьПодобрать;
		
		ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
		
	КонецЦикла;
	
	ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
		ОбрабатываемыеСтроки,
		СтруктураДействий,
		Объект.Товары,
		КэшированныеЗначения);
	
	ЗаполнитьЦеныПоВидуЦен("ВидЦенУчетный", МассивСтрокДляПересчетаЦен);
	ЗаполнитьЦеныПоВидуЦен("ВидЦенПродажи", МассивСтрокДляПересчетаЦен);
	
	СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
	
КонецПроцедуры

#КонецОбласти

#Область ШтрихкодыИТорговоеОборудование

&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкодов)
	
	Если Не ШтрихкодированиеНоменклатурыКлиент.ШтрихкодыВалидны(ДанныеШтрихкодов) Тогда
		Возврат;
	КонецЕсли;
	
	СтруктураДействийСДобавленнымиСтроками = Новый Структура;
	Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение)) 
		Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
		СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
	Иначе
		СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
	КонецЕсли;
	СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
	СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
	СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
	СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьКодТНВЭД", Объект.НалогообложениеНДС);
	СамообслуживаниеКлиентСервер.ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковокОтчетКомиссионера(СтруктураДействийСДобавленнымиСтроками, Объект);
	СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
	
	УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(
		СтруктураДействийСДобавленнымиСтроками);
	
	ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(ЭтаФорма, СтруктураДействийСДобавленнымиСтроками);
	
	СтруктураДействийСИзмененнымиСтроками = Новый Структура;
	СамообслуживаниеКлиентСервер.ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковокОтчетКомиссионера(СтруктураДействийСИзмененнымиСтроками, Объект);
	ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(ЭтаФорма, СтруктураДействийСИзмененнымиСтроками);
	
	СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();

	СтруктураДействий.Штрихкоды                              = ДанныеШтрихкодов;
	СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
	СтруктураДействий.СтруктураДействийСИзмененнымиСтроками  = СтруктураДействийСИзмененнымиСтроками;
	СтруктураДействий.ПараметрыУказанияСерий                 = ?(КомиссионныеПродажи25, ПараметрыУказанияСерий, Неопределено);
	СтруктураДействий.ИмяКолонкиКоличество                   = "КоличествоУпаковок";
	
	ОбработатьШтрихкодыСервер(СтруктураДействий, КэшированныеЗначения);
	
	ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий, КэшированныеЗначения, ЭтаФорма);
	
	Если ШтрихкодированиеНоменклатурыКлиент.НужноОткрытьФормуУказанияСерийПослеОбработкиШтрихкодов(СтруктураДействий) Тогда
		ТекущиеДанныеИдентификатор = СтруктураДействий.МассивСтрокССериями[0];
		
		ПодключитьОбработчикОжидания("ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры", 0.1, Истина);
	КонецЕсли;
	
	РассчитыватьВознаграждение = Истина;
	
	Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
		Элементы.Товары.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ОбработатьШтрихкодыСервер(СтруктураПараметровДействия,КэшированныеЗначения)
	
	ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(ЭтаФорма, Объект, СтруктураПараметровДействия, КэшированныеЗначения);
	ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
	
КонецПроцедуры

#КонецОбласти

#Область УправлениеЭлементамиФормы

&НаСервере
Процедура УправлениеЭлементамиФормы()
	
	Перем МассивВсехРеквизитов;
	Перем МассивРеквизитовОперации;
	
	Документы.ОтчетКомиссионера.ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(
		Объект.СпособРасчетаВознаграждения,
		МассивВсехРеквизитов, 
		МассивРеквизитовОперации);
	ДенежныеСредстваСервер.УстановитьДоступностьЭлементовПоМассиву(
		Элементы,
		МассивВсехРеквизитов,
		МассивРеквизитовОперации);
	
	Элементы.ТоварыСумма.Видимость = Не Объект.ЦенаВключаетНДС;
	Элементы.ТоварыКоличествоУпаковокУчет.Видимость = Объект.ПоРезультатамИнвентаризации;
	Элементы.ТоварыКоличествоУпаковокФакт.Видимость = Объект.ПоРезультатамИнвентаризации;
	Элементы.ТоварыПересчитатьОстаткиПоДаннымУчета.Видимость = Объект.ПоРезультатамИнвентаризации;
	
	Элементы.ТоварыРазбитьСтроку.Видимость = Не Объект.ПоРезультатамИнвентаризации;
	Элементы.ТоварыКонтекстноеМенюРазбитьСтроку.Видимость = Не Объект.ПоРезультатамИнвентаризации;
	
	СпособРасчетаНеРассчитывается = (Объект.СпособРасчетаВознаграждения = Перечисления.СпособыРасчетаКомиссионногоВознаграждения.НеРассчитывается);
	Элементы.ЗачетОплатыПоВознаграждению.Доступность = Не Объект.УдержатьВознаграждение И Не СпособРасчетаНеРассчитывается
													И Объект.СуммаВознаграждения > 0;

	Элементы.ДатаПлатежа.Доступность = Не Объект.УдержатьВознаграждение И Не СпособРасчетаНеРассчитывается;	

	СпособРасчетаПроизвольнаяСумма = (Объект.СпособРасчетаВознаграждения = Перечисления.СпособыРасчетаКомиссионногоВознаграждения.ПроизвольнаяСумма);
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ПроцентВознаграждения", "Видимость", Не СпособРасчетаПроизвольнаяСумма);
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СуммаВознаграждения", "ТолькоПросмотр", Не СпособРасчетаПроизвольнаяСумма);
	
	УчетПрослеживаемыхТоваровЛокализация.УстановитьВидимостьКоличестваРНПТ(ЭтаФорма, Объект.Дата);
	
КонецПроцедуры

#КонецОбласти

#Область Прочее

&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
	
	ИспользоватьСоглашенияСКлиентами               = ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");
	ИспользоватьГрафикиОплаты                      = ПолучитьФункциональнуюОпцию("ИспользоватьГрафикиОплаты");
	ИспользоватьУпрощеннуюСхемуОплаты              = ПолучитьФункциональнуюОпцию("ИспользоватьУпрощеннуюСхемуОплатыВПродажах");
	ИспользоватьНаправленияДеятельности            = ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности");
	ИспользоватьПартнеровКакКонтрагентов           = ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровКакКонтрагентов");
	ИспользоватьУчетПрослеживаемыхИмпортныхТоваров =
		УчетПрослеживаемыхТоваровЛокализация.ИспользоватьУчетПрослеживаемыхИмпортныхТоваров(Объект.Дата);
	ПараметрыУказанияСерий         = ПараметрыУказанияСерий();
	КомиссионныеПродажи25 = ?(Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионера,
		Истина, Ложь);
	
	Элементы.ГруппаКонтрагент.Видимость = Не ИспользоватьПартнеровКакКонтрагентов;
	
	Если НЕ ИспользоватьСоглашенияСКлиентами Тогда
		ПараметрыВыбораВидаЦены = ЗначениеНастроекПовтИсп.ПараметрыВыбораВидаЦеныПоУмолчанию();
	
		ПараметрыВыбораВидаЦены.ЦенаВключаетНДС        = Объект.ЦенаВключаетНДС;
		ПараметрыВыбораВидаЦены.ИспользоватьПриПродаже = Истина;
		ПараметрыВыбораВидаЦены.Статус                 = Перечисления.СтатусыДействияВидовЦен.Действует;
		
		ВидЦеныПоУмолчанию = ЗначениеНастроекПовтИсп.ВидЦеныПоУмолчанию(ПараметрыВыбораВидаЦены);
	КонецЕсли;
	
	ВалютаДокумента = Объект.Валюта;
	
	УправлениеЭлементамиФормы();
	ПроцентНДС = ЦенообразованиеКлиентСервер.ПолучитьСтавкуНДСЧислом(Объект.СтавкаНДСВознаграждения);
	
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);
	
	СтруктураХарактеристикиНоменклатуры = Новый Структура;
	СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",	Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
	СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакАртикул",	Новый Структура("Номенклатура", "Артикул"));
	СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
	СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
	
	УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(
		СтруктураХарактеристикиНоменклатуры);
	
	НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураХарактеристикиНоменклатуры);
	ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
	
	ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость);
	
	ОбновитьТекстСчетаФактурыКомиссионеру();
	
	ОбновитьТекстСчетаФактурыПолученные();
	
	ЗаполнитьСписокВыбораГрузоотправитель();
	
	УстановитьВидимостьЭлементовСерий();
	РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.Товары);
	
	ПараметрыЗаполнения = Документы.ОтчетКомиссионера.ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект);
	УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСПродажи(Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
	ЗакупкиСервер.ЗаполнитьСписокВыбораНаименованиеВходящегоДокумента(ЭтотОбъект, Объект.Контрагент);
	
	ЗаполнитьПризнакКомиссионерНеВедетУчетПоРНПТНаСервере();
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьДоговорПоУмолчанию()
	
	Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов 
		И ИспользоватьНаправленияДеятельности Тогда
		Договор = ПродажиСервер.ПолучитьДоговорПоУмолчанию(
			Объект,
			Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию,
			Объект.Валюта,
			Объект.НаправлениеДеятельности);
	Иначе
		Договор = ПродажиСервер.ПолучитьДоговорПоУмолчанию(
			Объект,
			Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию,
			Объект.Валюта);
	КонецЕсли;
		
	Если Договор <> Объект.Договор Тогда
		Объект.Договор = Договор;
		ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Договор");
		ПродажиСервер.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчет);
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура РассчитатьКомиссионноеВознаграждениеСервер()
	
	КомиссионнаяТорговляСервер.РассчитатьСуммуВознаграждения(Объект,, Истина);
	РассчитыватьВознаграждение = Ложь;
	
	УправлениеЭлементамиФормы();
	
КонецПроцедуры

&НаСервере
Функция ЗаполнитьЦеныПоСоглашениюСервер(ТекстОшибки = "")
	
	СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
	
	ПараметрыЗаполнения = Новый Структура;
	ПараметрыЗаполнения.Вставить("Дата", ?(ЗначениеЗаполнено(Объект.КонецПериода), Объект.КонецПериода, Объект.Дата));
	ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
	ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
	ПараметрыЗаполнения.Вставить("Партнер", Объект.Партнер);
	ПараметрыЗаполнения.Вставить("Соглашение", Объект.Соглашение);
	ПараметрыЗаполнения.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
	ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, СтавкаНДС, ВидЦены");
	Если КомиссионныеПродажи25 Тогда
		ПараметрыЗаполнения.Вставить("ВидЦены", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, "ВидЦенПродажи"));
	Иначе
		Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение, "ЦенаВключаетНДС") <> Объект.ЦенаВключаетНДС Тогда
			ТекстОшибки = 
			НСтр("ru = 'Установленные значения полей ""Цена включает НДС"" в документе и соглашении разные.'");
			Возврат Ложь;
		КонецЕсли;
	КонецЕсли;
	
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", 
		Новый Структура("НалогообложениеНДС, Дата, Организация", Объект.НалогообложениеНДС, Объект.Дата, Объект.Организация));
	СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
	СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
	СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
	
	ЦеныРассчитаны = ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
		Объект.Товары, // Табличная часть
		, // Массив строк или структура отбора
		ПараметрыЗаполнения,
		СтруктураДействий);
			
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьСуммуПродажиПоСуммеСНДС");
	СтруктураДействий.Вставить("ПересчитатьЦенуПродажиПоСуммеПродажи");
	СтруктураДействий.Вставить("ПересчитатьСуммуПродажиНДС");
	СтруктураДействий.Вставить("ОчиститьСуммуВознаграждения");
	
	ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
	
	РассчитыватьВознаграждение = Истина;
	
	Возврат ЦеныРассчитаны;
	
КонецФункции

&НаСервере
Функция ЗаполнитьЦеныПоВидуЦен(ПолеВидЦеныДоговора, СтрокиДляПересчета = Неопределено)
	
	ЦеныРассчитаны = Ложь;
	
	ВидЦены = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, ПолеВидЦеныДоговора);
	КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
	
	СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
	
	ПолеЦена = ?(ПолеВидЦеныДоговора = "ВидЦенПродажи", "ЦенаПродажи", "Цена");
	ПолеВидЦены = ?(ПолеВидЦеныДоговора = "ВидЦенПродажи", "ВидЦеныПродажи", "ВидЦены");
	
	ПоляЗаполнения = "%1, %2";
	ПоляЗаполнения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ПоляЗаполнения, ПолеЦена, ПолеВидЦены);
	
	ПараметрыЗаполнения = Новый Структура;
	ПараметрыЗаполнения.Вставить("Дата", ?(ЗначениеЗаполнено(Объект.КонецПериода), Объект.КонецПериода, Объект.Дата));
	ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
	ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
	ПараметрыЗаполнения.Вставить("Партнер", Объект.Партнер);
	ПараметрыЗаполнения.Вставить("Соглашение", Объект.Соглашение);
	ПараметрыЗаполнения.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
	ПараметрыЗаполнения.Вставить("ПоляЗаполнения", ПоляЗаполнения);
	ПараметрыЗаполнения.Вставить("ВидЦены",ВидЦены);
	ПараметрыЗаполнения.Вставить("ПолеЦена", ПолеЦена);
	ПараметрыЗаполнения.Вставить("ПолеВидЦены", ПолеВидЦены);
	
	СтруктураДействий = Новый Структура;
	
	Если ПолеВидЦеныДоговора = "ВидЦенПродажи" Тогда
		
		СтруктураДействий.Вставить("ПересчитатьСуммуПродажи");
		СтруктураДействий.Вставить("ПересчитатьСуммуПродажиНДС", СтруктураПересчетаСуммы);
		
	Иначе
		
		СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
		СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
		СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
		
	КонецЕсли;
	СтруктураДействий.Вставить("ОчиститьСуммуВознаграждения");
	
	Если ЗначениеЗаполнено(ВидЦены) Тогда
		
		ЦеныРассчитаны = ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
			Объект.Товары,
			СтрокиДляПересчета,
			ПараметрыЗаполнения,
			СтруктураДействий);
		
	ИначеЕсли СтрокиДляПересчета <> Неопределено Тогда
		
		ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
			СтрокиДляПересчета,
			СтруктураДействий,
			Объект.Товары,
			КэшированныеЗначения);
		
	Иначе
		
		ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
		
	КонецЕсли;
	
	РассчитыватьВознаграждение = Истина;
	
	Возврат ЦеныРассчитаны;
	
КонецФункции

&НаСервере
Процедура ПересчитатьОстаткиПоДаннымУчетаСервер(НомерСтроки = Неопределено)
	
	КомиссионнаяТорговляСервер.ПересчитатьОстаткиПоДаннымУчета(
		Объект,
		Объект.КонецПериода,
		Истина, // ЕстьСуммаПродажи
		РассчитыватьВознаграждение,
		НомерСтроки);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьИтоговыеПоказателиОтчетаКомиссионера(Форма)
	
	ОтображатьИтогСуммыНДС = УчетНДСУПКлиентСервер.ОтображатьНДСВИтогахДокументаПродажи(Форма.Объект.НалогообложениеНДС);
	
	Если ОтображатьИтогСуммыНДС Тогда
		Форма.Элементы.ГруппаСтраницыНДС.ТекущаяСтраница   = Форма.Элементы.СтраницаСНДС;
		Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоСНДС;
	Иначе
		Форма.Элементы.ГруппаСтраницыНДС.ТекущаяСтраница   = Форма.Элементы.СтраницаБезНДС;
		Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоБезНДС;
	КонецЕсли;
	
	Если Форма.Объект.СпособРасчетаВознаграждения = ПредопределенноеЗначение("Перечисление.СпособыРасчетаКомиссионногоВознаграждения.НеРассчитывается") Тогда
		Форма.Элементы.СуммаВознагражденияВсего.Видимость      = Ложь;
	Иначе
		Форма.Элементы.СуммаВознагражденияВсего.Видимость      = Истина;
	КонецЕсли;
	
	ПроцентПлатежейОбщий = 0;
	ПредыдущееЗначениеДаты = Дата(1, 1, 1);
	Форма.НомерСтрокиПолнойОплаты = 0;
	Для Каждого ТекСтрока Из Форма.Объект.ЭтапыГрафикаОплаты Цикл
		ПроцентПлатежейОбщий = ПроцентПлатежейОбщий + ТекСтрока.ПроцентПлатежа;
		ТекСтрока.ПроцентЗаполненНеВерно = (ПроцентПлатежейОбщий > 100);
		ТекСтрока.ДатаЗаполненаНеВерно = (ПредыдущееЗначениеДаты > ТекСтрока.ДатаПлатежа);
		ПредыдущееЗначениеДаты = ТекСтрока.ДатаПлатежа;
		Если ПроцентПлатежейОбщий = 100 Тогда
			Форма.НомерСтрокиПолнойОплаты = ТекСтрока.НомерСтроки;
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

&НаСервере
Процедура ОбновитьТекстСчетаФактурыКомиссионеру()

	ПараметрыРегистрации = ПараметрыРегистрацииСчетовФактурКомиссионеруСервер(Объект);
	СчетаФактурыКомиссионеру = УчетНДСУП.СчетаФактурыКомиссионеруНаОсновании(ПараметрыРегистрации);
	ЭтаФорма.ТекстСчетаФактурыКомиссионеру = СчетаФактурыКомиссионеру.Представление;

КонецПроцедуры

&НаСервере
Процедура ОбновитьТекстСчетаФактурыПолученные()
	
	ПараметрыРегистрации = Документы.ОтчетКомиссионера.ПараметрыРегистрацииСчетовФактурПолученных(Объект);
	СчетаФактурыПолученныеНаОсновании = УчетНДСУП.СчетаФактурыПолученныеНаОсновании(ПараметрыРегистрации);
	
	ТекстСчетаФактурыПолученные = СчетаФактурыПолученныеНаОсновании.Представление;
	
КонецПроцедуры

&НаКлиенте
Процедура НадписьЭтапыОплатыНажатие(Элемент, СтандартнаяОбработка)
	
	Оповещение = Новый ОписаниеОповещения("НадписьЭтапыОплатыНажатиеЗавершение", ЭтотОбъект);
	ПоместитьЭтапыОплатыВоВременноеХранилище(Элемент.Имя);
	ВзаиморасчетыКлиент.НадписьЭтапыОплатыНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка, Оповещение );
	
КонецПроцедуры

&НаСервере
Процедура ПоместитьЭтапыОплатыВоВременноеХранилище(ИмяЭлемента)
	ВзаиморасчетыСервер.ПоместитьЭтапыОплатыВоВременноеХранилище(ЭтаФорма, ИмяЭлемента);
КонецПроцедуры

&НаКлиенте
Процедура НадписьЭтапыОплатыНажатиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат <> Неопределено Тогда
		ИзмененныеРеквизиты = Результат.СтарыеЗначенияИзмененныхРеквизитов;
		ОтразитьИзмененияПравилОплаты(ИзмененныеРеквизиты);
	КонецЕсли;
	
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьУсловияПродаж()
	
	ДокументОбъект = РеквизитФормыВЗначение("Объект");
	ДокументОбъект.ЗаполнитьУсловияПродажПоУмолчанию();
	ЗначениеВРеквизитФормы(ДокументОбъект, "Объект");
	
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
	
	УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(
		СтруктураДействий);
	
	ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
	
	ЗаполнитьПризнакКомиссионерНеВедетУчетПоРНПТНаСервере();
	ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
	
КонецПроцедуры

&НаСервере
Процедура ПолучитьЗагруженныеТоварыИзХранилища(АдресТоваровВХранилище)
	
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьСуммуПродажиПоСуммеСНДС");
	СтруктураДействий.Вставить("ПересчитатьЦенуПродажиПоСуммеПродажи");
	СамообслуживаниеКлиентСервер.ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковокОтчетКомиссионера(СтруктураДействий, Объект);
	СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
	
	УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(
		СтруктураДействий);
	ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(ЭтаФорма, СтруктураДействий);
	
	ТоварыИзХранилища = ПолучитьИзВременногоХранилища(АдресТоваровВХранилище);
	
	КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
	ОбрабатываемыеСтроки = Новый Массив();
	
	Для Каждого СтрокаТоваров Из ТоварыИзХранилища Цикл
		СтрокаТЧТовары = Объект.Товары.Добавить();
		ЗаполнитьЗначенияСвойств(СтрокаТЧТовары, СтрокаТоваров);
		ОбрабатываемыеСтроки.Добавить(СтрокаТЧТовары);
	КонецЦикла;
	
	ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
		ОбрабатываемыеСтроки,
		СтруктураДействий,
		Объект.Товары,
		КэшированныеЗначения);
	
	ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьНалогообложениеНДСПродажи()
	
	ПараметрыЗаполнения = Документы.ОтчетКомиссионера.ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект);
	УчетНДСУП.ЗаполнитьНалогообложениеНДСПродажи(Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
	УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСПродажи(Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров); 
	
КонецПроцедуры

&НаСервере
Функция ПолучитьВидЦеныДоговора(ПолеВидаЦен)
	
	СтруктураПараметров = ЦеныПредприятияЗаполнениеСервер.НовыйПараметрыПроверкиВидаЦенДоговора();
	СтруктураПараметров.ПолеВидаЦен = ПолеВидаЦен;
	
	Если ЗначениеЗаполнено(Объект.Договор) Тогда
		ВидЦены = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, ПолеВидаЦен);
		Если ЗначениеЗаполнено(ВидЦены) Тогда
			СтруктураПараметров.ВидЦены = ВидЦены;
			СтруктураПараметров.ЦенаВключаетНДС = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВидЦены, "ЦенаВключаетНДС");
		КонецЕсли;
	КонецЕсли;
	
	Возврат СтруктураПараметров;
	
КонецФункции

#КонецОбласти

#Область РаботаСКонтрагентами
// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
&НаКлиенте
Процедура Подключаемый_ПоказатьПредложениеИспользоватьПроверкуКонтрагентов()
	ПроверкаКонтрагентовКлиент.ПредложитьВключитьПроверкуКонтрагентов(ЭтотОбъект);
КонецПроцедуры
// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
&НаКлиенте
Процедура Подключаемый_ОбработатьРезультатПроверкиКонтрагентов()
	ПроверкаКонтрагентовКлиент.ОбработатьРезультатПроверкиКонтрагентовВДокументе(ЭтотОбъект);
КонецПроцедуры
// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
&НаСервере
Процедура ОтобразитьРезультатПроверкиКонтрагента() Экспорт
	ПроверкаКонтрагентов.ОтобразитьРезультатПроверкиКонтрагентаВДокументе(ЭтотОбъект);
КонецПроцедуры
// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
&НаСервере
Процедура ПроверитьКонтрагентовФоновоеЗадание(ПараметрыФоновогоЗадания) Экспорт	
	ПроверкаКонтрагентов.ПроверитьКонтрагентовВДокументеФоновоеЗадание(ЭтотОбъект, ПараметрыФоновогоЗадания);
КонецПроцедуры
// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
&НаКлиенте
Процедура ПроверитьКонтрагентов(Команда)
	
	// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	ПроверкаКонтрагентовКлиент.ПроверитьКонтрагентовВДокументеПоКнопке(ЭтотОбъект);
	// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	
КонецПроцедуры

#КонецОбласти

&НаСервере
Процедура ЗаполнитьПодчиненныеСвойстваПоСтатистике(ИмяРеквизитаРодителя)
	ЗаполнениеОбъектовПоСтатистике.ЗаполнитьПодчиненныеРеквизитыОбъекта(Объект, ИмяРеквизитаРодителя);
КонецПроцедуры

&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
	
	// Подсистема "Свойства"
	УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ПодборПоОстаткамЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Если КомиссионныеПродажи25 Тогда
		
		ОценкаПроизводительностиКлиент.ЗамерВремени(Истина,
			"Документ.ОтчетКомиссионера.ФормаДокумента.Команда.ПодобратьПереданныеТовары");
		
		АдресПлатежейВХранилище = ПоместитьТоварыВХранилищеССерией(
			Объект.Товары,
			УникальныйИдентификатор);
			
		ПараметрыПодбора = Новый Структура;
		ПараметрыПодбора.Вставить("Ссылка",      Объект.Ссылка);
		ПараметрыПодбора.Вставить("Владелец",    Объект.Партнер);
		ПараметрыПодбора.Вставить("Организация", Объект.Организация);
		ПараметрыПодбора.Вставить("Договор",     Объект.Договор);
		ПараметрыПодбора.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
		
		ПараметрыПодбора.Вставить("ПоРезультатамИнвентаризации", Объект.ПоРезультатамИнвентаризации);
		ПараметрыПодбора.Вставить("АдресТоваровНакладнойВХранилище", АдресПлатежейВХранилище);
		ПараметрыПодбора.Вставить("МенеджерОбъекта", "Документ.ОтчетКомиссионера");
		ПараметрыПодбора.Вставить("СвернутьНомераГТД", Не ИспользоватьУчетПрослеживаемыхИмпортныхТоваров
			Или КомиссионерНеВедетУчетПоРНПТ);
		ПараметрыПодбора.Вставить("ИспользоватьУчетПрослеживаемыхИмпортныхТоваров", ИспользоватьУчетПрослеживаемыхИмпортныхТоваров);
		ПараметрыПодбора.Вставить("КомиссионерНеВедетУчетПоРНПТ", КомиссионерНеВедетУчетПоРНПТ);
		
		ОткрытьФорму("Обработка.ПодборТоваровПереданныхНаОтветственноеХранение.Форма.Форма",
			ПараметрыПодбора,
			ЭтотОбъект,
			УникальныйИдентификатор);
			
	Иначе
			
		АдресПлатежейВХранилище = ПоместитьТоварыВХранилище(
			Объект.Товары,
			УникальныйИдентификатор);
		
		ПараметрыПодбора = Новый Структура;
		ПараметрыПодбора.Вставить("АдресПлатежейВХранилище", АдресПлатежейВХранилище);
		ПараметрыПодбора.Вставить("Организация", Объект.Организация);
		ПараметрыПодбора.Вставить("Партнер", Объект.Партнер);
		ПараметрыПодбора.Вставить("Соглашение", Объект.Соглашение);
		ПараметрыПодбора.Вставить("Дата", ?(ЗначениеЗаполнено(Объект.КонецПериода), Объект.КонецПериода, Объект.Дата));
		ПараметрыПодбора.Вставить("ПоРезультатамИнвентаризации", Объект.ПоРезультатамИнвентаризации);
		ПараметрыПодбора.Вставить("ИспользоватьУчетПрослеживаемыхИмпортныхТоваров", ИспользоватьУчетПрослеживаемыхИмпортныхТоваров);
	
		ОткрытьФорму(
			"ОбщаяФорма.ПодборПоТоварамПереданнымНаКомиссию",
			ПараметрыПодбора, 
			ЭтаФорма);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПересчитатьОстаткиПоДаннымУчетаЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	ПересчитатьОстаткиПоДаннымУчетаСервер();
	
	ПоказатьОповещениеПользователя(
		НСтр("ru = 'Остаток (учет) заполнен.'"),
		,
		НСтр("ru='Остаток по данным учета в документе заполнен.'"),
		БиблиотекаКартинок.Информация32);
	
КонецПроцедуры

&НаКлиенте
Процедура ПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
	
	ОбработатьШтрихкоды(ДанныхШтрихкода);
	
КонецПроцедуры

&НаКлиенте
Процедура РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт 
	
	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
	
	Если НоваяСтрока <> Неопределено Тогда
		
		СтруктураДействий = Новый Структура;
		
		Если Объект.ПоРезультатамИнвентаризации Тогда
			СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковокПоФакту");
		КонецЕсли;
		
		СамообслуживаниеКлиентСервер.ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковокОтчетКомиссионера(СтруктураДействий, Объект);
		
		ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
		ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
		
		РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтаФорма);
		РассчитыватьВознаграждение = Истина;
		
	КонецЕсли;
	
	УчетПрослеживаемыхТоваровКлиентСерверЛокализация.РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры);
	
КонецПроцедуры

&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииСервер()
	
	ЗаполнитьДоговорПоУмолчанию();
	
	ЗаполнитьНалогообложениеНДСПродажи();
	НалогообложениеНДСПриИзмененииСервер();
	
	ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "НаправлениеДеятельности");
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьСписокВыбораГрузоотправитель()
	
	Элементы.Грузоотправитель.СписокВыбора.Очистить();
	ОрганизацияГрузоотправитель = НСтр("ru='Организация: %1'");
	ОрганизацияГрузоотправитель = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОрганизацияГрузоотправитель, Объект.Организация);
	
	Если ЗначениеЗаполнено(Объект.Организация) Тогда
		Элементы.Грузоотправитель.СписокВыбора.Добавить(,ОрганизацияГрузоотправитель);
	КонецЕсли;
	Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
		Элементы.Грузоотправитель.СписокВыбора.Добавить(Объект.Контрагент,Объект.Контрагент);
	КонецЕсли;
	Элементы.Грузоотправитель.ПодсказкаВвода = ОрганизацияГрузоотправитель;
КонецПроцедуры

&НаСервере
Процедура УправлениеСвязямиПараметровВыбораРеквизитовФормы()
	
	//Соглашение, добавляем связь с реквизитом формы ХозяйственнаяОперацияПоУмолчанию
	ЭлементФормы = Элементы.Соглашение;
	НовыеСвязиПараметровВыбора = Новый Массив;
	Для Каждого СвязьПараметровВыбора Из ЭлементФормы.СвязиПараметровВыбора Цикл
		Если Не СвязьПараметровВыбора.Имя = "Отбор.ХозяйственнаяОперация" Тогда
			НовыеСвязиПараметровВыбора.Добавить(СвязьПараметровВыбора);
		КонецЕсли;
	КонецЦикла;
	ПараметрВыбора = Новый СвязьПараметраВыбора("Отбор.ХозяйственнаяОперация", "ХозяйственнаяОперацияПоУмолчанию", РежимИзмененияСвязанногоЗначения.НеИзменять);
	НовыеСвязиПараметровВыбора.Добавить(ПараметрВыбора);
	ЭлементФормы.СвязиПараметровВыбора = Новый ФиксированныйМассив(НовыеСвязиПараметровВыбора);
	
КонецПроцедуры	

&НаСервере
Процедура УдержатьВознаграждениеПриИзмененииСервер()
	ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "УдержатьВознаграждение");
	УправлениеЭлементамиФормы();
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбработатьЗаписьОбъекта()
	
	ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);
	
КонецПроцедуры

&НаСервере
Процедура ОтразитьИзмененияПравилОплаты(ИзмененныеРеквизиты)
	
	ВзаиморасчетыСервер.ЗагрузитьЭтапыОплатыИзВременногоХранилища(ЭтаФорма);
	ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, ИзмененныеРеквизиты, Истина);
	
КонецПроцедуры

&НаСервере
Процедура ИзмененаОплатаСервер(ИмяСобытия, Параметр, Источник)
	
	ВзаиморасчетыСервер.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр);
	
КонецПроцедуры

&НаСервере
Процедура ПоместитьРасшифровкуПлатежаВоВременноеХранилище()
	ВзаиморасчетыСервер.ПоместитьРасшифровкуПлатежаВоВременноеХранилище(ЭтаФорма);
КонецПроцедуры

&НаСервере
Процедура ПересчитатьКоличествоРНПТ()
	
	Если Не КомиссионерНеВедетУчетПоРНПТ
		И ЗначениеЗаполнено(Объект.Организация) Тогда
		
		ПараметрыПолученияКоэффициентаРНПТ = УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ПараметрыПолученияКоэффициентаРНПТ(
												Объект,
												"Партнер");
		УчетПрослеживаемыхТоваровЛокализация.ЗаполнитьКоличествоПоРНПТВТабличнойЧасти(ПараметрыПолученияКоэффициентаРНПТ,
																						Объект.Товары);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
		
	ТекущиеДанные        = Элементы.Товары.ТекущиеДанные;
	ОбновитьСтатусыСерий = НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(Элемент,
																			КэшированныеЗначения,
																			ПараметрыУказанияСерий);
	
	Если ОбновитьСтатусыСерий Тогда
		
		ТекущаяСтрокаИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
		
		ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
		
		НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
		
	КонецЕсли;
	

КонецПроцедуры

&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
	
	ОбновитьСтатусыСерий = НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(Элемент,
																			КэшированныеЗначения,
																			ПараметрыУказанияСерий,
																			Истина);
	
	Если ОбновитьСтатусыСерий Тогда
		НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
	КонецЕсли;
	
	РассчитыватьВознаграждение = Истина;
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьСтавкуНДСЗавершение(СтавкаНДС, ДополнительныеПараметры) Экспорт

	Если СтавкаНДС = Неопределено Тогда
		Возврат;
	КонецЕсли;

	ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения);

КонецПроцедуры

&НаСервере
Процедура ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения)

	СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);

	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
	СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", Новый Структура("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС));
	СтруктураДействий.Вставить("ПересчитатьСуммуПродажиНДС");
	СтруктураДействий.Вставить("ОчиститьСуммуВознаграждения");

	ВыделенныеСтроки = РаботаСТабличнымиЧастямиКлиентСервер.ЭлементыКоллекции(
		Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
	
	Для каждого СтрокаТабличнойЧасти Из ВыделенныеСтроки Цикл
		СтрокаТабличнойЧасти.СтавкаНДС = СтавкаНДС;
	КонецЦикла;
	
	ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
		ВыделенныеСтроки,
		СтруктураДействий,
		Объект.Товары,
		КэшированныеЗначения);

	РассчитыватьВознаграждение = Истина;
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтотОбъект);

КонецПроцедуры

#Область Серии

&НаСервере
Функция ПараметрыУказанияСерий()
	
	МенеджерОбъекта = Документы.ОтчетКомиссионера;
	
	Возврат Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, МенеджерОбъекта));
	
КонецФункции

&НаСервере
Процедура УстановитьВидимостьЭлементовСерий()
	
	Элементы.ТоварыСерия.Видимость                = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
	Элементы.ТоварыУказатьСерии.Видимость         = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
	Элементы.ТоварыСтатусУказанияСерий.Видимость  = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
	Элементы.ТоварыЗаполнитьСерииПоFEFO.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьУстановитьВидимостьСерий()
	
	ПараметрыУказанияСерий = ПараметрыУказанияСерий();
	
	НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
	УстановитьВидимостьЭлементовСерий();
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры()
	
	Если ТекущиеДанныеИдентификатор = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ТекущиеДанные = Объект.Товары.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
	
	ОткрытьПодборСерий(,ТекущиеДанные);
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьПодборСерий(Текст = "", ТекущиеДанные = Неопределено)
	
	НуженСерверныйВызов = НоменклатураКлиент.ДляУказанияСерийНуженСерверныйВызов(ЭтаФорма,
																				ПараметрыУказанияСерий,
																				Текст,
																				ТекущиеДанные);
	
	Если НуженСерверныйВызов Тогда
		Если ТекущиеДанные = Неопределено Тогда
			ТекущиеДанныеИдентификатор = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
		Иначе
			ТекущиеДанныеИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
		КонецЕсли;
		
		ПараметрыФормыУказанияСерий = ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор);
		ДополнительныеПараметры     = Новый Структура("ПараметрыФормыУказанияСерий", ПараметрыФормыУказанияСерий);
		ОписаниеОповещения          = Новый ОписаниеОповещения("ОткрытьПодборСерийЗавершение",
																ЭтотОбъект,
																ДополнительныеПараметры);
		
		ОткрытьФорму(ПараметрыФормыУказанияСерий.ИмяФормы, ПараметрыФормыУказанияСерий, ЭтаФорма, , , , ОписаниеОповещения,
			РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьПодборСерийЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат <> Неопределено Тогда
		ОбработатьУказаниеСерийСервер(ДополнительныеПараметры.ПараметрыФормыУказанияСерий);
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Функция ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор)
	
	Возврат НоменклатураСервер.ПараметрыФормыУказанияСерий(Объект,
															ПараметрыУказанияСерий,
															ТекущиеДанныеИдентификатор,
															ЭтаФорма);
	
КонецФункции

&НаСервере
Процедура ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий)
	
	НоменклатураСервер.ОбработатьУказаниеСерий(Объект, ПараметрыУказанияСерий, ПараметрыФормыУказанияСерий);
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор,
																			КэшированныеЗначения)
	
	НоменклатураСервер.ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Объект, ПараметрыУказанияСерий,
		ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
	
КонецПроцедуры

&НаСервере
Функция ЕстьЗаполненныеСерииПоFEFO()
	
	Возврат НоменклатураСервер.ЕстьСтрокиСЗаполненнымиПоFEFOСериями(Объект.Товары);
	
КонецФункции

&НаСервере
Функция ЗаполнитьСерииПоFEFOСервер()
	
	Если НоменклатураСервер.ЕстьСтрокиСЗаполняемымиПоFEFOСериями(Объект.Товары) Тогда
		НоменклатураСервер.ЗаполнитьСерииПоFEFO(Объект, ПараметрыУказанияСерий);
		
		Возврат Истина;
	Иначе
		Возврат Ложь;
	КонецЕсли;
	
КонецФункции

&НаКлиенте
Процедура УказатьСерии(Команда)
	
	ОткрытьПодборСерий();
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьСерииПоFEFO(Команда)
	
	Если ЕстьЗаполненныеСерииПоFEFO() Тогда
		
		Оповещение = Новый ОписаниеОповещения("ЗаполнитьСерииПоFEFOЗавершение", ЭтотОбъект);
		
		НоменклатураКлиент.ЗадатьВопросОПерезаполненииСерийПоFEFO(Оповещение);
		
		Возврат;
		
	КонецЕсли;
	
	Если Не ЗаполнитьСерииПоFEFOСервер() Тогда
		НоменклатураКлиент.ПредупредитьОбОтсутствииСтрокЗаполняемыхПоFEFO();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьСерииПоFEFOЗавершение(Результат, ДополнительныеПараметры) Экспорт 
	
	Если Не Результат Тогда
		Возврат;
	КонецЕсли;
	
	Если Не ЗаполнитьСерииПоFEFOСервер() Тогда
		НоменклатураКлиент.ПредупредитьОбОтсутствииСтрокЗаполняемыхПоFEFO();
	КонецЕсли;

КонецПроцедуры

#КонецОбласти

#Область НомераГТД

&НаКлиенте
Процедура ОбработатьПодборНомераГТД(РезультатПодбора)
	
	ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
	
	Если ТекущиеДанные = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ИдентификаторСтроки = ТекущиеДанные.ПолучитьИдентификатор();
	
	Если ИдентификаторСтроки = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ЗаполненыНомераГТД = Ложь;
	НомерГТД = Неопределено;
	
	ОбработатьУказаниеНомераГТДСервер(ИдентификаторСтроки, РезультатПодбора, ЗаполненыНомераГТД, НомерГТД);
	
	ЗакупкиКлиент.ОповеститьОЗаполненииНомеровГТДВТабличнойЧасти(ЗаполненыНомераГТД, НомерГТД);
	
КонецПроцедуры

&НаСервере
Процедура ОбработатьУказаниеНомераГТДСервер(ИдентификаторСтроки,
											РезультатПодбора,
											ЗаполненыНомераГТД,
											НомерГТД)
	
	ДанныеПодбора	= ПолучитьИзВременногоХранилища(РезультатПодбора.АдресВоВременномХранилище);
	НомерГТД		= ?(ДанныеПодбора.ОстаточныйНомерГТД <> Неопределено,
						НомерГТД,
						ДанныеПодбора.ОсновнойНомерГТД);
	
	ДействияОбработки = Новый Структура;
	
	Если Объект.ПоРезультатамИнвентаризации Тогда
		ДействияОбработки.Вставить("ПересчитатьКоличествоУпаковокПоФакту");
	КонецЕсли;
	
	ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(ЭтотОбъект, ДействияОбработки);
	
	Если ДанныеПодбора.ОстаточныйНомерГТД <> Неопределено Тогда
		СамообслуживаниеКлиентСервер.ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковокОтчетКомиссионера(
			ДействияОбработки,
			Объект);
	КонецЕсли;
	
	ЗакупкиСервер.ОбработатьУказаниеНомераГТД(ЭтотОбъект,
												ИдентификаторСтроки,
												ДанныеПодбора,
												ЗаполненыНомераГТД,
												Неопределено,
												ДействияОбработки);
	
	РассчитатьИтоговыеПоказателиОтчетаКомиссионера(ЭтотОбъект);
	
	РассчитыватьВознаграждение = Истина;
	
КонецПроцедуры

#КонецОбласти

#КонецОбласти

Связанные материалы