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