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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ОбновитьСлужебныеПоляТаблицыЗначений();

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

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

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

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

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

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

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

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

&НаСервере
Процедура СтатьяРасходовПриИзмененииСервер()
	
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	//

	НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтотОбъект,
																	"ТаблицаКорректировкиХарактеристика",
																	"ТаблицаКорректировки.ХарактеристикиИспользуются");

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	//

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

	//

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

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

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

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

	//

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

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

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

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

	//

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

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

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

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

	//

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ЗаполнитьОграниченияПриСменеДоговора()

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#КонецОбласти //ВариантыОтражения 

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

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

&НаСервере
Процедура УстановитьЗаголовокФормы()
	
	АвтоЗаголовок = Ложь;
	ШаблонЗаголовка = НСтр("ru = 'Корректировка приобретения до ввода остатков %1'");
	
	Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
		ОкончаниеЗаголовка = НСтр("ru = '%1 от %2'");
		ОкончаниеЗаголовка = СтрШаблон(ОкончаниеЗаголовка, Объект.Номер, Объект.Дата);
	Иначе
		ОкончаниеЗаголовка = НСтр("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 Тогда
		ТекстЗаголовка = НСтр("ru = 'Данные корректировки'");
	Иначе
		ТекстЗаголовка = СтрШаблон(НСтр("ru = 'Данные корректировки (%1)'"), ТаблицаКорректировки.Количество());
	КонецЕсли;
	
	Элементы.ГруппаТаблицаКорректировки.Заголовок = ТекстЗаголовка;
	
	Для каждого ТекущаяСтрока Из ТаблицаКорректировки Цикл
		ТекущаяСтрока.НомерСтроки = ТаблицаКорректировки.Индекс(ТекущаяСтрока)+1;
	КонецЦикла;
	
КонецПроцедуры

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

&НаСервере
Процедура ОбновитьНомерСтрокиТаблицыКорректировки(ТекущаяСтрока)
	
	ТекущаяСтрока.НомерСтроки = ТаблицаКорректировки.Индекс(ТекущаяСтрока)+1;
	
КонецПроцедуры

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

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

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

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