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

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

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

&НаКлиенте
Перем ПредыдущиеРеквизитыСтроки; //используется для отвязки строки поступления от строки заказа

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

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

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

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

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

	ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);

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

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

	СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);

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

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

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

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

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

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

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

	Если Окно <> Неопределено Тогда
		Окно.Активизировать();
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

	МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	КонецЕсли;
	
	ПриИзмененииСкладаВТабличнойЧастиСервер();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ТоварыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
	
	ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение, "Товары");
	
КонецПроцедуры

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

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

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

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

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

&НаКлиенте
Процедура ВозвратныеОтходыПослеУдаления(Элемент)

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

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

		НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
			Элемент, КэшированныеЗначения, ПараметрыУказанияСерий.ВозвратныеОтходы);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ВозвратныеОтходыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
	
	ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение, "ВозвратныеОтходы");
	
КонецПроцедуры

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

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

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

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

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

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

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

// Товары

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

&НаКлиенте
Процедура ПодобратьТоварыПоЗаказамОрдерам(Команда)
	
	// &ЗамерПроизводительности
	ОценкаПроизводительностиКлиент.ЗамерВремени(
		"Документ.ПоступлениеОтПереработчика.Форма.ФормаДокумента.Команда.ПодобратьТоварыПоЗаказамОрдерам");
	
	ОткрытьПодборТоваровПоЗаказамОрдерам(Ложь);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// Возвратные отходы

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

&НаКлиенте
Процедура ВозвратныеОтходыПодобратьТоварыПоЗаказамОрдерам(Команда)
	
	// &ЗамерПроизводительности
	ОценкаПроизводительностиКлиент.ЗамерВремени(
		"Документ.ПоступлениеОтПереработчика.Форма.ФормаДокумента.Команда.ВозвратныеОтходыПодобратьТоварыПоЗаказамОрдерам");
	
	ОткрытьПодборТоваровПоЗаказамОрдерам(Истина);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	// Стандартное оформление
	#Область СтандартноеОформление
	СкладыСервер.УстановитьУсловноеОформлениеСкладаВШапке(ЭтаФорма);

	НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма);

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

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

	НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма, 
																			 "ВозвратныеОтходыХарактеристика",
																		     "Объект.ВозвратныеОтходы.ХарактеристикиИспользуются");

	СкладыСервер.УстановитьУсловноеОформлениеСкладаВТЧ(ЭтаФорма);
	СкладыСервер.УстановитьУсловноеОформлениеСкладаВТЧ(ЭтаФорма, "ВозвратныеОтходыСклад");

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

	НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма, Ложь, 
																     "ВозвратныеОтходыСерия", 
																     "Объект.ВозвратныеОтходы.СтатусУказанияСерий",
																	 "Объект.ВозвратныеОтходы.ТипНоменклатуры");

	НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(ЭтаФорма, Ложь);

	НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(ЭтаФорма, Ложь, 
																		 "ВозвратныеОтходыСтатусУказанияСерий",
                                                                         "Объект.ВозвратныеОтходы.СтатусУказанияСерий");

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

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

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

	//

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

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыЗаказПереработчику.Имя);

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

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

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

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

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

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

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыЗаказПереработчику.Имя);

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

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

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

	//

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

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыЗаказПереработчику.Имя);
	
	ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;

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

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

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

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

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

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

	//

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

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыЗаказПереработчику.Имя);

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

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

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

	//

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

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

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

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

	//

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

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыЗаказПереработчику.Имя);

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

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

	//

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

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

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

	//

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

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

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

	//

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

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

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

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

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

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

	//

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

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

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыЗаказПереработчику.Имя);

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

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

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

	//

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

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

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

	ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;

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

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

	//

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

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

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

	ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;

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

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

	//

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

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

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

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

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

	//

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

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

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

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

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

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

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

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

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

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

	//

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

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

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

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

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

	//

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

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

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

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

	//

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

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

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

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

	//

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

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

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
	Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для товаров>'"));
	Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);

	//

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

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыВидЗапасов.Имя);

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
	Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для товаров>'"));
	Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);

	//

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

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

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

	//

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

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

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

	#КонецОбласти
	
	НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтаФорма);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервереБезКонтекста
