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

файл

//++ Устарело_Производство21
#Область ОбработчикиСобытийФормы

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОтборРабочийЦентрПриИзменении(Элемент)
	
	РабочийЦентрПриИзмененииВызовСервера();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ЗаполнитьСписокРаспоряжений()
	
	
	Возврат; // В УТ и КА процедура пустая
	
КонецПроцедуры

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

#Область ФормированиеВыпуска

&НаКлиенте
Процедура СоздатьНаОсновании()

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

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

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

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

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

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

	СтандартныеПодсистемыСервер.УстановитьУсловноеОформлениеПоляДата(ЭтотОбъект, "Список.Дата", Элементы.СписокДата.Имя);

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

&НаСервере
Функция ОбработатьПараметрыФормы(ПараметрыФормы)

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

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


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

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

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

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

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

#КонецОбласти
//-- Устарело_Производство21

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