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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ЦенаВключаетНДСПриИзменении(Элемент)
	
	ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

//++ Локализация
&НаСервереБезКонтекста
Функция ПараметрыРегистрацииУведомленийОВвозеПрослеживаемыхТоваровСервер(Знач Объект)
	
	Возврат Документы.ПриобретениеТоваровУслуг.ПараметрыРегистрацииУведомленийОВвозеПрослеживаемыхТоваров(Объект);
	
КонецФункции	
//-- Локализация

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура СтатусЧекаСамозанятогоНажатие(Элемент, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;
	ДенежныеСредстваКлиентЛокализация.ПередЗагрузкойЧекаСамозанятогоВДокумент(ЭтотОбъект);

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

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

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

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

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

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

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

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

	Иначе

		ОбновитьЗависимыеРеквизитыФормыСерверПоЗаказу();

	КонецЕсли;

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

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

	КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ТоварыСуммаВзаиморасчетовПриИзменении(Элемент)
	ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		ТекущиеДанные.СуммаНДСВзаиморасчетов = 0;
	КонецЕсли;
КонецПроцедуры

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

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

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

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

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

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

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

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

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

	КонецЕсли;

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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


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

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

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

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

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

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

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

&НаКлиенте
Процедура ЗаполнитьЦеныПоСоглашению(Команда)

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

&НаКлиенте
Процедура АвтоТест_ЗаполнитьЦеныПоСоглашению() Экспорт

	ЗаполнитьЦеныПоСоглашению(Неопределено);
	
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура НазначитьРучнуюСкидкуДляВыделенныхСтрок(Команда)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ЗаполнитьНомераГТДПоПоступлениям(Команда)
	
	ЗаполнитьНомераГТДПоПоследнимПоступлениям();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайла(Команда)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	
	// только просмотр, если товар или тара или услуга или работа и заполнено назначение
	Элемент = УсловноеОформление.Элементы.Добавить();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	//

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

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

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

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

	//
	
	УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюЗакупки(ЭтаФорма);
	
	//
	
	ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеЦенаВключаетНДС(ЭтаФорма);

	//

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

	//

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

	//

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

	//

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

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

	//

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

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

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

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

	//

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

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

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

	//

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

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

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

	//

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

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

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

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

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

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

	//

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

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

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

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

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

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

	//

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

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

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

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

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

	//

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

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

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

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

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

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

	//

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

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

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

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

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

	//

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

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

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

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

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

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

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

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

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

	//

	УчетПрослеживаемыхТоваровЛокализация.УстановитьУсловноеОформлениеКоличестваПоРНПТ(ЭтотОбъект);

	//

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

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

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

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

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

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

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

	//

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

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

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

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

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

	//

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

	//

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

	//
	
	ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
		УсловноеОформление, "ТоварыСклад", "Объект.Товары.Склад", "Объект.Товары.СкладОбязателен");
	
	ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
		УсловноеОформление, "Склад", "Объект.Склад", "СкладОбязателен");

	//

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

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

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

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

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

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

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

	//

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

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

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

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

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.FireBrick);

	//

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

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

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

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

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Green);

	//

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

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

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

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

	//

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

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

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

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

	//

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

	//

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

	//

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

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

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

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

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

	//
	
	НоменклатураСервер.УстановитьУсловноеОформлениеНазначенияНоменклатуры(ЭтаФорма);
	
	
	УстановитьУсловноеОформлениеДляСтатейИАналитик();
	
	// поясняющая надпись для подразделения, если склады не в табличной части

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

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

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

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

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

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

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

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

	ОперацииФактуровка = Новый СписокЗначений;
	ОперацииФактуровка.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки);
	ОперацииФактуровка.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки);
	
	Элемент = УсловноеОформление.Элементы.Добавить();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюЗакупки(ЭтаФорма);
	
	// только просмотр Назначения, если КодСтроки заполнен

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Колонки = "Номенклатура,Характеристика,Упаковка,КоличествоУпаковок,Цена,ПроцентРучнойСкидки,СуммаРучнойСкидки,
		|НомерГТД,Склад,Подразделение,Сертификат,НомерПаспорта";

	ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);

	Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
		Возврат;
	КонецЕсли;

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

	Для каждого СтрокаТовара Из ТаблицаТоваров Цикл

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ОбрабатываемыеСтроки = Новый Массив;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервереБезКонтекста
Процедура ПроверитьНаличиеКорректировокИСчетовФактур(Ссылка, ЕстьКорректировки, ЕстьСчетаФактуры)
	
	ЗакупкиСервер.ПроверитьНаличиеКорректировокИСчетовФактур(Ссылка, Ссылка, ЕстьКорректировки, ЕстьСчетаФактуры);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ОчиститьСообщения();

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

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

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

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

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

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

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

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

	ОбновитьТекстДокументыНаОсновании();

	УстановитьОбязательностьПоставщика();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ОбновитьТекстАвансовыйОтчет()
	
	ТекстАвансовыйОтчет = АвансовыйОтчетЛокализация.ТекстАвансовыйОтчет(Объект.АвансовыйОтчет);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ТоварыПриОкончанииРедактированияДляСерверногоВызова()
	
	ТоварыПриОкончанииРедактированияНаСервере();
	
КонецПроцедуры

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

&НаСервере
Функция ПолноеИмяДокумента()
	
	Возврат "Документ.ПриобретениеТоваровУслуг";
	
КонецФункции

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

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

&НаСервереБезКонтекста
Функция ХозяйственныеОперацииВвозИзЕАЭССервер()
	
	Возврат Документы.ПриобретениеТоваровУслуг.ХозяйственныеОперацииВвозИзЕАЭС();
	
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Функция ХозяйственныеОперацииВвозИзЕАЭС()
	
	Возврат ХозяйственныеОперацииВвозИзЕАЭССервер();
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ОбновитьПризнакЕстьКорректировки()
	ЕстьСчетФактуры = Ложь;
	ПроверитьНаличиеКорректировокИСчетовФактур(Объект.Ссылка, ЕстьКорректировки, ЕстьСчетФактуры);
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ПоместитьРасшифровкуПлатежаВоВременноеХранилище()
	ВзаиморасчетыСервер.ПоместитьРасшифровкуПлатежаВоВременноеХранилище(ЭтаФорма);
КонецПроцедуры

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

#Область ФискальнаяОперация

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ПослеЗагрузкиЧекаСамозанятогоНаСервере(Чек)

	ДенежныеСредстваСерверЛокализация.УстановитьСтатусЗагрузкиЧеков(ЭтотОбъект);

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

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

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