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

файл

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура МенеджерПриИзменении(Элемент)
	
	ЗаполнитьПодчиненныеСвойстваПоСтатистике("Менеджер");
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура УказатьСерии(Команда)
	
	ОткрытьПодборСерий();
	
КонецПроцедуры

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

&НаКлиенте
Процедура ПодобратьТоварыПринятыеНаОтветственноеХранение(Команда)
	
	ПодоборТоваровПринятыхНаОтветственноеХранение();
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайлаЗавершение(АдресЗагруженныхДанных, ДополнительныеПараметры) Экспорт
	
	Если ЗначениеЗаполнено(АдресЗагруженныхДанных) Тогда
		ПолучитьЗагруженныеТоварыИзХранилища(АдресЗагруженныхДанных);
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ВидыЗапасов

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ЦенообразованиеИСкидки

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

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

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

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

#Область ХозяйственныеОперации

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Функция ПредставлениеМестаХранения(Представление, ПредставлениеПрефикс)
	
	ШаблонРасширенногоПредставления = НСтр("ru = '%1, %2'");
	
	РасширенноеПредставление   = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонРасширенногоПредставления,
																						ПредставлениеПрефикс,
																						Представление);
	ПредставлениеМестаХранения = ?(ПустаяСтрока(ПредставлениеПрефикс),
									Представление,
									РасширенноеПредставление);
	
	Возврат ПредставлениеМестаХранения;
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтотОбъект);

	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
	СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
	СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");

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

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

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

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

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

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

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

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

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

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

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

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

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

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