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