Функция РаспоряженияНеПоЗаказу(Распоряжения)
	
	Запрос = Новый Запрос(
		"ВЫБРАТЬ
		|	ЗаказПереработчику.Ссылка
		|ИЗ
		|	Документ.ЗаказПереработчику КАК ЗаказПереработчику
		|ГДЕ
		|	ЗаказПереработчику.Ссылка В (&Распоряжения)
		|	И НЕ ЗаказПереработчику.ПереработкаПоЗаказу");
	Запрос.УстановитьПараметр("Распоряжения", Распоряжения);
	
	Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
	
КонецФункции

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

&НаСервере
Процедура УстановитьВидимостьРеквизитовУказанияПлановыхЦен()

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

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

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

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

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

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

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

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

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

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

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

&НаСервереБезКонтекста
Функция ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Контрагент)
	
	Возврат ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетКонтрагентаПоУмолчанию(Контрагент);
	
КонецФункции

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

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

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

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

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

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

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

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

	РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ПослеУдаленияСервер(ИмяТаблицы, НеобходимоОбновитьСтатусыСерий, КэшированныеЗначения)

	Если НеобходимоОбновитьСтатусыСерий Тогда

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

	КонецЕсли;

	ОбновитьИнформациюПоЗаказам();
	ПриИзмененииСкладаВТабличнойЧастиСервер();

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

