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

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

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

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

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

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

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

	УстановитьВидимостьКомандыЗаполнитьСтавкуНДС();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОформитьДокументыНажатие(Элемент)
	
	РасхожденияКлиент.ОформитьДокументыНажатие(ЭтотОбъект);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ТолькоРасхожденияВыполнить(Команда)
	
	РасхожденияКлиент.ТолькоРасхожденияВыполнить(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ИзменитьДействие(Команда)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

	УстановитьВидимостьКомандыЗаполнитьСтавкуНДС();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ОперацииДокумента = Новый СписокЗначений;
	ОперацииДокумента.Добавить(Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера);
	ОперацииДокумента.Добавить(Перечисления.ХозяйственныеОперации.ВозвратОтХранителя);
	//++ НЕ УТ
	ОперацииДокумента.Добавить(Перечисления.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5);
	ОперацииДокумента.Добавить(Перечисления.ХозяйственныеОперации.ВозвратОтПереработчика2_5);
	//-- НЕ УТ

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

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

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

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

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

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

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

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
	
	// отключение видимости подразделения, если товар или тара или операция комиссии

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

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

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

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

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

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

	СписокДвухходовыхОпераций = Новый СписокЗначений;
	СписокДвухходовыхОпераций.ЗагрузитьЗначения(ЗакупкиСервер.ХозяйственныеОперацииРаздельнойЗакупкиБезОтборов());

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

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

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

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

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

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

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

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

	Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
	
	// Сделка - Гиперссылка, если заполнено.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура СформироватьСпособОтраженияРасхожденией()

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

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

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

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

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

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

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

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

#Область ЗаполнениеИОбработкаВыбора

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

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

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

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

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

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

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

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

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

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

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

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

	Если Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг Тогда
 		
		ЗаполнитьРеквизитыМногооборотнойТары();
		
	КонецЕсли;

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

	Возврат Истина;
	
КонецФункции

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

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

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

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

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

	Для Каждого СтрокаКУдалению из СтрокиКУдалению Цикл
		Объект.Товары.Удалить(СтрокаКУдалению);
	КонецЦикла;
	
КонецПроцедуры

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

	ПриИзмененииХозяйственнойОперацииСервер();
	
	РасхожденияСервер.УстановитьДоступностьДоговора(ЭтотОбъект);
	
КонецПроцедуры

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

&НаСервере
Процедура ОбработатьПодборДокументовОснований(МассивДокументовОснований, ПараметрВариантЗаполнения)

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

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

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

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

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

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

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

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

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

	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
	СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
	СтруктураДействий.Вставить("ПересчитатьРасхожденияПослеПриемки");

	ВыделенныеСтроки = РаботаСТабличнымиЧастямиКлиентСервер.ЭлементыКоллекции(
		Объект.Товары, Элементы.Товары.ВыделенныеСтроки);

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

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

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

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

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

#Область СтандартныеПодсистемы

// СтандартныеПодсистемы.ДополнительныеРеквизитыСведения

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

// Конец СтандартныеПодсистемы.ДополнительныеРеквизитыСведения

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

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

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

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

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

&НаКлиенте
Процедура КомментарийМенеджераНачалоВыбора()

	РасхожденияКлиент.КомментарийНачалоВыбора(ЭтотОбъект,
	                                          "КомментарийМенеджера",
	                                          "ЕстьКомментарийМенеджера",
	                                          "ТоварыКомментарийМенеджераПодвал");

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

&НаКлиенте
Процедура КомментарийПоставщикаНачалоВыбора()

	РасхожденияКлиент.КомментарийНачалоВыбора(ЭтотОбъект,
	                                          "КомментарийПоставщика",
	                                          "ЕстьКомментарийПоставщика",
	                                          "ТоварыКомментарийПоставщикаПодвал");

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

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

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

&НаСервере
Процедура СформироватьТаблицуЗаказыСделки()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область Тексты

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

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

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

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