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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	//++ Локализация
	Элементы.ГруппаСостояниеЭПД.Видимость = ОбменСГИСЭПДПереопределяемый.РазрешенаРаботаЭПД();
	ОбновитьТекстЭПД();
	//-- Локализация
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область Доставка


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

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

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

&НаКлиенте
Процедура АдресДоставкиПриИзменении(Элемент)
	
	ОбработатьИзменениеАдреса(Элемент, "АдресДоставки");
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура АдресДоставкиПеревозчикаПриИзменении(Элемент)
	
	ОбработатьИзменениеАдреса(Элемент, "АдресДоставкиПеревозчика");
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);

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

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

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

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

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

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

&НаКлиенте
Процедура ТоварыЗаказПереработчикуПриИзменении(Элемент)
	
    ОбновитьИнформациюПоЗаказам();
	
КонецПроцедуры

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

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

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


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


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

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

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

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

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

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

&НаКлиенте
Процедура РеквизитыПечати(Команда)
	
	ОткрытьРеквизитыПечатиРеализации();
	
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура РазбитьСтроку(Команда)
	
	ПараметрыРазбиенияСтроки = РаботаСТабличнымиЧастямиКлиент.ПараметрыРазбиенияСтроки();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область Доставка

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

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

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

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

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

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

&НаСервереБезКонтекста
Процедура УстановитьТипАдресаВСвободнойФорме(АдресДоставкиЗначение)
	
	СтрокаЗаменяемыйТип = """addressType"": ""Административно-территориальный""";
	СтрокаСвободныйТип = """addressType"": ""ВСвободнойФорме""";
	АдресДоставкиЗначение = СтрЗаменить(АдресДоставкиЗначение, СтрокаЗаменяемыйТип, СтрокаСвободныйТип);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

	#КонецОбласти
	
	// Скрыть заказ если передача по одному заказу или без заказа
	#Область СкрытьЗаказ
	Элемент = УсловноеОформление.Элементы.Добавить();

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

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

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

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

	Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
	#КонецОбласти
	
	// Видимость реквизитов если передача не по заказу
	#Область ВидимостьЕслиНеПоЗаказу
	Элемент = УсловноеОформление.Элементы.Добавить();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервереБезКонтекста
Функция ЭтоГруппаСкладовИСкладыИспользуютсяВТЧДокументовПродажи(Склад)
	
	Возврат Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовПродажи(Склад);
	
КонецФункции 

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

#Область Локализация

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

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

&НаСервере
Процедура ОбновитьТекстДокументыНаОснованииЛокализация()
	
	//++ Локализация
	ТекстТТН = Документы.ТранспортнаяНакладная.ТекстТТН(ЭтотОбъект);
	ТекстыПоляДокументыНаОсновании.Добавить(ТекстТТН);
	//-- Локализация
	
	Возврат;
	
КонецПроцедуры

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

	Возврат;
	
КонецПроцедуры

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

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