&НаСервереБезКонтекста
Функция ДанныеВыбораСкладов(Склад)

	Запрос = Новый Запрос(
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	Склады.Ссылка КАК Ссылка
	|ИЗ
	|	Справочник.Склады КАК Склады
	|ГДЕ
	|	Склады.Ссылка В ИЕРАРХИИ(&ГруппаСкладов)
	|	И Склады.ЭтоГруппа = ЛОЖЬ
	|	И Склады.ВыборГруппы <> ЗНАЧЕНИЕ(Перечисление.ВыборГруппыСкладов.Запретить)");

	Запрос.УстановитьПараметр("ГруппаСкладов", Склад);
	МассивСкладов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
	Возврат МассивСкладов;

КонецФункции

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

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

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

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

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

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

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

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

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

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

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

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

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

	Запрос = Новый Запрос;
	Запрос.Текст = 
	// 0
	"ВЫБРАТЬ
	|	Товары.Номенклатура   КАК Номенклатура,
	|	Товары.Характеристика КАК Характеристика
	|ПОМЕСТИТЬ
	|	Товары
	|ИЗ
	|	&Товары КАК Товары
	|ГДЕ
	|	Товары.КодСтроки = 0
	|	И Товары.ЗаказПереработчику = ЗНАЧЕНИЕ(Документ.ЗаказПереработчику.ПустаяСсылка)
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	// 1
	|ВЫБРАТЬ
	|	ВЫРАЗИТЬ(ТаблицаЗаказы.ЗаказПоставщику КАК Документ.ЗаказПереработчику).Сделка КАК Сделка,
	|	ТаблицаЗаказы.ЗаказПоставщику           КАК ЗаказПереработчику,
	|	ТаблицаЗаказы.Номенклатура              КАК Номенклатура,
	|	ТаблицаЗаказы.Характеристика            КАК Характеристика,
	|	ТаблицаЗаказы.КодСтроки                 КАК КодСтроки,
	|	ТаблицаЗаказы.Склад                     КАК Склад,
	|	СУММА(ТаблицаЗаказы.КОформлению)        КАК КОформлениюОстаток
	|ПОМЕСТИТЬ
	|	ЗаказыПереработчикам
	|ИЗ
	|	(ВЫБРАТЬ
	|		ЗаказыОстатки.ЗаказПоставщику        КАК ЗаказПоставщику,
	|		ЗаказыОстатки.Номенклатура           КАК Номенклатура,
	|		ЗаказыОстатки.Характеристика         КАК Характеристика,
	|		ЗаказыОстатки.КодСтроки              КАК КодСтроки,
	|		ЗаказыОстатки.Склад                  КАК Склад,
	|		ЗаказыОстатки.КОформлениюОстаток     КАК КОформлению
	|	ИЗ
	|		РегистрНакопления.ЗаказыПоставщикам.Остатки(,
	|				ВЫБОР КОГДА &ОтобратьПоЗаказу ТОГДА
	|					ЗаказПоставщику  = &ЗаказПереработчику
	|				ИНАЧЕ
	|					ЗаказПоставщику ССЫЛКА Документ.ЗаказПереработчику
	|					И ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПереработчику).Партнер = &Партнер
	|					И ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПереработчику).Контрагент = &Контрагент
	|					И ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПереработчику).Договор = &Договор
	|					И ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПереработчику).Организация = &Организация
	|					И ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПереработчику).Валюта = &Валюта
	|					И &НаправлениеДеятельности В
	|						(ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПереработчику).НаправлениеДеятельности, 
	|						 ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка))
	|				КОНЕЦ
	|				И
	|				ВЫБОР
	|					КОГДА
	|						ВЫРАЗИТЬ(&Склад КАК Справочник.Склады).ЭтоГруппа
	|					ТОГДА
	|						Склад В ИЕРАРХИИ (&Склад) ИЛИ Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
	|					ИНАЧЕ
	|						Склад В (ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка), &Склад)
	|				КОНЕЦ
	|			И (Номенклатура, Характеристика) В
	|			(ВЫБРАТЬ
	|				Товары.Номенклатура КАК Номенклатура,
	|				Товары.Характеристика КАК Характеристика
	|			ИЗ
	|				Товары КАК Товары)
	|			) КАК ЗаказыОстатки
	|
	|	ОБЪЕДИНИТЬ ВСЕ
	|
	|	ВЫБРАТЬ
	|		ЗаказыДвижения.ЗаказПоставщику,
	|		ЗаказыДвижения.Номенклатура,
	|		ЗаказыДвижения.Характеристика,
	|		ЗаказыДвижения.КодСтроки,
	|		ЗаказыДвижения.Склад,
	|		ВЫБОР КОГДА ЗаказыДвижения.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА
	|				-ЗаказыДвижения.КОформлению
	|			ИНАЧЕ
	|				ЗаказыДвижения.КОформлению
	|		КОНЕЦ
	|	ИЗ
	|		РегистрНакопления.ЗаказыПоставщикам КАК ЗаказыДвижения
	|	ГДЕ
	|		ЗаказыДвижения.Регистратор = &Регистратор
	|		И ВЫБОР КОГДА &ОтобратьПоЗаказу ТОГДА
	|			ЗаказыДвижения.ЗаказПоставщику = &ЗаказПереработчику
	|		ИНАЧЕ
	|			ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПереработчику).Партнер = &Партнер
	|			И ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПереработчику).Контрагент = &Контрагент
	|			И ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПереработчику).Договор = &Договор
	|			И ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПереработчику).Организация = &Организация
	|			И ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПереработчику).Валюта = &Валюта
	|			И &НаправлениеДеятельности В
	|				(ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПереработчику).НаправлениеДеятельности, 
	|				 ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка))
	|		КОНЕЦ
	|		И ЗаказыДвижения.Активность
	|				И ВЫБОР
	|					КОГДА
	|						ВЫРАЗИТЬ(&Склад КАК Справочник.Склады).ЭтоГруппа
	|					ТОГДА
	|						ЗаказыДвижения.Склад В ИЕРАРХИИ (&Склад) ИЛИ Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
	|					ИНАЧЕ
	|						ЗаказыДвижения.Склад В (ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка), &Склад)
	|				КОНЕЦ
	|			И (Номенклатура, Характеристика) В
	|			(ВЫБРАТЬ
	|				Товары.Номенклатура КАК Номенклатура,
	|				Товары.Характеристика КАК Характеристика
	|			ИЗ
	|				Товары КАК Товары)
	|	) КАК ТаблицаЗаказы
	|	
	|	СГРУППИРОВАТЬ ПО
	|		ТаблицаЗаказы.ЗаказПоставщику,
	|		ТаблицаЗаказы.Номенклатура,
	|		ТаблицаЗаказы.Характеристика,
	|		ТаблицаЗаказы.КодСтроки,
	|		ТаблицаЗаказы.Склад
	|	
	|	ИМЕЮЩИЕ
	|		СУММА(ТаблицаЗаказы.КОформлению) > 0
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	// 2
	|ВЫБРАТЬ
	|	КОЛИЧЕСТВО(*)                           КАК КоличествоДублей,
	|	ЗаказыПереработчикам.Номенклатура       КАК Номенклатура,
	|	ЗаказыПереработчикам.Характеристика     КАК Характеристика,
	|	ЗаказыПереработчикам.Склад              КАК Склад
	|ПОМЕСТИТЬ
	|	ДублиТоваров
	|ИЗ
	|	ЗаказыПереработчикам КАК ЗаказыПереработчикам
	|СГРУППИРОВАТЬ ПО
	|	Номенклатура,
	|	Характеристика,
	|	Склад
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	// 3
	|ВЫБРАТЬ
	|	ЗаказыПереработчикам.Сделка               КАК Сделка,
	|	ЗаказыПереработчикам.ЗаказПереработчику   КАК ЗаказПереработчику,
	|	ЗаказыПереработчикам.Номенклатура         КАК Номенклатура,
	|	ЗаказыПереработчикам.Характеристика       КАК Характеристика,
	|	ЗаказыПереработчикам.КодСтроки            КАК КодСтроки,
	|	ЗаказыПереработчикам.Склад                КАК Склад,
	|	ЕСТЬNULL(ЗаказПереработчикуПродукция.Назначение,
	|		ЗаказПереработчикуОтходы.Назначение)  КАК Назначение,
	|	ЗаказыПереработчикам.КОформлениюОстаток   КАК КОформлениюОстаток,
	|	ЕСТЬNULL(ЗаказПереработчикуПродукция.НомерСтроки,
	|		ЗаказПереработчикуОтходы.НомерСтроки) КАК НомерСтроки,
	|	0                                         КАК Распределено,
	|	ДублиТоваров.КоличествоДублей             КАК КоличествоДублей,
	|	ВЫБОР
	|		КОГДА ДокЗаказПереработчику.ПереработкаПоЗаказу
	|			ТОГДА ЕСТЬNULL(ТаблицаПродукцияУслуги.Распоряжение, ТаблицаОтходыУслуги.Распоряжение)
	|		ИНАЧЕ ДокЗаказПереработчику.Ссылка
	|	КОНЕЦ                                     КАК Распоряжение,
	|	НЕ &ПродукцияИОтходыВОднойТЧ
	|		И НЕ ЗаказПереработчикуОтходы.Ссылка ЕСТЬ NULL КАК ВозвратныйОтход
	|ИЗ
	|	ЗаказыПереработчикам КАК ЗаказыПереработчикам
	|		ЛЕВОЕ СОЕДИНЕНИЕ ДублиТоваров
	|		ПО ЗаказыПереработчикам.Номенклатура = ДублиТоваров.Номенклатура
	|			И ЗаказыПереработчикам.Характеристика = ДублиТоваров.Характеристика
	|			И ЗаказыПереработчикам.Склад = ДублиТоваров.Склад
	|
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику КАК ДокЗаказПереработчику
	|		ПО (ДокЗаказПереработчику.Ссылка = ЗаказыПереработчикам.ЗаказПереработчику)
	|
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику.Продукция КАК ЗаказПереработчикуПродукция
	|		ПО ЗаказПереработчикуПродукция.Ссылка = ЗаказыПереработчикам.ЗаказПереработчику
	|			И ЗаказПереработчикуПродукция.КодСтроки = ЗаказыПереработчикам.КодСтроки
	|
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику.ВозвратныеОтходы КАК ЗаказПереработчикуОтходы
	|		ПО ЗаказПереработчикуОтходы.Ссылка = ЗаказыПереработчикам.ЗаказПереработчику
	|			И ЗаказПереработчикуОтходы.КодСтроки = ЗаказыПереработчикам.КодСтроки
	|
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику.Услуги КАК ТаблицаПродукцияУслуги
	|		ПО (ТаблицаПродукцияУслуги.Ссылка = ЗаказПереработчикуПродукция.Ссылка)
	|			И (ТаблицаПродукцияУслуги.НомерГруппыЗатрат = ЗаказПереработчикуПродукция.НомерГруппыЗатрат)
	|
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику.Услуги КАК ТаблицаОтходыУслуги
	|		ПО (ТаблицаОтходыУслуги.Ссылка = ЗаказПереработчикуОтходы.Ссылка)
	|			И (ТаблицаОтходыУслуги.НомерГруппыЗатрат = ЗаказПереработчикуОтходы.НомерГруппыЗатрат)
	|
	|ГДЕ
	|	(НЕ ЗаказПереработчикуПродукция.Ссылка ЕСТЬ NULL
	|		ИЛИ НЕ ЗаказПереработчикуОтходы.Ссылка ЕСТЬ NULL)
	|
	|
	|УПОРЯДОЧИТЬ ПО
	|	ЗаказПереработчику,
	|	НомерСтроки
	|";
	
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьСумму");
	СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
	
	Запрос.УстановитьПараметр("ЗаказПереработчику",         Объект.ЗаказПереработчику);
	Запрос.УстановитьПараметр("Партнер",                    Объект.Партнер);
	Запрос.УстановитьПараметр("Контрагент",                 Объект.Контрагент);
	Запрос.УстановитьПараметр("Договор",                    Объект.Договор);
	Запрос.УстановитьПараметр("Организация",                Объект.Организация);
	Запрос.УстановитьПараметр("Склад",                      Объект.Склад);
	Запрос.УстановитьПараметр("Валюта",                     Объект.Валюта);
	Запрос.УстановитьПараметр("НаправлениеДеятельности",    Объект.НаправлениеДеятельности);
	Запрос.УстановитьПараметр("Регистратор",                Объект.Ссылка);
	Запрос.УстановитьПараметр("ОтобратьПоЗаказу",           ОтобратьПоЗаказу);
	Запрос.УстановитьПараметр("ПродукцияИОтходыВОднойТЧ",   Документы.ПоступлениеОтПереработчика.ПродукцияИОтходыВОднойТЧ(Объект));
	
	ТаблицаТовары = Объект.Товары.Выгрузить(,"Номенклатура,Характеристика,КодСтроки,ЗаказПереработчику");
	ОбщегоНазначенияУТ.ДобавитьСтрокиВТаблицу(ТаблицаТовары, Объект.ВозвратныеОтходы);
	Запрос.УстановитьПараметр("Товары", ТаблицаТовары);
	
	УстановитьПривилегированныйРежим(Истина);
	РезультатЗапроса = Запрос.ВыполнитьПакет();
	Если РезультатЗапроса[1].Пустой() Тогда
		Возврат Ложь;
	КонецЕсли;
	
	Выборка = РезультатЗапроса[3].Выбрать();
	
	ТаблицаНераспределенныхТоваров = Новый ТаблицаЗначений();
	ТаблицаНераспределенныхТоваров.Колонки.Добавить("Номенклатура");
	ТаблицаНераспределенныхТоваров.Колонки.Добавить("Характеристика");
	ТаблицаНераспределенныхТоваров.Колонки.Добавить("Склад");
	ТаблицаНераспределенныхТоваров.Колонки.Добавить("ЗаказПереработчику");
	ТаблицаНераспределенныхТоваров.Колонки.Добавить("Распоряжение");
	ТаблицаНераспределенныхТоваров.Колонки.Добавить("КодСтроки");
	ТаблицаНераспределенныхТоваров.Колонки.Добавить("Количество");
	ТаблицаНераспределенныхТоваров.Колонки.Добавить("Сделка");
	ТаблицаНераспределенныхТоваров.Колонки.Добавить("Назначение");
	ТаблицаНераспределенныхТоваров.Колонки.Добавить("ВозвратныйОтход");
	
	Пока Выборка.Следующий() Цикл
		
		СтруктураПоиска = Новый Структура();
		СтруктураПоиска.Вставить("Номенклатура",   Выборка.Номенклатура);
		СтруктураПоиска.Вставить("Характеристика", Выборка.Характеристика);
		СтруктураПоиска.Вставить("Склад",          Выборка.Склад);
		СтруктураПоиска.Вставить("Назначение",     Выборка.Назначение);
		СтруктураПоиска.Вставить("КодСтроки",      0);
		
		ТабличнаяЧасть = ?(Выборка.ВозвратныйОтход, Объект.ВозвратныеОтходы, Объект.Товары);
		НайденныеСтроки = ТабличнаяЧасть.НайтиСтроки(СтруктураПоиска);
		
		НераспределенноеКоличество = Выборка.КОформлениюОстаток;
		
		// Если дублей нет, распределяем строку заказа по строкам накладной
		Если Выборка.КоличествоДублей < 2 Тогда
		
			ОбрабатываемыеСтроки = Новый Массив;
			Для Каждого ТекСтрока Из НайденныеСтроки Цикл
			
				ЗаполнитьЗначенияСвойств(ТекСтрока, Выборка, "КодСтроки,ЗаказПереработчику,Распоряжение,Сделка,Назначение");
				
				КоличествоВСтроке = ТекСтрока.Количество;
				
				Если КоличествоВСтроке > НераспределенноеКоличество Тогда
					ТекСтрока.Количество = НераспределенноеКоличество;
					ОбрабатываемыеСтроки.Добавить(ТекСтрока);
				КонецЕсли;
				
				НераспределенноеКоличество = НераспределенноеКоличество - КоличествоВСтроке;
				
				Если НераспределенноеКоличество < 0 Тогда
					НоваяСтрока = ТаблицаНераспределенныхТоваров.Добавить();
					ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка,, "КодСтроки");
					НоваяСтрока.Количество = -НераспределенноеКоличество;
					
					НоваяСтрокаТовары = ТабличнаяЧасть.Добавить();
					ЗаполнитьЗначенияСвойств(НоваяСтрокаТовары, ТекСтрока,, "КодСтроки,ЗаказПереработчику,Распоряжение");
					НоваяСтрокаТовары.Количество = -НераспределенноеКоличество;
					
					ОбрабатываемыеСтроки.Добавить(НоваяСтрокаТовары);
					
				ИначеЕсли НераспределенноеКоличество = 0 Тогда
					Прервать;
				КонецЕсли;
				
			КонецЦикла;
			
			ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
				ОбрабатываемыеСтроки,
				СтруктураДействий,
				ТабличнаяЧасть);
			
		// Если дубли есть, распределяем строки заказов по строкам накладной с учетом количества.
		Иначе
			
			// На первом проходе заполним только если количество в строке заказа и накладной совпадают.
			
			НайденаПодходящаяСтрока = Ложь;
			
			Для Каждого ТекСтрока Из НайденныеСтроки Цикл
				
				Если ТекСтрока.Количество = Выборка.КОформлениюОстаток Тогда
					
					НайденаПодходящаяСтрока = Истина;
					ЗаполнитьЗначенияСвойств(ТекСтрока, Выборка, "КодСтроки,ЗаказПереработчику,Распоряжение,Сделка,Назначение");
					
					Прервать;
					
				КонецЕсли;
				
			КонецЦикла;
			
			Если Не НайденаПодходящаяСтрока Тогда
				
				НоваяСтрока = ТаблицаНераспределенныхТоваров.Добавить();
				ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
				НоваяСтрока.Количество = НераспределенноеКоличество;
				
			КонецЕсли;
			
		КонецЕсли;
		
	КонецЦикла;
	
	// Распределим дубли товаров, нераспределенные на первом проходе
	Если ТаблицаНераспределенныхТоваров.Количество() > 0 Тогда
		
		Для Каждого НераспределеннаяСтрока Из ТаблицаНераспределенныхТоваров Цикл
			
			СтруктураПоиска = Новый Структура();
			СтруктураПоиска.Вставить("КодСтроки", 0);
			СтруктураПоиска.Вставить("ЗаказПереработчику", Документы.ЗаказПереработчику.ПустаяСсылка());
			СтруктураПоиска.Вставить("Номенклатура",   НераспределеннаяСтрока.Номенклатура);
			СтруктураПоиска.Вставить("Характеристика", НераспределеннаяСтрока.Характеристика);
			СтруктураПоиска.Вставить("Склад",          НераспределеннаяСтрока.Склад);
			СтруктураПоиска.Вставить("Назначение",     НераспределеннаяСтрока.Назначение);
			
			ТабличнаяЧасть = ?(НераспределеннаяСтрока.ВозвратныйОтход, Объект.ВозвратныеОтходы, Объект.Товары);
			СтрокиТовары = ТабличнаяЧасть.НайтиСтроки(СтруктураПоиска);
			
			ОбрабатываемыеСтроки = Новый Массив;
			Для Каждого СтрокаТовары Из СтрокиТовары Цикл
				
				Если СтрокаТовары.Количество = НераспределеннаяСтрока.Количество Тогда
					ЗаполнитьЗначенияСвойств(СтрокаТовары, НераспределеннаяСтрока, "КодСтроки,ЗаказПереработчику,Распоряжение,Сделка,Назначение");
					НераспределеннаяСтрока.Количество = 0;
				ИначеЕсли СтрокаТовары.Количество > НераспределеннаяСтрока.Количество Тогда
					Разница = СтрокаТовары.Количество - НераспределеннаяСтрока.Количество;
					
					НоваяСтрокаТовары = ТабличнаяЧасть.Добавить();
					ЗаполнитьЗначенияСвойств(НоваяСтрокаТовары, СтрокаТовары);
					НоваяСтрокаТовары.Количество = Разница;
					СтрокиТовары.Добавить(НоваяСтрокаТовары);
					
					ЗаполнитьЗначенияСвойств(СтрокаТовары, НераспределеннаяСтрока, "КодСтроки,ЗаказПереработчику,Распоряжение,Сделка,Назначение,Количество");
					
					НераспределеннаяСтрока.Количество = 0;
					ОбрабатываемыеСтроки.Добавить(НоваяСтрокаТовары);
					ОбрабатываемыеСтроки.Добавить(СтрокаТовары);
					
				ИначеЕсли СтрокаТовары.Количество < НераспределеннаяСтрока.Количество Тогда
					Разница = НераспределеннаяСтрока.Количество - СтрокаТовары.Количество;
					ЗаполнитьЗначенияСвойств(СтрокаТовары, НераспределеннаяСтрока, "КодСтроки,ЗаказПереработчику,Распоряжение,Сделка,Назначение");
					НераспределеннаяСтрока.Количество = Разница;
					
				КонецЕсли;
				
				Если НераспределеннаяСтрока.Количество = 0 Тогда
					Прервать;
				КонецЕсли;
				
			КонецЦикла;
			
			ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
				ОбрабатываемыеСтроки,
				СтруктураДействий,
				ТабличнаяЧасть);
			
		КонецЦикла;
		
	КонецЕсли;
	
	ОбновитьОтклоненияОтЗаказа();
	
	СоответствиеРеквизитов = Новый Соответствие;
	СоответствиеРеквизитов.Вставить("ЗаказПереработчику","ЗаказПереработчику");
	СоответствиеРеквизитов.Вставить("Распоряжение","Распоряжение");
	ЗаказыСервер.ЗаполнитьРеквизитыШапкиПоТабличнымЧастям(СоответствиеРеквизитов, "Товары,ВозвратныеОтходы", Объект);
	
	Возврат Истина;
	
