Поступление товаров с хранения / Форма документа / Модуль формы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПоРаспоряжениюПриИзменении(Элемент)
	ПоРаспоряжениямПриИзмененииНаКлиенте();
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ХозяйственнаяОперацияПриИзменении(Элемент)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ВозвратПереданнойМногооборотнойТарыПриИзменении(Элемент)
	
	ВозвратПереданнойМногооборотнойТарыПриИзмененииСервер();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ВставитьСтроки(Команда)
	
	КоличествоТоваровДоВставки = Объект.Товары.Количество();
	
	ПолучитьСтрокиИзБуфераОбмена();
	
	КоличествоВставленных = Объект.Товары.Количество() - КоличествоТоваровДоВставки;
	
	РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПодобратьТоварыПоЗаказамОрдерам(Команда)
	
	ОткрытьПодборПоРаспоряжениямОрдерам();
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ДополнитьМногооборотнойТарой(Команда)
	
	МногооборотнаяТараКлиент.ПодобратьМногооборотнуюТару(ЭтотОбъект, "Товары", "Номенклатура,Характеристика,Количество");
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов

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

//Конец СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область РаботаСБуферомОбмена

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

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

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

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

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

#Область Наборы

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

&НаКлиентеНаСервереБезКонтекста
Функция КолонкиНабора(Форма)
	
	Колонки = Новый Массив;
	Колонки.Добавить("Номенклатура");
	Колонки.Добавить("Характеристика");
	Колонки.Добавить("Упаковка");
	Колонки.Добавить("Количество");
	Колонки.Добавить("КоличествоУпаковок");
	Колонки.Добавить("Цена");
	Колонки.Добавить("Сумма");
	
	Возврат Колонки;
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область Ценообразование

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Функция ПроверитьНаличиеГрадацииСервер(ТоварИсходногоКачества, ТоварДругогоКачества)
	
	Возврат РегистрыСведений.ТоварыДругогоКачества.ПроверитьНаличиеГрадации(ТоварИсходногоКачества, ТоварДругогоКачества);
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Функция ЗависимыеРеквизиты()
	
	Возврат Новый Структура("БезВозвратнойТары", "Сумма");
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьЗависимыеРеквизитыФормыПоЗаказам(ЭлементыФормы, Товары, НадписьРасхождениеЗаказ)
	
	КоличествоРасхождений = Товары.Итог("РасхождениеЗаказ");
	
	Если КоличествоРасхождений > 0 Тогда
		ЭлементыФормы.КартинкаРасхождениеЗаказ.Картинка  = БиблиотекаКартинок.ПревышениеЗаказа;
		ЭлементыФормы.КартинкаРасхождениеЗаказы.Картинка = БиблиотекаКартинок.ПревышениеЗаказа;
		НадписьРасхождениеЗаказ = СтрШаблон(НСтр("ru='Строк сверх заказа: %1'"), КоличествоРасхождений);
	Иначе
		ЭлементыФормы.КартинкаРасхождениеЗаказ.Картинка  = БиблиотекаКартинок.ПустаяКартинка;
		ЭлементыФормы.КартинкаРасхождениеЗаказы.Картинка = БиблиотекаКартинок.ПустаяКартинка;
		НадписьРасхождениеЗаказ = "";
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

&НаКлиенте
Процедура ОповеститьОбОкончанииОтвязкиСтрок(КоличествоОтработанныхСтрок)

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

&НаКлиентеНаСервереБезКонтекста
Функция ОтборПоТоваруМногооборотнойТаре(ХозяйственнаяОперация)
	
	ВключатьНаборы = Истина;
	
	Возврат НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(ВключатьНаборы);
	
КонецФункции

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

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

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