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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

		ТоварыПослеУдаленияСервер(КэшированныеЗначения); // серверный вызов

	КонецЕсли;

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

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

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

&НаКлиенте
Процедура ТоварыПриАктивизацииЯчейки(Элемент)
	Если Элемент.ТекущийЭлемент = Неопределено Тогда
		Возврат
	ИначеЕсли Элемент.ТекущийЭлемент.Имя = "ТоварыНоменклатураПартнера" Тогда

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	// поясняющая надпись, если работа и на расходы не списываем

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	//

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

	//

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

	//

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

	//

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

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

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

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

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

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

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

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

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

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

	//

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

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

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

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

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

	//

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

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

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

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

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

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

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

	//

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

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

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

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

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

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

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

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

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

	//

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

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

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

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

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

	//

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

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

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

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

	//

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

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

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

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

	//

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

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

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

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

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

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

	//

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

	// оформление статей и аналитики расходов

	УстановитьУсловноеОформлениеДляСтатейИАналитик();
	
	// Снятие отметки незаполненного подразделения, если Товар или Работа по агентской закупке, и товар не списан на расходы

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

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

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

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

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

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

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

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

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

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

	// Оформление склада и подразделения
	// отключение видимости склада, если работа или услуга или товар списан на расходы.

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

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

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

	Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
	
	// отключение видимости склада, если работа или услуга (т.ч. Расхождения)

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

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

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

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

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

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

	// Отключение видимости подразделения, если товар или тара, не списываемые на расходы, или операция комиссии.

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

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

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

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

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

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

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

	// Отключение видимости подразделения, если товар или тара, не списываемые на расходы, (т.ч. Расхождения).

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

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

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

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

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

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

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

	// поясняющая надпись для подразделения, если склады не в табличной части

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

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

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

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

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

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

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

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

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

	// Поясняющая надпись для подразделения, если склады не в табличной части (т.ч. Расхождения).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ТоварыПослеУдаленияСервер(КэшированныеЗначения)

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

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

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

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

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

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

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

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

#Область Заполнение

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ПослеЗаполненияПоИсходнымДанным()

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Если ЗаполненИсправляемыйДокумент Тогда
		ШиринаЭлементаИсправляемыйДокумент = 15;			
	Иначе
		ШиринаЭлементаИсправляемыйДокумент = 22;			
		ЦветТекстаИзменитьИсправляемыйДокумент = ЦветаСтиля.ЦветОсобогоТекста;
	КонецЕсли;

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

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


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

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

	ДатаИсправления = Объект.Дата;
	
	Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
		ДатаИсправления = Неопределено;	
	КонецЕсли;	

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

&НаСервереБезКонтекста
Функция ТоварПрослеживается(НомерГТД)
	
	Возврат ПриобретениеУслугПрочихАктивовЛокализация.ТоварПрослеживается(НомерГТД);
	
КонецФункции

//-- НЕ УТ

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область РаботаСКонтрагентами

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

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

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

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

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

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

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

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

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

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

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

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

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

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

//++ НЕ УТ

#Область ГруппыЗатрат

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

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

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

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

&НаСервере
Процедура ТаблицаГруппаЗатратНачалоВыбораЗавершениеНаСервере(Результат, Знач ВыделенныеСтроки)

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

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

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

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

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

//-- НЕ УТ

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

	РасхожденияАктуальны = Ложь;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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