КонецФункции

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

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

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


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

	ТекущиеДанные = Объект[ДополнительныеПараметры.ИмяТЧ].НайтиПоИдентификатору(ДополнительныеПараметры.ТекущаяСтрока);

	ТекущиеДанные.ЗаказПереработчику = РезультатЗакрытия.ЗаказПереработчику;
	ТекущиеДанные.Распоряжение = РезультатЗакрытия.Распоряжение;

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

	ВыбратьРаспоряжениеЗавершениеНаСервере();
	
КонецПроцедуры

&НаСервере
Процедура ВыбратьРаспоряжениеЗавершениеНаСервере()

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

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

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

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

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

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

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

#Область КонтрольНесогласованныхИзменений

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура УстановитьДоступностьВозвратныхОтходов()

	ПродукцияИОтходыВОднойТЧ = Документы.ПоступлениеОтПереработчика.ПродукцияИОтходыВОднойТЧ(Объект);

	Элементы.ВозвратныеОтходы.Видимость = НЕ ПродукцияИОтходыВОднойТЧ;
	Элементы.СтоимостьВозвратныхОтходов.Видимость = НЕ ПродукцияИОтходыВОднойТЧ;
	Элементы.СуммаВсегоВозвратныхОтходовВалюта.Видимость = НЕ ПродукцияИОтходыВОднойТЧ;
	Элементы.КартинкаНесколькоСкладов2.Видимость = НЕ ПродукцияИОтходыВОднойТЧ;
	Элементы.НадписьНесколькоСкладов1.Видимость = НЕ ПродукцияИОтходыВОднойТЧ;
	
КонецПроцедуры

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

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

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

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