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

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

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

//используется для передачи текущей строки в обработчик ожидания
&НаКлиенте
Перем ТекущиеДанныеИдентификатор;

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

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

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

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

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

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

	ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)

	МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура РасчетыЧерезОтдельногоКонтрагентаПриИзмененииСервер()

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

	ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтаФорма);
	ДоговорПриИзмененииСервер();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура РасшифровкаПлатежаВалютаВзаиморасчетовПриИзменении(Элемент)
	Элементы.РасшифровкаПлатежа.ТекущиеДанные.СуммаВзаиморасчетов = 0;
КонецПроцедуры

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ПоместитьРасшифровкуПлатежаВоВременноеХранилище()
	ВзаиморасчетыСервер.ПоместитьРасшифровкуПлатежаВоВременноеХранилище(ЭтаФорма, "РасшифровкаПлатежа");
КонецПроцедуры

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

&НаСервере
Процедура ПолучитьРасшифровкуПлатежаИзХранилища(АдресПлатежейВХранилище)
	Объект.РасшифровкаПлатежа.Загрузить(ПолучитьИзВременногоХранилища(АдресПлатежейВХранилище));
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область Товары

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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