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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ДанныеДляПересчетаСуммыРегл = ПолучитьПараметрыДляПересчетаСуммыРегл(ЭтотОбъект, Суффикс);
	ДанныеДляПересчетаСуммыУпр = ПолучитьПараметрыДляПересчетаСуммыУпр(ЭтотОбъект, Суффикс);

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

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

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

	ДанныеДляПересчетаСуммыРегл = ПолучитьПараметрыДляПересчетаСуммыРегл(ЭтотОбъект);
	ДанныеДляПересчетаСуммыУпр = ПолучитьПараметрыДляПересчетаСуммыУпр(ЭтотОбъект);

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	//

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

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

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

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

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

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

	//

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

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

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

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

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

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

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

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

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

	//

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	//

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

	//
	
	НаборыСервер.УстановитьУсловноеОформление(ЭтотОбъект, "ТаблицаКорректировки");
	
	//

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	//

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

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

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

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

	//

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

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

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

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

	//

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

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

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

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

	//

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

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

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

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

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

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

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

	ТаблицаКорректировкиПриОкончанииРедактированияНаСервере();

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

&НаСервере
Процедура ТаблицаКорректировкиПриОкончанииРедактированияНаСервере()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область Наборы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ПараметрыДляВыбора.ОтразитьНаПрочихДоходах	= СуммаНаПрочиеДоходы > 0;
	ПараметрыДляВыбора.СписатьНаРасходы			= СуммаНаПрочиеРасходы > 0;
	
	Возврат ПараметрыДляВыбора;
	
КонецФункции

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

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

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

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

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

&НаСервере
Процедура ПриИзмененииСкладаВТабличнойЧастиСервер()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

	ДанныеДляПересчетаСуммыРегл = ПолучитьПараметрыДляПересчетаСуммыРегл(ЭтотОбъект, "После");
	ДанныеДляПересчетаСуммыУпр = ПолучитьПараметрыДляПересчетаСуммыУпр(ЭтотОбъект, "После");

	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
	СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетовСуффикс", "После");
	
	СтруктураДействий.Вставить("ПересчитатьСуммуБезНДСРегл", ДанныеДляПересчетаСуммыРегл);
	СтруктураДействий.Вставить("ПересчитатьСуммуБезНДСУпр", ДанныеДляПересчетаСуммыУпр);
	
	СтруктураДействий.Вставить("ПересчитатьСуммуБезНДСРеглСуффикс", ДанныеДляПересчетаСуммыРегл);
	СтруктураДействий.Вставить("ПересчитатьСуммуБезНДСУпрСуффикс", ДанныеДляПересчетаСуммыУпр);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Возврат ДанныеДляПересчетаСуммыУпр;
	
КонецФункции

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

#Область Локализация

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

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

	Возврат;
	
КонецПроцедуры

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

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

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