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