Оприходование излишков отгруженных товаров / Форма документа / Модуль формы

файл

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	//++ НЕ УТ

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

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

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

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

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

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

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

	//++ НЕ УТ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

		ОписаниеОповещения = Новый ОписаниеОповещения("РаспоряжениеВыборКлиент", ЭтотОбъект);
		ОткрытьПодборРаспоряжения(ОписаниеОповещения);

	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область РаботаСКонтрагентами

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

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

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

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

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

#Область ЗаполнениеПоРаспоряжению

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

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

&НаСервере
Процедура ПредставлениеРаспоряженияСервер()
	
	Если ЗначениеЗаполнено(Объект.Распоряжение) Тогда
		РаспоряжениеПредставление = СтроковыеФункции.ФорматированнаяСтрока(
										"<a href='ОткрытьРаспоряжение'>%1</a> <a href='ВыбратьРаспоряжение'>%2</a>",
										Строка(Объект.Распоряжение),
										НСтр("ru = 'Изменить'"));
	Иначе
		РаспоряжениеПредставление = СтроковыеФункции.ФорматированнаяСтрока(
										"‹%1› <a href='ВыбратьРаспоряжение'>%2</a>",
										НСтр("ru = 'не выбрано'"),
										НСтр("ru = 'Выбрать'")); 
	КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
	
	ЗапретитьПоступлениеТоваровБезНомеровГТД = ПолучитьФункциональнуюОпцию("ЗапретитьПоступлениеТоваровБезНомеровГТД");
	ИспользоватьНаправленияДеятельности =
		ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности");
	ИспользоватьСоглашенияСКлиентами         = ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");
	ИспользоватьПартнеровКакКонтрагентов     = ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровКакКонтрагентов");

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОткрытьПодборРаспоряжения(ОписаниеОповещения)

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

	ОткрытьФорму("Документ.ОприходованиеИзлишковОтгруженныхТоваров.Форма.ФормаВыбораРаспоряжения",
	    ПараметрыФормы,
	    ЭтотОбъект,
	    ,
	    ,
	    ,
	    ОписаниеОповещения,
	    РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);

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

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

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

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

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

#Область СтандартныеПодсистемы_ПодключаемыеКоманды

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

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

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

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

#Область СтандартныеПодсистемы_Свойства

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

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

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

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

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

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

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