Распределение материалов и работ / Подбор по выполненным этапам графика производства / Модуль формы

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

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

	УстановитьУсловноеОформление();
	
	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;
	
	Параметры.Свойство("Назначение", Назначение);
	Параметры.Свойство("Назначение", НазначениеПрежнее);
	
	ПериодНачало			= Параметры.ПериодНачало;
	ПериодОкончание 		= Параметры.ПериодОкончание;
	
	Подразделение	 		= Параметры.Подразделение;
	ПодразделениеПрежнее	= Параметры.Подразделение;
	
	Организация	 			= Параметры.Организация;
	Документ				= Параметры.Документ;
	
	ИспользуетсяАналитическийУчетПоГруппамПродукции = ПолучитьФункциональнуюОпцию("АналитическийУчетПоГруппамПродукции");
	ПартионныйУчетВерсии22 = РасчетСебестоимостиПовтИсп.ПартионныйУчетВерсии22(НачалоМесяца(ТекущаяДатаСеанса()));
	
	//++ Устарело_Переработка24
	ДоступноРаспределениеНаПереработку =
		ПолучитьФункциональнуюОпцию("ИспользоватьПроизводствоНаСтороне")
		И Не ПартионныйУчетВерсии22;
	//-- Устарело_Переработка24
	
	ТипЗаказа = "ЗаказуНаПроизводство";
	УстановитьТипЗаказа();
	ЗаполнитьТаблицуСервер();
	Элементы.ЭтапыТекущегоМесяца.Заголовок = 
		СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НСтр("ru = 'Показывать только этапы текущего месяца (%1)'"), 
				Формат(ПериодНачало, "ДФ='MMMM yyyy'"));
	
	УстановитьВидимость();

	СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПодразделениеПриИзменении(Элемент)
	
	Если Подразделение <> ПодразделениеПрежнее Тогда
		ЗаполнитьТаблицуСервер();
		ПодразделениеПрежнее = Подразделение;
	КонецЕсли;
	
КонецПроцедуры

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

&НаКлиенте
Процедура НазначениеПриИзменении(Элемент)
	
	Если Назначение <> НазначениеПрежнее Тогда
		ЗаполнитьТаблицуСервер();
		НазначениеПрежнее = Назначение;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаказПриИзменении(Элемент)
	
	Если Заказ <> ЗаказПрежний Тогда
		ЗаполнитьТаблицуСервер();
		ЗаказПрежний = Заказ;
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура ИсключитьСтрокиЭтапы(Команда)
	
	ОтметитьСтроки(Ложь);
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ИсключитьСтрокиВыпуск(Команда)
	
	ОтметитьСтроки(Ложь);
	
КонецПроцедуры

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

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

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

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

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

	УсловноеОформление.Элементы.Очистить();

	//

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

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

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

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

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

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

	Если Элементы.ЭтапыГрафикаПроизводства.ВыделенныеСтроки.Количество() > 1 Тогда
		Для каждого ИндексСтроки Из Элементы.ЭтапыГрафикаПроизводства.ВыделенныеСтроки Цикл
			СтрокаПроизводство = Элементы.ЭтапыГрафикаПроизводства.ДанныеСтроки(ИндексСтроки);
			СтрокаПроизводство.СтрокаВыбрана = Пометка;
		КонецЦикла;
	Иначе
		Для каждого СтрокаПроизводство Из ЭтаФорма.ЭтапыГрафикаПроизводства Цикл
			СтрокаПроизводство.СтрокаВыбрана = Пометка;
		КонецЦикла; 
	КонецЕсли;

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

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

&НаКлиенте
Процедура ТипЗаказаПриИзменении(Элемент)
	
	Если ТипЗаказа <> ТипЗаказаПрежний Тогда
		Заказ = Неопределено;
		УстановитьТипЗаказа();
		ТипЗаказаПрежний = ТипЗаказа;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура УстановитьТипЗаказа()
	
	//++ Устарело_Переработка24
	Если ТипЗаказа = "ЗаказуПереработчику" Тогда
		Элементы.Заказ.ОграничениеТипа = Новый ОписаниеТипов("ДокументСсылка.ЗаказПереработчику");
	//-- Устарело_Переработка24


	//++ Устарело_Переработка24
	КонецЕсли;
	//-- Устарело_Переработка24
	
	ЗаполнитьТаблицуСервер();
	
КонецПроцедуры

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

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

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