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

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

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

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

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

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

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

&НаКлиенте
Процедура ПеренестиВДокумент(Команда)

	ПеренестиСтрокиВДокумент();

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

&НаКлиенте
Процедура ВыбратьСтроки(Команда)

	ОтметитьСтроки(Истина);

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

&НаКлиенте
Процедура ИсключитьСтроки(Команда)

	ОтметитьСтроки(Ложь);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ОтметитьСтроки(Значение)

	Для Каждого СтрокаТЧ Из ТаблицаТовары.НайтиСтроки(Новый Структура("СтрокаВыбрана", Не Значение)) Цикл

		СтрокаТЧ.СтрокаВыбрана = Значение;

	КонецЦикла;

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

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

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

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