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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ПодключитьОбработчикОжиданияПолучениеПеревозчиков();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ОперацияССамозанятымПриИзмененииНаСервере();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

	НаправлениеДеятельностиПриИзмененииСервер();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	УказаннаяСтавкаНДС = ТекущаяСтрока.СтавкаНДС;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ОтменитьНепоставленныеСтрокиФрагмент(ПричинаОтмены, ПроверятьОстатки);
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ДополнитьМногооборотнойТарой(Команда)

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

&НаКлиенте
Процедура ПодобратьАналоги(Команда)
	
	
	 Возврат; // в УТ и КА обработчик пустой
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ИнтернетПоддержкаПользователей.СПАРКРиски

// Обновляет отображение индексов СПАРК Риски.
//
// Параметры:
//  Нет.
//
&НаКлиенте
Процедура Подключаемый_ОбновитьОтображениеИндексыСПАРК()

	ОбновитьОтображениеИндексыСПАРК();

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

// Обновляет отображение индексов СПАРК Риски.
//
// Параметры:
//  Нет.
//
&НаКлиенте
Процедура ОбновитьОтображениеИндексыСПАРК()

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

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

&НаСервереБезКонтекста
Функция ВидКонтрагентаСПАРК(Контрагент)
	
	Возврат Перечисления.ЮрФизЛицо.ВидКонтрагентаСПАРКРиски(Контрагент);
	
КонецФункции
// Конец ИнтернетПоддержкаПользователей.СПАРКРиски

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	// Снятие отметки незаполненного подразделения, если Товар, не списываемый на расходы, или Работа по агентской закупке

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

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

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

	
	// установка отметки незаполненного подразделения, если Товар

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Функция ЗаполнитьЦеныПоСоглашениюСервер(ПоВсемСтрокам = Ложь, ТекстОшибки = "")

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

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

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

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

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

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

	
	УстановитьПривилегированныйРежим(Истина);
	РезультатЗапроса = Запрос.Выполнить();
	Выборка = РезультатЗапроса.Выбрать();

	ОбрабатываемыеСтроки = Новый Массив;
	ОбрабатываемыеСтрокиБезПересчетаСуммы = Новый Массив;

	Пока Выборка.Следующий() Цикл
		
		НайденныеСтроки = Объект.Товары.НайтиСтроки(Новый Структура("КодСтроки", Выборка.КодСтроки));
		
		Если НайденныеСтроки.Количество() > 0 Тогда
			
			НайденныеСтроки[0].Цена = Выборка.ЦенаПоступления;
			Если Выборка.СуммаРучнойСкидкиПоступления <> НайденныеСтроки[0].СуммаРучнойСкидки Тогда
				ОбрабатываемыеСтрокиБезПересчетаСуммы.Добавить(НайденныеСтроки[0]);
				НайденныеСтроки[0].ПроцентРучнойСкидки = -(Выборка.СуммаПоступления * 100
					/ (НайденныеСтроки[0].КоличествоУпаковок*НайденныеСтроки[0].Цена)-100);
				НайденныеСтроки[0].СуммаРучнойСкидки = Выборка.СуммаРучнойСкидкиПоступления;
				НайденныеСтроки[0].Сумма = Выборка.СуммаПоступления;
			Иначе
				ОбрабатываемыеСтроки.Добавить(НайденныеСтроки[0]);
			КонецЕсли;
			ЦеныСкорректированы = Истина;
			
		КонецЕсли;
		
	КонецЦикла;

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

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

	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
	СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);

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

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

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

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

	Возврат ЦеныСкорректированы;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

&НаКлиенте
Процедура ЗаполнитьДатуОтгрузки(МассивВыделенныхСтрок = Неопределено)

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

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

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

				Для Каждого СтрокаТЧ Из Объект.Товары Цикл
					СтрокаТЧ.ДатаОтгрузки = ДатаОтгрузки;
					СтрокаТЧ.ДатаПоступления = ДатаОтгрузки + Объект.ДлительностьДоставки*86400;
				КонецЦикла;

			Иначе

				Для Каждого ИдентификаторСтроки Из МассивВыделенныхСтрок Цикл

					СтрокаТЧ = Объект.Товары.НайтиПоИдентификатору(ИдентификаторСтроки);
					СтрокаТЧ.ДатаОтгрузки = ДатаОтгрузки;
					СтрокаТЧ.ДатаПоступления = ДатаОтгрузки + Объект.ДлительностьДоставки*86400;

				КонецЦикла;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	МаксДатаАванса = МаксимальнаяДатаАванса(Объект.ЭтапыГрафикаОплаты);
	ЖелаемаяДатаПоступленияСписокВыбора = Элементы.ЖелаемаяДатаПоступления.СписокВыбора;
	
	Если ЗначениеЗаполнено(МаксДатаАванса) Тогда
		
		ПредставлениеМаксДатаАванса = "%МаксДатаАванса%";
		ПредставлениеМаксДатаАванса = СтрЗаменить(ПредставлениеМаксДатаАванса, "%МаксДатаАванса%", Формат(МаксДатаАванса,"ДЛФ=DD"));
		
		ЖелаемаяДатаПоступленияСписокВыбора.Очистить();
		ЖелаемаяДатаПоступленияСписокВыбора.Добавить(МаксДатаАванса, ПредставлениеМаксДатаАванса);
		
	КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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