#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
НавигационнаяСсылка = "e1cib/list/Документ.ВыработкаСотрудников";
ПравоДоступа = ПравоДоступа("Изменение", Метаданные.Документы.ВыработкаСотрудников);
Если Не ПравоДоступа Тогда
Элементы.БригадныеНарядыГруппаСоздатьГенерируемая.Видимость = Ложь;
Элементы.ГруппаТрудозатратыКОформлению.Видимость = Ложь;
КонецЕсли;
ИзменитьВыделенныеДоступна = ПроизводствоСервер.ДоступнаКомандаИзменитьВыделенные(Метаданные.Документы.ВыработкаСотрудников);
Элементы.БригадныеНарядыИзменитьВыделенные.Видимость = ИзменитьВыделенныеДоступна;
Элементы.БригадныеНарядыКонтекстноеМенюИзменитьВыделенные.Видимость = ИзменитьВыделенныеДоступна;
ИспользоватьПериодичностьОформленияВыработки = Константы.ИспользоватьПериодичностьОформленияВыработки.Получить();
Если НЕ ИспользоватьПериодичностьОформленияВыработки Тогда
Элементы.ПериодичностьОформленияВыработки.ПодсказкаВвода = "";
Периодичность = Перечисления.ПериодичностьОформленияВыработкиСотрудников.Месяц;
КонецЕсли;
Если Не ОбработатьПараметрыФормы(Параметры) Тогда
ПараметрыОтбора = ХранилищеНастроекДанныхФорм.Загрузить("ВыработкаСотрудниковФормаСписка", "ПараметрыОтбора");
Если ЗначениеЗаполнено(ПараметрыОтбора) Тогда
ЗаполнитьЗначенияСвойств(ЭтаФорма, ПараметрыОтбора);
КонецЕсли;
КонецЕсли;
Если Не ЗначениеЗаполнено(Период) Тогда
Период = ТекущаяДатаСеанса();
КонецЕсли;
Если Не ЗначениеЗаполнено(РежимОформления) Тогда
РежимОформления = "ВключатьВПериодВыполненияРабот";
КонецЕсли;
ТекстЗаголовкаСуммы = НСтр("ru = 'Сумма (%1)'");
Элементы.ТрудозатратыКОформлениюСумма.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ТекстЗаголовкаСуммы,
Константы.ВалютаРасценокВидовРабот.Получить());
СгенерироватьКомандыСоздания();
ПриИзмененииОтборов();
ИспользуемыеТипыДокументов = Новый Массив();
ИспользуемыеТипыДокументов.Добавить(Тип("ДокументСсылка.ВыработкаСотрудников"));
ИспользуемыеТипыДокументов.Добавить(Тип("ДокументСсылка.Сторно"));
ПараметрыРазмещения = ПодключаемыеКоманды.ПараметрыРазмещения();
ПараметрыРазмещения.Источники = Новый ОписаниеТипов(ИспользуемыеТипыДокументов);
ПараметрыРазмещения.КоманднаяПанель = Элементы.БригадныеНарядыКоманднаяПанель;
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ОтборТипыДокументов.Добавить(ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Метаданные.Документы.ВыработкаСотрудников));
ЗаполнитьРеквизитыФормыПриСоздании();
НастроитьКнопкиУправленияДокументами();
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект, Элементы.БригадныеНарядыКомандыФормы);
ПараметрыПриСозданииНаСервере = ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаСписка();
ПараметрыПриСозданииНаСервере.Форма = ЭтотОбъект;
ПараметрыПриСозданииНаСервере.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ПараметрыПриСозданииНаСервере.КолонкаСостоянияЭДО = Элементы.БригадныеНарядыПредставлениеСостояния;
ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаСписка(ПараметрыПриСозданииНаСервере);
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
БригадныеНаряды.Параметры.УстановитьЗначениеПараметра("ТипСсылки",
ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Документ.ВыработкаСотрудников"));
ОбщегоНазначенияУТ.ЗаменитьПолеСсылкаКонструкциейВыразитьПоТипамДокументов(Элементы.БригадныеНаряды,
Метаданные.Документы.ВыработкаСотрудников.ПолноеИмя());
СтандартныеПодсистемыСервер.УстановитьУсловноеОформлениеПоляДата(ЭтотОбъект, "БригадныеНаряды", "БригадныеНарядыДата");
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПередЗагрузкойДанныхИзНастроекНаСервере(Настройки)
Если Параметры.Свойство("Период")
И Не Настройки.Получить("Период") = Неопределено Тогда
Настройки.Удалить("Период");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
ПериодВыработкаСотрудников = Настройки.Получить("ПериодВыработкаСотрудников");
Если Не Параметры.Свойство("Период") Тогда
Период = Настройки.Получить("Период");
Если Не ЗначениеЗаполнено(Период) Тогда
Период = ТекущаяДатаСеанса();
КонецЕсли;
КонецЕсли;
УстановитьОтборПоПериоду();
ЗаполнитьТрудозатратыКОформлению();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
МесяцСтрока = ОбщегоНазначенияУТКлиент.ПолучитьПредставлениеПериодаРегистрации(Период);
ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Запись_ВыработкаСотрудников"
Или ИмяСобытия = "Запись_ПроизводствоБезЗаказа" Тогда
ЗаполнитьТрудозатратыКОформлению();
КонецЕсли;
Если ИмяСобытия = "Запись_ВыработкаСотрудников" Тогда
Элементы.БригадныеНаряды.Обновить();
КонецЕсли;
ПараметрыОповещенияЭДО = ОбменСКонтрагентамиКлиент.ПараметрыОповещенияЭДО_ФормаСписка();
ПараметрыОповещенияЭДО.Форма = ЭтотОбъект;
ПараметрыОповещенияЭДО.ИмяДинамическогоСписка = "БригадныеНаряды";
ПараметрыОповещенияЭДО.ЕстьОбработчикОбновленияВидимостиСостоянияЭДО = Истина;
ОбменСКонтрагентамиКлиент.ОбработкаОповещения_ФормаСписка(ИмяСобытия, Параметр, Источник, ПараметрыОповещенияЭДО);
КонецПроцедуры
&НаСервере
Процедура ПриСохраненииДанныхВНастройкахНаСервере(Настройки)
Настройки.Вставить("ПериодВыработкаСотрудников", ПериодВыработкаСотрудников);
Настройки.Вставить("Период", Период);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ПодразделениеПриИзменении(Элемент)
ПодразделениеПриИзмененииВызовСервера();
КонецПроцедуры
&НаКлиенте
Процедура ОтборВидНарядаПриИзменении(Элемент)
ВидНарядаПриИзмененииВызовСервера();
КонецПроцедуры
&НаКлиенте
Процедура БригадаПриИзменении(Элемент)
БригадаПриИзмененииВызовСервера();
КонецПроцедуры
&НаКлиенте
Процедура МесяцСтрокаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("МесяцСтрокаНачалоВыбораЗавершение", ЭтотОбъект);
ОбщегоНазначенияУТКлиент.НачалоВыбораПредставленияПериодаРегистрации(Элемент, СтандартнаяОбработка, Период, ЭтаФорма, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура МесяцСтрокаНачалоВыбораЗавершение(ВыбранныйПериод, ДополнительныеПараметры) Экспорт
Если ВыбранныйПериод <> Неопределено Тогда
Период = ВыбранныйПериод;
МесяцСтрока = ОбщегоНазначенияУТКлиент.ПолучитьПредставлениеПериодаРегистрации(Период);
КонецЕсли;
ЗаполнитьТрудозатратыКОформлению();
КонецПроцедуры
&НаКлиенте
Процедура МесяцСтрокаОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура МесяцСтрокаРегулирование(Элемент, Направление, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Период = ДобавитьМесяц(Период, Направление);
МесяцСтрока = ОбщегоНазначенияУТКлиент.ПолучитьПредставлениеПериодаРегистрации(Период);
ЗаполнитьТрудозатратыКОформлению();
КонецПроцедуры
&НаКлиенте
Процедура ПериодичностьОформленияВыработкиПриИзменении(Элемент)
ЗаполнитьТрудозатратыКОформлению();
КонецПроцедуры
&НаКлиенте
Процедура РежимОформленияПриИзменении(Элемент)
СохранитьПараметрыОтбора();
КонецПроцедуры
&НаКлиенте
Процедура БригадныеНарядыОбработкаПолученияНавигационнойСсылки(Элемент, Ключ, Представление, НавигационнаяСсылка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Ссылка = Элементы.БригадныеНаряды.ТекущиеДанные.Ссылка;
НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(Ссылка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыБригадныеНаряды
&НаКлиенте
Процедура БригадныеНарядыПриАктивизацииСтроки(Элемент)
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура БригадныеНарядыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Поле = Элементы.БригадныеНарядыПредставлениеСостояния Тогда
ОбменСКонтрагентамиКлиент.СостояниеЭДОНажатие_ФормаСписка(ВыбраннаяСтрока, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура БригадныеНарядыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, ЭтоГруппа, Параметр)
Если Копирование Тогда
ОбщегоНазначенияУТКлиент.СкопироватьЭлемент(Элемент);
Иначе
ОткрытьФорму("Документ.ВыработкаСотрудников.ФормаОбъекта");
КонецЕсли;
Отказ = Истина;
КонецПроцедуры
&НаКлиенте
Процедура БригадныеНарядыПередНачаломИзменения(Элемент, Отказ)
Отказ = Истина;
ОбщегоНазначенияУТКлиент.ИзменитьЭлемент(Элемент);
КонецПроцедуры
&НаКлиенте
Процедура БригадныеНарядыПередУдалением(Элемент, Отказ)
Отказ = Истина;
ОбщегоНазначенияУТКлиент.УстановитьПометкуУдаления(Элементы.БригадныеНаряды, Заголовок);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписокТрудозатратПроизводства
&НаКлиенте
Процедура ТрудозатратыКОформлениюВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТекущиеДанные = Элемент.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
Если Поле.Имя = "ТрудозатратыКОформлениюИсполнитель" Тогда
ПоказатьЗначение(Неопределено, ТекущиеДанные.Исполнитель);
ИначеЕсли Поле.Имя = "ТрудозатратыКОформлениюВидРабот" Тогда
ПоказатьЗначение(Неопределено, ТекущиеДанные.ВидРабот);
ИначеЕсли Поле.Имя = "ТрудозатратыКОформлениюПодразделение" Тогда
ПоказатьЗначение(Неопределено, ТекущиеДанные.Подразделение);
ИначеЕсли Поле.Имя = "ТрудозатратыКОформлениюРаспоряжение" Тогда
ПоказатьЗначение(Неопределено, ТекущиеДанные.Распоряжение);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура КомандаОбновитьДанные(Команда)
ЗаполнитьТрудозатратыКОформлению();
КонецПроцедуры
&НаКлиенте
Процедура КомандаРазвернутьПоРаспоряжениям(Команда)
РазвернутьПоРаспоряжениямПриИзмененииВызовСервера();
КонецПроцедуры
&НаКлиенте
Процедура КомандаОформитьПоРаспоряжению(Команда)
ОчиститьСообщения();
Если Элементы.ТрудозатратыКОформлению.ВыделенныеСтроки.Количество() = 0 Тогда
ПоказатьПредупреждение(Неопределено, НСтр("ru = 'Команда не может быть выполнена для указанного объекта.'"));
Возврат;
КонецЕсли;
ПараметрыОформления = ПараметрыОформленияНаСервере(Элементы.ТрудозатратыКОформлению.ВыделенныеСтроки);
Если ПараметрыОформления = Неопределено Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'По выбранным распоряжениям выработка сотрудников уже оформлена или оформление не требуется.'"));
Возврат;
КонецЕсли;
ПараметрыОформления.Вставить("Периодичность", Периодичность);
Если РежимОформления = "ВключатьВПериодВыполненияРабот" Тогда
ПараметрыОформления.Вставить("ВключатьВПериодВыполненияРабот", Истина);
Иначе
ПараметрыОформления.Вставить("ВключатьВПериодВыполненияРабот", Ложь);
КонецЕсли;
Если ПараметрыОформления.ТребуетсяОдинДокумент Тогда
ПараметрыОформления.Вставить("ЗаполнитьПоОтбору", Истина);
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ПараметрыОформления);
ОткрытьФорму("Документ.ВыработкаСотрудников.ФормаОбъекта", ПараметрыФормы);
Иначе
ПараметрыОформления.Вставить("НачалоПериода", НачалоМесяца(Период));
ПараметрыОформления.Вставить("КонецПериода", КонецМесяца(Период));
ДлительнаяОперация = СформироватьВФоне(ПараметрыОформления);
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ОписаниеОповещения = Новый ОписаниеОповещения("СформироватьДокументыЗавершение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОписаниеОповещения, ПараметрыОжидания);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьИнтервал(Команда)
Оповещение = Новый ОписаниеОповещения("УстановитьИнтервалЗавершение", ЭтотОбъект);
ОбщегоНазначенияУтКлиент.РедактироватьПериод(ПериодВыработкаСотрудников, , Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура КомандаСоздатьПерсональныйНаряд(Команда)
СоздатьНаряд(ПредопределенноеЗначение("Перечисление.ВидыБригадныхНарядов.Персональный"));
КонецПроцедуры
&НаКлиенте
Процедура КомандаСоздатьБригадныйНаряд(Команда)
СоздатьНаряд(ПредопределенноеЗначение("Перечисление.ВидыБригадныхНарядов.Бригадный"));
КонецПроцедуры
&НаКлиенте
Процедура СоздатьВыработкуПоЗаказу21(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьВыработкуБезЗаказа21(Команда)
СоздатьНаряд(ПредопределенноеЗначение("Перечисление.ВидыБригадныхНарядов.БригадныйБезЗаказа21"));
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьВыделенные(Команда)
Ссылки = Новый Массив;
Для каждого ВыбраннаяСтрока Из Элементы.БригадныеНаряды.ВыделенныеСтроки Цикл
ДанныеСтроки = Элементы.БригадныеНаряды.ДанныеСтроки(ВыбраннаяСтрока);
Ссылки.Добавить(ДанныеСтроки.Ссылка);
КонецЦикла;
Если Ссылки.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ГрупповоеИзменениеОбъектовКлиент.ИзменитьВыделенные(Ссылки);
КонецПроцедуры
&НаКлиенте
Процедура БригадныеНарядыПровести(Команда)
ОбщегоНазначенияУТКлиент.ПровестиДокументы(Элементы.БригадныеНаряды, Заголовок);
КонецПроцедуры
&НаКлиенте
Процедура БригадныеНарядыОтменитьПроведение(Команда)
ОбщегоНазначенияУТКлиент.ОтменаПроведения(Элементы.БригадныеНаряды, Заголовок);
КонецПроцедуры
&НаКлиенте
Процедура БригадныеНарядыОбновить(Команда)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ВыработкаСотрудников.Форма.ФормаСпискаДокументов.БригадныеНарядыОбновить");
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.БригадныеНаряды);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Элементы.БригадныеНаряды, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.БригадныеНаряды);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Элементы.БригадныеНаряды);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЭДО(Команда)
ЭлектронноеВзаимодействиеКлиент.ВыполнитьПодключаемуюКомандуЭДО(Команда, ЭтотОбъект, Элементы.БригадныеНаряды);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьВидимостьСостоянияЭДО()
ОбменСКонтрагентамиКлиент.ОбработчикОбновленияВидимостьСостоянияЭДО(ЭтотОбъект, Элементы.БригадныеНарядыПредставлениеСостояния);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область УправлениеФормой
&НаСервере
Процедура СгенерироватьКомандыСоздания()
КомандыСоздания = Новый Массив;
КомандыСоздания.Добавить("СоздатьБригадныйНаряд");
КомандыСоздания.Добавить("СоздатьПерсональныйНаряд");
КомандыСоздания.Добавить("СоздатьВыработкуБезЗаказа");
ИспользуетсяПроизводство22 = ПолучитьФункциональнуюОпцию("ИспользоватьУправлениеПроизводством2_2");
ШаблонЗаголовка = НСтр("ru = '%1 (2.1)'");
Для Каждого КомандаСоздания Из КомандыСоздания Цикл
НоваяКнопка = Элементы.Добавить(КомандаСоздания, Тип("КнопкаФормы"), Элементы.БригадныеНарядыГруппаСоздатьГенерируемая);
НоваяКнопка.ИмяКоманды = КомандаСоздания;
Если ИспользуетсяПроизводство22
И (КомандаСоздания = "СоздатьВыработкуБезЗаказа"
Или КомандаСоздания = "СоздатьВыработкуПоЗаказу") Тогда
НоваяКнопка.Заголовок = СтрШаблон(ШаблонЗаголовка, Команды.Найти(КомандаСоздания).Заголовок);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область Отборы
&НаСервере
Процедура ПриИзмененииОтборов()
УстановитьОтборПоПодразделению();
УстановитьОтборПоВидуНаряда();
УстановитьОтборПоБригаде();
ЗаполнитьТрудозатратыКОформлению();
СохранитьПараметрыОтбора();
КонецПроцедуры
&НаСервере
Процедура СохранитьПараметрыОтбора()
ПараметрыОтбора = Новый Структура("Бригада,ОтборВидНаряда,Подразделение,РежимОформления,Период");
ЗаполнитьЗначенияСвойств(ПараметрыОтбора, ЭтаФорма);
ХранилищеНастроекДанныхФорм.Сохранить("ВыработкаСотрудниковФормаСписка", "ПараметрыОтбора", ПараметрыОтбора);
КонецПроцедуры
&НаСервере
Процедура ПодразделениеПриИзмененииВызовСервера()
УстановитьОтборПоПодразделению();
ЗаполнитьТрудозатратыКОформлению();
СохранитьПараметрыОтбора();
КонецПроцедуры
&НаСервере
Процедура ВидНарядаПриИзмененииВызовСервера()
УстановитьОтборПоВидуНаряда();
ЗаполнитьТрудозатратыКОформлению();
СохранитьПараметрыОтбора();
КонецПроцедуры
&НаСервере
Процедура БригадаПриИзмененииВызовСервера()
УстановитьОтборПоБригаде();
ЗаполнитьТрудозатратыКОформлению();
СохранитьПараметрыОтбора();
КонецПроцедуры
&НаСервере
Процедура РазвернутьПоРаспоряжениямПриИзмененииВызовСервера()
ОтображатьРаспоряжения = НЕ ОтображатьРаспоряжения;
Элементы.ТрудозатратыКОформлениюРазвернутьПоРаспоряжениям.Пометка = ОтображатьРаспоряжения;
ЗаполнитьТрудозатратыКОформлению();
КонецПроцедуры
&НаСервере
Процедура УстановитьОтборПоПодразделению()
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
БригадныеНаряды,
"Подразделение",
Подразделение,
ВидСравненияКомпоновкиДанных.Равно,
,
ЗначениеЗаполнено(Подразделение));
КонецПроцедуры
&НаСервере
Процедура УстановитьОтборПоБригаде()
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
БригадныеНаряды,
"Бригада",
Бригада,
ВидСравненияКомпоновкиДанных.Равно,
,
ЗначениеЗаполнено(Бригада));
КонецПроцедуры
&НаСервере
Процедура УстановитьОтборПоВидуНаряда()
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
БригадныеНаряды,
"ВидНаряда",
ОтборВидНаряда,
ВидСравненияКомпоновкиДанных.Равно,
,
ЗначениеЗаполнено(ОтборВидНаряда));
КонецПроцедуры
#КонецОбласти
#Область ЗаполнениеДанными
&НаСервере
Процедура ЗаполнитьТрудозатратыКОформлению()
ТрудозатратыКОформлению.Очистить();
СтруктураОтбора = Новый Структура;
Если ЗначениеЗаполнено(Подразделение) Тогда
СтруктураОтбора.Вставить("Подразделение", Подразделение);
КонецЕсли;
Если ЗначениеЗаполнено(Бригада) Тогда
СтруктураОтбора.Вставить("Бригада", Бригада);
КонецЕсли;
Если ЗначениеЗаполнено(ОтборВидНаряда) Тогда
СтруктураОтбора.Вставить("ВидНаряда", ОтборВидНаряда);
КонецЕсли;
СтруктураОтбора.Вставить("НачалоПериода", НачалоМесяца(Период));
СтруктураОтбора.Вставить("КонецПериода", КонецМесяца(Период));
СтруктураОтбора.Вставить("Периодичность", Периодичность);
СтруктураОтбора.Вставить("СворачиватьРаспоряжения", Не ОтображатьРаспоряжения);
КОформлению = Документы.ВыработкаСотрудников.ТрудозатратыКОформлению(СтруктураОтбора);
Таблица = КОформлению.Выгрузить();
Таблица.Свернуть("ВидНаряда,Подразделение,Организация,Распоряжение,Период,НачалоПериода,КонецПериода,ДатаВыполнения,Бригада,Исполнитель,Работник","Сумма");
ТрудозатратыКОформлению.Загрузить(Таблица);
ТрудозатратыКОформлению.Сортировать("НачалоПериода");
Для Каждого Строка Из ТрудозатратыКОформлению Цикл
Строка.Период.ДатаНачала = Строка.НачалоПериода;
Строка.Период.ДатаОкончания = Строка.КонецПериода;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область ФормированиеНарядов
&НаКлиенте
Процедура СоздатьНаряд(ВидНаряда)
ЗначенияЗаполнения = Новый Структура;
ЗначенияЗаполнения.Вставить("ВидНаряда", ВидНаряда);
Если ЗначениеЗаполнено(Подразделение) Тогда
ЗначенияЗаполнения.Вставить("Подразделение", Подразделение);
КонецЕсли;
Если ЗначениеЗаполнено(Бригада) Тогда
ЗначенияЗаполнения.Вставить("Бригада", Бригада);
КонецЕсли;
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЗначенияЗаполнения);
ОткрытьФорму("Документ.ВыработкаСотрудников.ФормаОбъекта", ПараметрыФормы);
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервере
Функция ОбработатьПараметрыФормы(ПараметрыФормы)
ПараметрыОбработаны = Ложь;
Если ПараметрыФормы.Свойство("СтруктураБыстрогоОтбора") Тогда
ПараметрыФормы.СтруктураБыстрогоОтбора.Свойство("Бригада", Бригада);
ПараметрыФормы.СтруктураБыстрогоОтбора.Свойство("ВидНаряда", ОтборВидНаряда);
ПараметрыФормы.СтруктураБыстрогоОтбора.Свойство("Подразделение", Подразделение);
ПараметрыОбработаны = Истина;
Возврат ПараметрыОбработаны;
КонецЕсли;
Если ПараметрыФормы.Свойство("Подразделение") Тогда
Подразделение = ПараметрыФормы.Подразделение;
ПараметрыОбработаны = Истина;
КонецЕсли;
Если ПараметрыФормы.Свойство("Период") Тогда
Период = ПараметрыФормы.Период;
ПараметрыОбработаны = Истина;
КонецЕсли;
Если ПараметрыФормы.Свойство("РежимОформления") Тогда
РежимОформления = ПараметрыФормы.РежимОформления;
ПараметрыОбработаны = Истина;
КонецЕсли;
Если ПараметрыФормы.Свойство("ПерейтиКСписку") Тогда
Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ГруппаБригадныеНаряды;
КонецЕсли;
Возврат ПараметрыОбработаны;
КонецФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТрудозатратыКОформлениюДата.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТрудозатратыКОформлениюРаспоряжение.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТрудозатратыКОформлениюИсполнитель.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтображатьРаспоряжения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТрудозатратыКОформлениюБригада.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтображатьРаспоряжения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТрудозатратыКОформлениюБригада.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТрудозатратыКОформлению.Бригада");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<работники>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТрудозатратыКОформлениюРаспоряжение.Имя);
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
КонецПроцедуры
#КонецОбласти
#Область ЖурналДокументов
&НаСервере
Процедура ЗаполнитьРеквизитыФормыПриСоздании()
ТаблицаЗначенийДоступно = Документы.ВыработкаСотрудников.ИнициализироватьХозяйственныеОперацииИДокументы(
ХозяйственныеОперацииИДокументы.Выгрузить());
ХозяйственныеОперацииИДокументы.Загрузить(ТаблицаЗначенийДоступно);
КонецПроцедуры
&НаСервере
Процедура НастроитьКнопкиУправленияДокументами()
СтруктураПараметров = ОбщегоНазначенияУТ.СтруктураПараметровНастройкиКнопокУправленияДокументами();
СтруктураПараметров.Форма = ЭтотОбъект;
СтруктураПараметров.ИмяГруппыСоздать = "БригадныеНарядыГруппаСоздатьГенерируемая";
СтруктураПараметров.ИмяГруппыСоздатьКонтекст = "БригадныеНарядыГруппаСоздатьГенерируемаяКонтекст";
СтруктураПараметров.ИмяКнопкиСкопировать = "БригадныеНарядыСкопировать";
СтруктураПараметров.ИмяКнопкиСкопироватьКонтекстноеМеню = "БригадныеНарядыКонтекстноеМенюСкопировать";
СтруктураПараметров.ИмяКнопкиИзменить = "БригадныеНарядыИзменить";
СтруктураПараметров.ИмяКнопкиИзменитьКонтекстноеМеню = "БригадныеНарядыКонтекстноеМенюИзменить";
СтруктураПараметров.ИмяКнопкиПровести = "БригадныеНарядыПровести";
СтруктураПараметров.ИмяКнопкиПровестиКонтекстноеМеню = "БригадныеНарядыКонтекстноеМенюПровести";
СтруктураПараметров.ИмяКнопкиОтменаПроведения = "БригадныеНарядыОтменаПроведения";
СтруктураПараметров.ИмяКнопкиОтменаПроведенияКонтекстноеМеню = "БригадныеНарядыКонтекстноеМенюОтменаПроведения";
СтруктураПараметров.ИмяКнопкиУстановитьПометкуУдаления = "БригадныеНарядыУстановитьСнятьПометкуУдаления";
СтруктураПараметров.ИмяКнопкиУстановитьПометкуУдаленияКонтекстноеМеню = "БригадныеНарядыКонтекстноеМенюУстановитьСнятьПометкуУдаления";
ОбщегоНазначенияУТ.НастроитьКнопкиУправленияДокументами(СтруктураПараметров);
Элементы[СтруктураПараметров.ИмяГруппыСоздать].Картинка = БиблиотекаКартинок.СоздатьЭлементСписка;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормыСлужебные
&НаКлиенте
Процедура УстановитьИнтервалЗавершение(ВыбранноеЗначение, ДополнительныеПараметры) Экспорт
Если ВыбранноеЗначение = Неопределено Тогда
Возврат;
КонецЕсли;
УстановитьОтборПоПериоду();
КонецПроцедуры
&НаСервере
Процедура УстановитьОтборПоПериоду()
БригадныеНаряды.Параметры.УстановитьЗначениеПараметра("НачалоПериода", ПериодВыработкаСотрудников.ДатаНачала);
БригадныеНаряды.Параметры.УстановитьЗначениеПараметра("КонецПериода", ПериодВыработкаСотрудников.ДатаОкончания);
КонецПроцедуры
&НаСервере
Функция СформироватьВФоне(СтруктураОтбора)
ИмяПроцедуры = "Документы.ВыработкаСотрудников.СформироватьДокументы";
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.ОжидатьЗавершение = 0;
Возврат ДлительныеОперации.ВыполнитьВФоне(ИмяПроцедуры, СтруктураОтбора, ПараметрыВыполнения);
КонецФункции
&НаКлиенте
Процедура СформироватьДокументыЗавершение(Параметры, ДопПараметры) Экспорт
Результат = ПолучитьИзВременногоХранилища(Параметры.АдресРезультата);
Если Параметры.Статус = "Ошибка" Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'При оформлении документов возникла ошибка: %1'"),
Результат.ПодробноеПредставлениеОшибки));
ИначеЕсли Результат = Неопределено Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'При оформлении документов возникла неклассифицированная ошибка'"));
ИначеЕсли Результат.КоличествоДокументов > 0 Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ОбновитьДанныеСписков", ЭтаФорма);
ОткрытьФорму("Документ.ВыработкаСотрудников.Форма.ФормаСпискаНовыхДокументов",
Результат, ЭтаФорма,,,,ОписаниеОповещения);
Иначе
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'Групповое оформление недоступно. Выберете нужных исполнителей и заполните документы вручную'"));
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПараметрыОформленияНаСервере(Знач Строки)
Возврат ОперативныйУчетПроизводстваВызовСервера.ПараметрыОформленияВыработкиСотрудников(Неопределено, Строки, ТрудозатратыКОформлению);
КонецФункции
&НаКлиенте
Процедура ОбновитьДанныеСписков(Результат = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
ЗаполнитьТрудозатратыКОформлению();
КонецПроцедуры
#КонецОбласти
#КонецОбласти