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

файл

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

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	МодельФормированияСтоимостиПриИзменении(Истина);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ЗаписатьИЗакрыть(Команда)
	
	// СтандартныеПодсистемы.ЗамерПроизводительности
	ОценкаПроизводительностиКлиент.ЗамерВремени(
		"Обработка.ОформлениеПроизводстваБезЗаказов.Форма.ФормаНастройкаМоделиФормированияСтоимости.Команда.ЗаписатьИЗакрыть");
	// Конец СтандартныеПодсистемы.ЗамерПроизводительности
	
	ЗаписатьНаСервере();
	Закрыть();
	
КонецПроцедуры

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

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

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

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

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

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

&НаКлиенте
Процедура МодельФормированияСтоимостиПриИзменении(Инициализация = Ложь)

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

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

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

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