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