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

файл

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ИсточникИнформацииОЦенахДляПечатиПриИзменении(Элемент)
	
	ИсточникИнформацииОЦенахДляПечатиПриИзмененииСервер();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОтвязатьОтЗаказа(Команда)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьЗависимыеРеквизитыФормыПоЗаказу(ЭлементыФормы, Товары, НадписьРасхождениеЗаказ,
	ОтгрузкаБезПереходаПраваСобственности25)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура УстановитьВидимостьНаправленияДеятельности()

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

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

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

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

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

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

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

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

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

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

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

	ДенежныеСредстваСервер.УстановитьВидимостьЭлементовПоМассиву(
		Элементы,
		МассивВсехРеквизитов,
		МассивРеквизитовОперации);
	
КонецПроцедуры

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

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

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

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

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

&НаКлиенте
Процедура ОповеститьОбОкончанииОтвязкиСтрок(КоличествоОтработанныхСтрок, СтрокиОтвязаны = Истина)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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