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

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

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

&НаКлиенте
Перем ПредыдущиеРеквизитыСтрокиТЧТовары;

&НаКлиенте
Перем ПредыдущиеРеквизитыСтрокиТЧРасхождения;

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

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

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

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

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

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

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

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

	Элементы.ТоварыВидЦены.БыстрыйВыбор = Не ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовЦен");
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

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

	// ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС
	ЭлектронноеАктированиеЕИСУТ.УстановкаВидимостиГруппыГосконтракта(ЭтотОбъект);
	// Конец ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ПредыдущиеРеквизитыСтрокиТЧРасхождения = Новый Структура;
	ПредыдущиеРеквизитыСтрокиТЧРасхождения.Вставить("Склад");

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

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

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

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

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

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

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

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

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

	// ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС
	ПредложениеЗаполнитьПоГосконтрактуЕИС();
	// Конец ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС

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

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

	// ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС
	ПредложениеЗаполнитьПоГосконтрактуЕИС();
	// Конец ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС

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

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

	// ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС
	ПредложениеЗаполнитьПоГосконтрактуЕИС();
	// Конец ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС	

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

//++ Локализация

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

//-- Локализация

&НаКлиенте
Процедура ЭтапГосконтрактаЕИСНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	//++ Локализация

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

	//-- Локализация
	
	Возврат;
	
КонецПроцедуры

&НаКлиенте
Процедура ЭтапГосконтрактаЕИСОчистка(Элемент, СтандартнаяОбработка)

	Объект.ЭтапГосконтрактаЕИС = "";

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ТоварыПриИзменении(Элемент)
	
	РасхожденияАктуальны = Ложь;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура РасхожденияСерияПриИзменении(Элемент)
	
	СерияПриИзменении(Элементы.Расхождения.Имя);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура УстановитьВариантыОтраженияТовары(Команда)
	
	УстановитьВариантыОтражения("Товары");
	РасхожденияАктуальны = Ложь;
	
КонецПроцедуры

&НаКлиенте
Процедура УстановитьВариантыОтраженияРасхождения(Команда)
	
	УстановитьВариантыОтражения("Расхождения");
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения);
	РасхожденияАктуальны = Ложь;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	// ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС
	ЭлектронноеАктированиеЕИСУТ.ДоговорПриИзмененииЭлектронноеАктированиеЕИС(ЭтотОбъект, Объект);
	// Конец ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС

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

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

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

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

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

	// ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС
	ЭлектронноеАктированиеЕИСУТ.ДоговорПриИзмененииЭлектронноеАктированиеЕИС(ЭтотОбъект, Объект);
	// Конец ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС

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

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

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

	ФормированиеФискальныхЧековСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект);
	

	// ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС
	ЭлектронноеАктированиеЕИСУТ.ДоговорПриИзмененииЭлектронноеАктированиеЕИС(ЭтотОбъект, Объект);
	// Конец ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область КорректировкаЗадолженности

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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