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

файл
//++ Устарело_Производство21
#Область ОписаниеПеременных

&НаКлиенте
Перем КэшированныеЗначения;

&НаКлиенте
Перем ТекущиеДанныеИдентификатор;

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

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

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

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

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

	ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
	
	// Обработчик механизма "Назначения"
	Справочники.Назначения.ФормаДокументаПриСозданииНаСервере(ЭтаФорма);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

&НаКлиенте
Процедура ОткрытьВидыЗапасов(Команда)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ИнтеграцияС1СДокументооборотом
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)

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

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

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

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

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

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

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

&НаСервере
Процедура ПриИзмененииПередачаПоНесколькимРаспоряжениям(ЗаказСсылка = Неопределено)

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

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

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

	Если Объект.ПередачаПоРаспоряжениям И Объект.Товары.Количество() > 0  Тогда

		Объект.Товары.Очистить();
		ОбновитьИнформациюПоЗаказам();
		
	КонецЕсли;
	
	АктуализироватьПотреблениеДляДеятельности();
	НастроитьКомандуПодобратьПоЗаказамОрдерам();
	
КонецПроцедуры

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

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

&НаСервере
Процедура ПодразделениеПриИзмененииСервер(ОчиститьТовары)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Функция ЕстьЗаполненныеСерииПоFEFO()

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

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

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

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

&НаСервере
Функция ЗаполнитьСерииПоFEFOСервер()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

		ПараметрыФормыУказанияСерий = ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор);
		
		ЗначениеВозврата = Неопределено;

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

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

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

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

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

#Область РасхожденияВДокументахОтгрузки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ЗаказыСервер.ОбновитьИнформациюПоЗаказамВФорме(ЭтаФорма, Объект.Товары, ПараметрыОбновления);
	
КонецПроцедуры

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

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

	СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");

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

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

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

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

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

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

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

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

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

	// Цвет текста в поле Распоряжение
	#Область ТоварыРаспоряжениеЦветТекста
	Элемент = УсловноеОформление.Элементы.Добавить();

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

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

	// ТолькоПросмотр поля Распоряжение
	#Область ТоварыРаспоряжениеТолькоПросмотр
	Элемент = УсловноеОформление.Элементы.Добавить();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
	#КонецОбласти
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ОповеститьОбОтвязкеСтрокОтЗаказов()
	
	ТекстОповещения = НСтр("ru='Строки в списке ""Материалы"" отвязаны от строк заказов.'");
	ПоказатьОповещениеПользователя(НСтр("ru = 'Обработка списка ""Материалы""'"),, ТекстОповещения);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#КонецОбласти
//-- Устарело_Производство21

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