#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
Процедура ПровестиПоУчетам(ДокументСсылка, РежимПроведения, Отказ, ВидыУчетов = Неопределено, Движения = Неопределено, Объект = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
СтруктураВидовУчета = ПроведениеСервер.СтруктураВидовУчета();
ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвиженийПоВидамУчета(РежимПроведения, ДокументСсылка, СтруктураВидовУчета, ВидыУчетов, Движения, Объект, Отказ);
Если Объект <> Неопределено И ВидыУчетов = Неопределено Тогда
ЗарплатаКадрыРасширенный.ИнициализироватьОтложеннуюРегистрациюВторичныхДанныхПоДвижениямДокумента(Движения);
КонецЕсли;
РеквизитыДляПроведения = РеквизитыДляПроведения(ДокументСсылка);
ДанныеДляПроведения = ДанныеДляПроведения(ДокументСсылка, СтруктураВидовУчета);
ПроведениеСервер.ОтключитьПроверкуДатыЗапретаИзменения(Движения, ЗначениеЗаполнено(РеквизитыДляПроведения.ИсправленныйДокумент));
РезультатИсправления = ИсправлениеДокументовЗарплатаКадры.ПриПроведенииИсправления(ДокументСсылка,
Движения, РежимПроведения, Отказ, РеквизитыДляПроведения, СтруктураВидовУчета, Объект);
Если СтруктураВидовУчета.ОстальныеВидыУчета Тогда
ОстаткиОтпусков.СформироватьДвиженияПериодовОтпусков(Движения, РеквизитыДляПроведения.Ссылка, ДанныеДляПроведения.ПериодыОтпусков);
ПараметрыСостояния = СостоянияСотрудников.ПараметрыСостоянияФизическогоЛица();
ПараметрыСостояния.ДокументСсылка = РеквизитыДляПроведения.Ссылка;
ПараметрыСостояния.Организация = РеквизитыДляПроведения.Организация;
ПараметрыСостояния.Начало = РеквизитыДляПроведения.ДатаНачала;
ПараметрыСостояния.ОкончаниеПредположительно = РеквизитыДляПроведения.ДатаОкончания;
ПараметрыСостояния.Состояние = Перечисления.СостоянияСотрудника.ОтпускПоУходуЗаРебенком;
Если Не РеквизитыДляПроведения.НеНачислятьЗарплатуИНеВыплачиватьАвансВоВремяОтпуска Тогда
ПараметрыСостояния.Состояние = Перечисления.СостоянияСотрудника.РаботаВОтпускеПоУходуЗаРебенком;
КонецЕсли;
СостоянияСотрудников.ЗарегистрироватьСостояниеФизическогоЛица(Движения, РеквизитыДляПроведения.Сотрудник, ПараметрыСостояния);
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьРасчетЗарплатыРасширенная") Тогда
Возврат;
КонецЕсли;
ЗарплатаКадрыРасширенный.УстановитьВремяРегистрацииДокумента(Движения, ДанныеДляПроведения.СотрудникиДаты, РеквизитыДляПроведения.Ссылка);
КонецЕсли;
Если РеквизитыДляПроведения.НачисленияУтверждены Тогда
Если РеквизитыДляПроведения.РассчитатьЗарплату Тогда
Если СтруктураВидовУчета.ОстальныеВидыУчета Тогда
РасчетЗарплатыРасширенный.СформироватьДвиженияНачислений(Движения, Отказ, РеквизитыДляПроведения.Организация, КонецМесяца(РеквизитыДляПроведения.ПериодРегистрации), ДанныеДляПроведения.Начисления, ДанныеДляПроведения.ПоказателиНачислений, Истина);
РасчетЗарплатыРасширенный.СформироватьДвиженияРаспределенияПоТерриториямУсловиямТруда(Движения, Отказ, РеквизитыДляПроведения.Ссылка, РеквизитыДляПроведения.РаспределениеПоТерриториямУсловиямТруда);
РасчетЗарплатыРасширенный.СформироватьДвиженияРаспределенияРезультатовНачислений(Движения, Отказ, РеквизитыДляПроведения.Ссылка, РеквизитыДляПроведения.РаспределениеРезультатовНачислений);
ПерерасчетЗарплаты.СформироватьДвиженияИсходныеДанныхПерерасчетов(Движения, РеквизитыДляПроведения.Организация, РеквизитыДляПроведения.ПериодРегистрации, ДанныеДляПроведения.Начисления);
РасчетЗарплатыРасширенный.СформироватьДвиженияУдержаний(
Движения, Отказ, РеквизитыДляПроведения.Организация, КонецМесяца(РеквизитыДляПроведения.ПериодРегистрации), ДанныеДляПроведения.Удержания, ДанныеДляПроведения.ПоказателиУдержаний);
ИсполнительныеЛисты.СформироватьУдержанияПоИсполнительнымДокументам(Движения, ДанныеДляПроведения.УдержанияПоИсполнительнымДокументам);
РасчетЗарплатыРасширенный.СформироватьДвиженияУдержанийДоПределаПоСотрудникам(Движения, Отказ, РеквизитыДляПроведения.ПериодРегистрации, ДанныеДляПроведения.УдержанияДоПределаПоСотрудникам);
РасчетЗарплатыРасширенный.СформироватьЗадолженностьПоУдержаниямФизическихЛиц(Движения, ДанныеДляПроведения.ЗадолженностьПоУдержаниям);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплата");
Модуль.СформироватьДвиженияНачислений(Движения, Отказ, ДанныеДляПроведения, РеквизитыДляПроведения.ПериодРегистрации);
КонецЕсли;
ДанныеДляПроведенияУчетЗарплаты = ОтражениеЗарплатыВУчете.ОписаниеДанныеДляПроведения();
ДанныеДляПроведенияУчетЗарплаты.Движения = Движения;
ДанныеДляПроведенияУчетЗарплаты.Организация = РеквизитыДляПроведения.Организация;
ДанныеДляПроведенияУчетЗарплаты.ПериодРегистрации = РеквизитыДляПроведения.ПериодРегистрации;
ДанныеДляПроведенияУчетЗарплаты.ПланируемаяДатаВыплаты = РеквизитыДляПроведения.ДатаНачала - 1;
ДанныеДляПроведенияУчетЗарплаты.ПорядокВыплаты = РеквизитыДляПроведения.ПорядокВыплаты;
ДанныеДляПроведенияУчетЗарплаты.МенеджерВременныхТаблиц = ДанныеДляПроведения.МенеджерВременныхТаблиц;
УчетНачисленнойЗарплаты.ЗарегистрироватьНачисления(ДанныеДляПроведенияУчетЗарплаты, Отказ, ДанныеДляПроведения.НачисленияПоСотрудникам, Неопределено);
УчетНачисленнойЗарплаты.ЗарегистрироватьОтработанноеВремя(ДанныеДляПроведенияУчетЗарплаты, Отказ, ДанныеДляПроведения.ОтработанноеВремяПоСотрудникам, Истина);
ОтражениеЗарплатыВБухучетеРасширенный.ЗарегистрироватьНачисленияУдержания(ДанныеДляПроведенияУчетЗарплаты, Отказ,
ДанныеДляПроведения.НачисленияПоСотрудникам, ДанныеДляПроведения.УдержанияПоСотрудникам, Неопределено);
ОтражениеЗарплатыВБухучетеРасширенный.ЗарегистрироватьНачисленияУдержания(ДанныеДляПроведенияУчетЗарплаты, Отказ,
Неопределено, ДанныеДляПроведения.УдержанияЗаймов, Неопределено);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплата");
Модуль.ЗарегистрироватьНачисленияУдержания(Движения, Отказ, ДанныеДляПроведения, РеквизитыДляПроведения.ПериодРегистрации,
РеквизитыДляПроведения.ПорядокВыплаты, РеквизитыДляПроведения.ДатаНачала - 1);
Модуль.ЗарегистрироватьОтработанноеВремя(Движения, Отказ, ДанныеДляПроведения, РеквизитыДляПроведения.ПериодРегистрации, РеквизитыДляПроведения.ПорядокВыплаты);
КонецЕсли;
УчетНачисленнойЗарплаты.СоздатьВТРаспределениеНачисленийТекущегоДокумента(ДанныеДляПроведенияУчетЗарплаты);
ДатаОперацииПоНалогам = РеквизитыДляПроведения.ДатаНачала - 1;
УчетНДФЛ.СформироватьДоходыНДФЛПоКодамДоходовИзТаблицыЗначений(Движения, Отказ, РеквизитыДляПроведения.Организация, ДатаОперацииПоНалогам, ДанныеДляПроведения.МатериальнаяВыгода, Ложь, , ДокументСсылка);
ЗасчитыватьДанныеАвансов = Не (РезультатИсправления.ИсправлениеВТекущемПериоде И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РеквизитыДляПроведения.ИсправленныйДокумент, "РассчитатьЗарплату"));
УчетНДФЛРасширенный.ЗарегистрироватьДоходыИСуммыНДФЛПоВременнойТаблицеНачислений(
РеквизитыДляПроведения.Ссылка, Движения, Отказ, РеквизитыДляПроведения.Организация, РеквизитыДляПроведения.Дата, РеквизитыДляПроведения.ПериодРегистрации, РеквизитыДляПроведения.ПорядокВыплаты, РеквизитыДляПроведения.ДатаНачала - 1, ДанныеДляПроведения, Истина, , , , , "ВТНачисленияДляУчетаДоходовНДФЛ", ЗасчитыватьДанныеАвансов);
РасчетЗарплатыРасширенный.СформироватьДвиженияКорректировкиВыплатыПоВременнойТаблицеНачислений(Движения, Отказ, РеквизитыДляПроведения.Организация, РеквизитыДляПроведения.ПериодРегистрации, РеквизитыДляПроведения.ПорядокВыплаты, ДанныеДляПроведения, Истина);
ЗаймыСотрудникам.ЗарегистрироватьВзаиморасчетыПоЗаймам(Движения, ДанныеДляПроведения.ВзаиморасчетыПоЗаймам, Отказ);
УчетНДФЛ.СформироватьНалогиВычеты(Движения, Отказ, РеквизитыДляПроведения.Организация, ДатаОперацииПоНалогам, ДанныеДляПроведения.НалогНаМатериальнуюВыгоду);
УчетНачисленнойЗарплаты.ПодготовитьДанныеНДФЛКРегистрации(ДанныеДляПроведения.НалогНаМатериальнуюВыгоду, РеквизитыДляПроведения.Организация, ДатаОперацииПоНалогам);
УчетНачисленнойЗарплатыРасширенный.ЗарегистрироватьУдержания(ДанныеДляПроведенияУчетЗарплаты, Отказ, ДанныеДляПроведения.УдержанияПоСотрудникам);
УчетНачисленнойЗарплатыРасширенный.ЗарегистрироватьЗаймы(ДанныеДляПроведенияУчетЗарплаты, Отказ,
ДанныеДляПроведения.УдержанияЗаймов, ДанныеДляПроведения.НалогНаМатериальнуюВыгоду);
ОтражениеЗарплатыВБухучетеРасширенный.ЗарегистрироватьНачисленияУдержания(ДанныеДляПроведенияУчетЗарплаты, Отказ,
Неопределено, Неопределено, ДанныеДляПроведения.НДФЛПоСотрудникам);
Если ЗасчитыватьДанныеАвансов Тогда
УчетНачисленнойЗарплатыРасширенный.ЗаполнитьЗачетАвансаНДФЛВНаборахЗаписей(Движения, РеквизитыДляПроведения.ПериодРегистрации);
КонецЕсли;
ОтражениеЗарплатыВБухучетеРасширенный.ЗарегистрироватьНачисленияУдержания(ДанныеДляПроведенияУчетЗарплаты, Отказ,
Неопределено, Неопределено, ДанныеДляПроведения.НалогНаМатериальнуюВыгоду);
КонецЕсли;
Если СтруктураВидовУчета.СтраховыеВзносы Тогда
Если РезультатИсправления.ИсправлениеВТекущемПериоде Тогда
Движения.СтраховыеВзносыПоФизическимЛицам.ДополнительныеСвойства.Вставить("ВычитатьСторноЗаписи", Истина);
КонецЕсли;
УчетСтраховыхВзносов.СформироватьСведенияОДоходахСтраховыеВзносы(
Движения, Отказ, РеквизитыДляПроведения.Организация, РеквизитыДляПроведения.ПериодРегистрации, ДанныеДляПроведения.МенеджерВременныхТаблиц, Ложь, Истина, РеквизитыДляПроведения.Ссылка);
УчетСтраховыхВзносов.СформироватьИсчисленныеВзносы(Движения, Отказ, РеквизитыДляПроведения.Организация, РеквизитыДляПроведения.ПериодРегистрации, ДанныеДляПроведения.СтраховыеВзносы);
Если Не СтруктураВидовУчета.ОстальныеВидыУчета Тогда
КлючиВспомогательныхДвижений = ПроведениеРасширенныйСервер.ДополнитьКоллекциюВспомогательнымиДвижениями(Движения, РеквизитыДляПроведения.Ссылка, СтруктураВидовУчета);
КонецЕсли;
УчетСтраховыхВзносов.СформироватьСтраховыеВзносыПоФизическимЛицам(Движения, Отказ, РеквизитыДляПроведения.Организация, РеквизитыДляПроведения.ПериодРегистрации, РеквизитыДляПроведения.Ссылка, ДанныеДляПроведения.СтраховыеВзносы);
Если Не СтруктураВидовУчета.ОстальныеВидыУчета Тогда
КоллекцииБЗК.УдалитьКлючиСтруктуры(Движения, КлючиВспомогательныхДвижений);
КонецЕсли;
КонецЕсли;
Если СтруктураВидовУчета.ДанныеДляРасчетаСреднего Тогда
УчетСреднегоЗаработка.ЗарегистрироватьДанныеСреднегоЗаработка(Движения, Отказ, ДанныеДляПроведения.НачисленияДляСреднегоЗаработка);
КонецЕсли;
КонецЕсли;
Если СтруктураВидовУчета.ОстальныеВидыУчета Тогда
УчетПособийСоциальногоСтрахованияРасширенный.СформироватьДвиженияУсловийОплатыОтпускаПоУходуЗаРебенком(Движения, ДанныеДляПроведения.УсловияОплатыОтпускаПоУходуЗаРебенком);
СтруктураПлановыхНачислений = Новый Структура;
СтруктураПлановыхНачислений.Вставить("ДанныеОПлановыхНачислениях", ДанныеДляПроведения.ПлановыеНачисления);
СтруктураПлановыхНачислений.Вставить("ЗначенияПоказателей", ДанныеДляПроведения.ЗначенияПоказателей);
Если ДанныеДляПроведения.ПрименениеДополнительныхПоказателей <> Неопределено Тогда
СтруктураПлановыхНачислений.Вставить("ПрименениеДополнительныхПоказателей", ДанныеДляПроведения.ПрименениеДополнительныхПоказателей);
КонецЕсли;
РасчетЗарплаты.СформироватьДвиженияПлановыхНачислений(РеквизитыДляПроведения.Ссылка, Движения, СтруктураПлановыхНачислений);
РасчетЗарплатыРасширенный.СформироватьДвиженияПорядкаПересчетаТарифныхСтавок(Движения, ДанныеДляПроведения.ПорядокПересчетаТарифнойСтавки);
Если РеквизитыДляПроведения.НеНачислятьЗарплатуИНеВыплачиватьАвансВоВремяОтпуска Тогда
РасчетЗарплатыРасширенный.СформироватьДвиженияПримененияПлановыхНачислений(Движения, ДанныеДляПроведения.ПрименениеНачислений);
КонецЕсли;
ОтражениеЗарплатыВБухучетеРасширенный.СформироватьДвиженияКоэффициентыРаспределенияСреднегоЗаработка(Движения, ДанныеДляПроведения.КоэффициентыРаспределенияСреднегоЗаработка);
ОтражениеЗарплатыВБухучетеРасширенный.СформироватьПрекращениеБухучетаНачисленийСотрудников(РеквизитыДляПроведения.Ссылка, Движения, Движения.ПлановыеНачисления);
КонецЕсли;
Если СтруктураВидовУчета.ДанныеДляРасчетаСреднего Тогда
ПараметрыКорректировок = УчетПособийСоциальногоСтрахованияРасширенный.ПараметрыЗаписиКорректировокСреднегоЗаработкаФСС();
ЗаполнитьТаблицыКорректировок(РеквизитыДляПроведения.Ссылка, ПараметрыКорректировок);
УчетПособийСоциальногоСтрахованияРасширенный.ЗаписатьКорректировкиСреднегоЗаработкаФСС(
РеквизитыДляПроведения.Организация, РеквизитыДляПроведения.ОсновнойСотрудник, РеквизитыДляПроведения.ПериодРасчетаСреднегоЗаработкаНачало, РеквизитыДляПроведения.ПериодРасчетаСреднегоЗаработкаОкончание, ПараметрыКорректировок);
КонецЕсли;
КонецЕсли;
Если СтруктураВидовУчета.ОстальныеВидыУчета Тогда
УчетСтажаПФР.ЗарегистрироватьПериодыВУчетеСтажаПФР(Движения, ДанныеДляРегистрацииВУчетаСтажаПФР(РеквизитыДляПроведения.Ссылка)[РеквизитыДляПроведения.Ссылка]);
Если РеквизитыДляПроведения.ОсвобождатьСтавку Тогда
Сотрудники = КадровыйУчетРасширенный.МассивСотрудников(РеквизитыДляПроведения.Сотрудник, РеквизитыДляПроведения.Организация, РеквизитыДляПроведения.ДатаОкончания);
КадровыйУчетРасширенный.СформироватьДвиженияЗанятостиВременноОсвобожденныхПозицииШтатногоРасписания(
Движения, Сотрудники, РеквизитыДляПроведения.ДатаНачала, РеквизитыДляПроведения.ДатаОкончания, Истина);
КонецЕсли;
ОграничениеВзысканий.ЗарегистрироватьДанныеСохраняемогоЗаработка(Движения, Отказ, РеквизитыДляПроведения.ПериодРегистрации, РеквизитыДляПроведения.ПорядокВыплаты);
ПерерасчетЗарплаты.УдалитьПерерасчетыПоДополнительнымПараметрам(РеквизитыДляПроведения.Ссылка, ДополнительныеПараметры);
КонецЕсли;
ПроведениеРасширенныйСервер.ВыполнитьЗапланированныеКорректировкиДвижений(Движения);
ПроведениеСервер.ЗаписьДвиженийПоУчетам(Движения, СтруктураВидовУчета);
КонецПроцедуры
Функция СторнироватьПоУчетам(Движения, Регистратор, ИсправленныйДокумент, СтруктураВидовУчета, ДополнительныеПараметры) Экспорт
СторнироватьРасчеты = ДополнительныеПараметры.ОтменаДокумента Или ДополнительныеПараметры.РеквизитыДляПроведения.НачисленияУтверждены;
Если СтруктураВидовУчета.ОстальныеВидыУчета Тогда
УправлениеШтатнымРасписанием.СторнироватьДвиженияДокумента(Движения, ИсправленныйДокумент);
КонецЕсли;
Если (ДополнительныеПараметры.ОтменаДокумента Или ДополнительныеПараметры.ИсправлениеВТекущемПериоде)
И Не ДополнительныеПараметры.ИсправлениеДоначислением Тогда
Если СтруктураВидовУчета.ДанныеДляРасчетаСреднего И СторнироватьРасчеты Тогда
УчетСреднегоЗаработка.СторнироватьДвиженияДокумента(Движения, ИсправленныйДокумент);
УчетПособийСоциальногоСтрахованияРасширенный.СторнироватьДвиженияДокумента(Движения, ИсправленныйДокумент);
КонецЕсли;
Если СтруктураВидовУчета.ОстальныеВидыУчета Тогда
УправлениеШтатнымРасписанием.СторнироватьДвиженияДокумента(Движения, ИсправленныйДокумент);
КонецЕсли;
Если СтруктураВидовУчета.СтраховыеВзносы И СторнироватьРасчеты Тогда
УчетСтраховыхВзносовРасширенный.СторнироватьДвиженияДокумента(Движения, ИсправленныйДокумент, ДополнительныеПараметры);
КонецЕсли;
Если СтруктураВидовУчета.ОстальныеВидыУчета И СторнироватьРасчеты Тогда
Если ДополнительныеПараметры.ИсправлениеВТекущемПериоде Тогда
Если Не ДополнительныеПараметры.Свойство("СторнироватьЗарегистрированноеПриНачисленииАванса")
И (ДополнительныеПараметры.ОтменаДокумента Или Не ДополнительныеПараметры.РеквизитыДляПроведения.РассчитатьЗарплату)
И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ИсправленныйДокумент, "РассчитатьЗарплату") Тогда
ДополнительныеПараметры.Вставить("СторнироватьЗарегистрированноеПриНачисленииАванса", Истина)
КонецЕсли;
Если Не ДополнительныеПараметры.ОтменаДокумента
И ДополнительныеПараметры.РеквизитыДляПроведения.ПорядокВыплаты = Перечисления.ХарактерВыплатыЗарплаты.Аванс Тогда
РеквизитыИсправленного = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ИсправленныйДокумент, "ПорядокВыплаты");
Если ДополнительныеПараметры.РеквизитыДляПроведения.ПорядокВыплаты <> РеквизитыИсправленного.ПорядокВыплаты Тогда
УчетНачисленнойЗарплатыРасширенный.ЗапланироватьКопированиеСторноВАванс(Движения);
КонецЕсли;
КонецЕсли;
КонецЕсли;
РасчетЗарплатыРасширенный.СторнироватьДвиженияДокумента(Движения, ИсправленныйДокумент, ДополнительныеПараметры);
УчетНачисленнойЗарплатыРасширенный.СторнироватьДвиженияДокумента(Движения, ИсправленныйДокумент, ДополнительныеПараметры);
ОтражениеЗарплатыВБухучетеРасширенный.СторнироватьДвиженияДокумента(Движения, ИсправленныйДокумент);
УчетНДФЛРасширенный.СторнироватьДвиженияДокумента(Движения, ИсправленныйДокумент, ДополнительныеПараметры);
ИсправлениеДокументовЗарплатаКадры.СторнироватьДвиженияБезСпецификиУчетов(
Движения, ИсправленныйДокумент, ДополнительныеПараметры);
КонецЕсли;
КонецЕсли;
Возврат Истина;
КонецФункции
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(Сотрудник)";
КонецПроцедуры
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
Макеты = Метаданные.Документы.ОтпускПоУходуЗаРебенком.Макеты;
КадровыйУчетРасширенный.ДобавитьКомандуПечатиПриказаОПредоставленииОтпуска(КомандыПечати);
УчетПособийСоциальногоСтрахованияРасширенный.ДобавитьКомандуПечатиРасчетаСреднегоЗаработка(КомандыПечати, "Документ.ОтпускПоУходуЗаРебенком");
Если ПолучитьФункциональнуюОпцию("ИспользоватьРасчетЗарплатыРасширенная") Тогда
Макет = Макеты.ПФ_MXL_ЗаявлениеОНазначенииПособияПоУходуЗаРебенком_2024;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
КомандаПечати.МенеджерПечати = "Документ.ОтпускПоУходуЗаРебенком";
КомандаПечати.Идентификатор = Макет.Имя;
КомандаПечати.Представление = Макет.Представление();
КомандаПечати.Порядок = 30;
Макет = Макеты.ПФ_MXL_ЗаменаЛетРасчетногоПериода_2024;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
КомандаПечати.МенеджерПечати = "Документ.ОтпускПоУходуЗаРебенком";
КомандаПечати.Идентификатор = Макет.Имя;
КомандаПечати.Представление = Макет.Представление();
КомандаПечати.Порядок = 30;
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "ФиксПериодРасчетаСреднегоЗаработка", Истина);
КонецЕсли;
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "РасчетСреднегоЗаработка") Тогда
ДанныеДокументов = ДанныеДокументовДляПечатиРасчетаСреднегоЗаработкаФСС(МассивОбъектов);
ТабличныйДокумент = Обработки.ПечатьРасчетаСреднегоЗаработкаФСС.ТабличныйДокументРасчетаСреднегоЗаработка(
ДанныеДокументов,
ОбъектыПечати);
Если ТабличныйДокумент <> Неопределено Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"РасчетСреднегоЗаработка",
НСтр("ru = 'Расчет среднего заработка'"),
ТабличныйДокумент);
КонецЕсли;
КонецЕсли;
УправлениеПечатьюБЗК.Печать(
МассивОбъектов,
ПараметрыПечати,
КоллекцияПечатныхФорм,
ОбъектыПечати,
Документы.ОтпускПоУходуЗаРебенком);
КонецПроцедуры
Процедура ПриФормированииПечатнойФормы(КонтекстПечати) Экспорт
Макеты = Метаданные.Документы.ОтпускПоУходуЗаРебенком.Макеты;
Если КонтекстПечати.МетаданныеМакета = Макеты.ПФ_MXL_ЗаявлениеОНазначенииПособияПоУходуЗаРебенком_2024 Тогда
ПриПечатиЗаявленияОНазначенииПособияПоУходуЗаРебенком(КонтекстПечати);
ИначеЕсли КонтекстПечати.МетаданныеМакета = Макеты.ПФ_MXL_ЗаменаЛетРасчетногоПериода_2024 Тогда
ПриПечатиЗаменыЛетРасчетногоПериода(КонтекстПечати);
КонецЕсли;
КонецПроцедуры
Функция ОписаниеРазделовДанных() Экспорт
ВсеРазделы = МногофункциональныеДокументыБЗККлиентСервер.РазделыДанных();
ОписаниеРазделовДанных = Новый Соответствие();
ОписаниеРаздела = МногофункциональныеДокументыБЗККлиентСервер.НовыйОписаниеРазделаДанных();
ОписаниеРазделовДанных.Вставить(ВсеРазделы.КадровыеДанные, ОписаниеРаздела);
ОписаниеРаздела.РеквизитСостояние = "Проведен";
ОписаниеРаздела.РеквизитОтветсвенный = "Ответственный";
ОписаниеРаздела = МногофункциональныеДокументыБЗККлиентСервер.НовыйОписаниеРазделаДанных();
ОписаниеРазделовДанных.Вставить(ВсеРазделы.НачисленнаяЗарплата, ОписаниеРаздела);
ОписаниеРаздела.РеквизитСостояние = "НачисленияУтверждены";
ОписаниеРаздела.ТребуетсяУтверждениеПриПроведении = Истина;
ОписаниеРаздела.СообщениеДокументНеУтвержден = НСтр("ru = '%1 - документ не утвержден.'");
Возврат ОписаниеРазделовДанных;
КонецФункции
Функция ЗначенияДоступа(ДокументОбъект) Экспорт
Возврат МногофункциональныеДокументыБЗК.ЗначенияДоступаПоСоставуДокумента(
ДокументОбъект,
ДокументОбъект.Организация);
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
#Область ОбработчикиПравилРегистрации
Процедура ПриЗаполненииНастроекОбработчиковПравилРегистрации(Настройки) Экспорт
ЗарплатаКадрыРасширенныйСинхронизацияДанных.ДляОтбораПоОрганизации(Настройки);
ЗарплатаКадрыРасширенныйСинхронизацияДанных.ДляОбъектаСПрисоединеннымиФайлами(Настройки);
КонецПроцедуры
#КонецОбласти
Функция ОписаниеСоставаОбъекта() Экспорт
Возврат ЗарплатаКадрыСоставДокументов.ОписаниеСоставаОбъектаФизическоеЛицоВШапке("Сотрудник", "ОсновнойСотрудник");
КонецФункции
Функция ОписаниеРеквизитаКадровогоРешения() Экспорт
Возврат Метаданные.Документы.ОтпускПоУходуЗаРебенком.Реквизиты.Решение;
КонецФункции
#Область УчетПособий
Процедура ЗаполнитьЗаявлениеСотрудникаНаВыплатуПособияПоОснованию(ОтпускПоУходу, Заявление, РеквизитыДокумента, ДанныеДляРасчетаСреднегоЗаработка) Экспорт
ДанныеДляРасчетаСреднегоЗаработка = ДанныеДокументовДляРасчетаСреднегоЗаработкаФСС(ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ОтпускПоУходу)).Получить(ОтпускПоУходу);
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", ОтпускПоУходу);
Запрос.УстановитьПараметр("ИдентификаторСтроки", Заявление.ИдентификаторСтрокиОснования);
Запрос.УстановитьПараметр("ДатаВключенияРКПриРасчетеБольничного", УчетПособийСоциальногоСтрахования.ДатаВключенияРКПриРасчетеБольничного());
Запрос.Текст =
"ВЫБРАТЬ
| ШапкаДокумента.Организация КАК Организация,
| ШапкаДокумента.Сотрудник КАК Сотрудник,
| ШапкаДокумента.Номер КАК Номер,
| ШапкаДокумента.НомерПриказа КАК НомерПриказа,
| ШапкаДокумента.Дата КАК ДатаПриказаОПредоставленииОтпускаПоУходуЗаРебенком,
| ШапкаДокумента.ДатаНачала КАК ДатаНачалаОтпускаПоУходуЗаРебенком,
| ШапкаДокумента.ДатаОкончанияПособияДоПолутораЛет КАК ДатаОкончанияОтпускаПоУходуЗаРебенком,
| ШапкаДокумента.СреднийДневнойЗаработок КАК СреднийДневнойЗаработок,
| ВЫБОР
| КОГДА ШапкаДокумента.ДатаНачала >= &ДатаВключенияРКПриРасчетеБольничного
| ТОГДА ВЫБОР
| КОГДА ШапкаДокумента.СреднийДневнойЗаработок > ШапкаДокумента.МинимальныйСреднедневнойЗаработок * ШапкаДокумента.РайонныйКоэффициентРФнаНачалоСобытия
| ТОГДА ШапкаДокумента.СреднийДневнойЗаработок
| ИНАЧЕ ШапкаДокумента.МинимальныйСреднедневнойЗаработок
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ШапкаДокумента.СреднийДневнойЗаработок > ШапкаДокумента.МинимальныйСреднедневнойЗаработок
| ТОГДА ШапкаДокумента.СреднийДневнойЗаработок
| ИНАЧЕ ШапкаДокумента.МинимальныйСреднедневнойЗаработок
| КОНЕЦ
| КОНЕЦ КАК СреднийЗаработокЗаРасчетныйПериод,
| ШапкаДокумента.ФинансированиеФедеральнымБюджетом КАК ФинансированиеФедеральнымБюджетом,
| ТаблицаДетей.ВидПодтверждающегоДокумента КАК ВидПодтверждающегоДокумента,
| ТаблицаДетей.ДатаДокумента КАК ДатаДокумента,
| ТаблицаДетей.СерияДокумента КАК СерияДокумента,
| ТаблицаДетей.НомерДокумента КАК НомерДокумента,
| ЕСТЬNULL(РодственникиФизическихЛиц.ДатаРождения, ТаблицаДетей.ДатаРожденияРебенка) КАК ДатаРожденияРебенка,
| ЕСТЬNULL(РодственникиФизическихЛиц.Фамилия, ТаблицаДетей.Фамилия) КАК ФамилияРебенка,
| ЕСТЬNULL(РодственникиФизическихЛиц.Имя, ТаблицаДетей.Имя) КАК ИмяРебенка,
| ЕСТЬNULL(РодственникиФизическихЛиц.Отчество, ТаблицаДетей.Отчество) КАК ОтчествоРебенка
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком КАК ШапкаДокумента,
| Документ.ОтпускПоУходуЗаРебенком.ДанныеОДетях КАК ТаблицаДетей
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РодственникиФизическихЛиц КАК РодственникиФизическихЛиц
| ПО ТаблицаДетей.Ребенок = РодственникиФизическихЛиц.Ссылка
| И (ТаблицаДетей.Фамилия = """")
| И (ТаблицаДетей.Имя = """")
| И (ТаблицаДетей.Отчество = """")
| И (ТаблицаДетей.ДатаРожденияРебенка = ДАТАВРЕМЯ(1, 1, 1))
|ГДЕ
| ШапкаДокумента.Ссылка = &Ссылка
| И ТаблицаДетей.Ссылка = &Ссылка
| И ТаблицаДетей.ИдентификаторСтроки = &ИдентификаторСтроки";
Выборка = Запрос.Выполнить().Выбрать();
Если Не Выборка.Следующий() Тогда
Возврат;
КонецЕсли;
РеквизитыДокумента.Вставить("ВидПособия", Перечисления.ПособияНазначаемыеФСС.ЕжемесячноеПособиеПоУходуЗаРебенком);
РеквизитыДокумента.Вставить("Организация", Выборка.Организация);
РеквизитыДокумента.Вставить("Сотрудник", СотрудникОтпускаПоУходуЗаРебенком(Выборка.Сотрудник, Выборка.Организация, Выборка.ДатаНачалаОтпускаПоУходуЗаРебенком));
РеквизитыДокумента.Вставить("НаличиеОдногоИзДокументовНаПредыдущихДетей", Ложь);
РеквизитыДокумента.Вставить("НаличиеСвидетельстваОСмертиПредыдущихДетей", Ложь);
НомерНаПечать = ЗарплатаКадрыОтчеты.НомерНаПечать(Выборка.Номер, Выборка.НомерПриказа);
РеквизитыДокумента.Вставить("ДатаПредставленияПакетаДокументов", Выборка.ДатаПриказаОПредоставленииОтпускаПоУходуЗаРебенком);
РеквизитыДокумента.Вставить("ДатаПриказаОПредоставленииОтпускаПоУходуЗаРебенком", Выборка.ДатаПриказаОПредоставленииОтпускаПоУходуЗаРебенком);
РеквизитыДокумента.Вставить("НомерПриказаОПредоставленииОтпускаПоУходуЗаРебенком", НомерНаПечать);
РеквизитыДокумента.Вставить("ДатаНачалаОтпускаПоУходуЗаРебенком", Выборка.ДатаНачалаОтпускаПоУходуЗаРебенком);
РеквизитыДокумента.Вставить("ДатаОкончанияОтпускаПоУходуЗаРебенком", Выборка.ДатаОкончанияОтпускаПоУходуЗаРебенком);
РеквизитыДокумента.Вставить("СреднийДневнойЗаработок", Выборка.СреднийДневнойЗаработок);
РеквизитыДокумента.Вставить("СреднийЗаработокЗаРасчетныйПериод", Выборка.СреднийЗаработокЗаРасчетныйПериод);
РеквизитыДокумента.Вставить("ФинансированиеФедеральнымБюджетом", Выборка.ФинансированиеФедеральнымБюджетом);
РеквизитыДокумента.Вставить("ДатаРожденияРебенка", Выборка.ДатаРожденияРебенка);
РеквизитыДокумента.Вставить("ФамилияРебенка", Выборка.ФамилияРебенка);
РеквизитыДокумента.Вставить("ИмяРебенка", Выборка.ИмяРебенка);
РеквизитыДокумента.Вставить("ОтчествоРебенка", Выборка.ОтчествоРебенка);
РеквизитыДокумента.Вставить("ДатаСвидетельстваОРождении");
РеквизитыДокумента.Вставить("НомерСвидетельстваОРождении");
РеквизитыДокумента.Вставить("СерияСвидетельстваОРождении");
РеквизитыДокумента.Вставить("ДатаРешенияОбОпеке");
РеквизитыДокумента.Вставить("НомерРешенияОбОпеке");
РеквизитыДокумента.Вставить("ДатаИногоДокументаПодтверждающегоРождение");
РеквизитыДокумента.Вставить("НомерИногоДокументаПодтверждающегоРождение");
Если Выборка.ВидПодтверждающегоДокумента = Перечисления.ВидыПодтверждающихДокументовОтпускаПоУходу.СвидетельствоОРождении Тогда
РеквизитыДокумента.ДатаСвидетельстваОРождении = Выборка.ДатаДокумента;
РеквизитыДокумента.НомерСвидетельстваОРождении = Выборка.НомерДокумента;
РеквизитыДокумента.СерияСвидетельстваОРождении = Выборка.СерияДокумента;
ИначеЕсли Выборка.ВидПодтверждающегоДокумента = Перечисления.ВидыПодтверждающихДокументовОтпускаПоУходу.РешениеОбУстановленииОпеки Тогда
РеквизитыДокумента.ДатаРешенияОбОпеке = Выборка.ДатаДокумента;
РеквизитыДокумента.НомерРешенияОбОпеке = Выборка.НомерДокумента;
ИначеЕсли Выборка.ВидПодтверждающегоДокумента = Перечисления.ВидыПодтверждающихДокументовОтпускаПоУходу.ИнойДокументПодтверждающийРождениеРебенка Тогда
РеквизитыДокумента.ДатаИногоДокументаПодтверждающегоРождение = Выборка.ДатаДокумента;
РеквизитыДокумента.НомерИногоДокументаПодтверждающегоРождение = Выборка.НомерДокумента;
КонецЕсли;
КонецПроцедуры
Функция СотрудникОтпускаПоУходуЗаРебенком(ФизическоеЛицо, Организация, Дата)
ОсновныеСотрудники = КадровыйУчет.ОсновныеСотрудникиФизическихЛиц(ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ФизическоеЛицо), Истина, Организация, Дата);
Если ОсновныеСотрудники.Количество() > 0 Тогда
Сотрудник = ОсновныеСотрудники[0].Сотрудник;
КонецЕсли;
Возврат Сотрудник;
КонецФункции
#КонецОбласти
#Область СЭДО
Процедура ПриПолученииОсновныхСведенийОДокументеДляСЭДО(БольничныйСсылка, ДокументСЭДО, ОсновныеСведения) Экспорт
ИменаРеквизитов = "Представление, Проведен, НачисленияУтверждены, Организация, Сотрудник";
Значения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(БольничныйСсылка, ИменаРеквизитов);
ЗаполнитьЗначенияСвойств(ОсновныеСведения, Значения, , "Сотрудник");
ОсновныеСведения.ГоловнаяОрганизация = ЗарплатаКадры.ГоловнаяОрганизация(Значения.Организация);
ОсновныеСведения.ФизическоеЛицо = Значения.Сотрудник;
ОсновныеСведения.Рассчитан = Значения.НачисленияУтверждены;
КонецПроцедуры
Процедура НастроитьПолеВыбораРебенка(ОтпускПоУходу, ПолеВвода) Экспорт
СписокВыбора = ПолеВвода.СписокВыбора;
СписокВыбора.Очистить();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЕСТЬNULL(РодственникиФизическихЛиц.ДатаРождения, ДанныеОДетях.ДатаРожденияРебенка) КАК ДатаРожденияРебенка,
| ЕСТЬNULL(РодственникиФизическихЛиц.Имя, ДанныеОДетях.Имя) КАК Имя,
| ДанныеОДетях.ИдентификаторСтроки КАК ИдентификаторСтроки
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком.ДанныеОДетях КАК ДанныеОДетях
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РодственникиФизическихЛиц КАК РодственникиФизическихЛиц
| ПО ДанныеОДетях.Ребенок = РодственникиФизическихЛиц.Ссылка
| И (ДанныеОДетях.Фамилия = """")
| И (ДанныеОДетях.Имя = """")
| И (ДанныеОДетях.Отчество = """")
| И (ДанныеОДетях.ДатаРожденияРебенка = ДАТАВРЕМЯ(1, 1, 1))
|ГДЕ
| ДанныеОДетях.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка",ОтпускПоУходу);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СписокВыбора.Добавить(Выборка.ИдентификаторСтроки, Выборка.Имя + " ("+ Формат(Выборка.ДатаРожденияРебенка, "ДЛФ=D") +")");
КонецЦикла;
Если СписокВыбора.Количество() = 0 Тогда
ПолеВвода.Подсказка = НСтр("ru = 'В документе не заполнены сведения о детях, за которыми осуществляется уход'");
Иначе
ПолеВвода.Подсказка = НСтр("ru = 'Ребенок, за которым осуществляется уход'");
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьПервичныйДокументДляРасчетаПособияФСС(ДокументСЭДО, Реквизиты) Экспорт
Если ТипЗнч(ДокументСЭДО.ПервичныйДокумент) = Тип("ДокументСсылка.ОтпускПоУходуЗаРебенком")
И ЗначениеЗаполнено(ДокументСЭДО.ПервичныйДокумент) Тогда
ИменаРеквизитов = "Организация, Сотрудник";
УходЗаРебенком = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументСЭДО.ПервичныйДокумент, ИменаРеквизитов);
ГоловнаяОрганизация = ЗарплатаКадры.ГоловнаяОрганизация(УходЗаРебенком.Организация);
ФизическоеЛицо = УходЗаРебенком.Сотрудник;
Если ГоловнаяОрганизация = ДокументСЭДО.ГоловнаяОрганизация
И ФизическоеЛицо = ДокументСЭДО.ФизическоеЛицо Тогда
Возврат;
КонецЕсли;
КонецЕсли;
Если Не ЗначениеЗаполнено(ДокументСЭДО.ФизическоеЛицо)
Или Не ЗначениеЗаполнено(ДокументСЭДО.ОтпускПоУходуДатаНачала)
Или Не ЗначениеЗаполнено(ДокументСЭДО.ОтпускПоУходуДатаОкончания) Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| Найденный.Ссылка КАК Ссылка
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком КАК Найденный
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
| ПО (Организации.ГоловнаяОрганизация = &ГоловнаяОрганизация)
| И Найденный.Организация = Организации.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтпускПоУходуЗаРебенком КАК Исправляющий
| ПО Найденный.Ссылка = Исправляющий.ИсправленныйДокумент
|ГДЕ
| Найденный.Сотрудник = &ФизическоеЛицо
| И Найденный.ДатаНачала <= &ДатаОкончания
| И Найденный.ДатаОкончания >= &ДатаНачала
| И Организации.ГоловнаяОрганизация = &ГоловнаяОрганизация
| И НЕ Найденный.ПометкаУдаления
|
|УПОРЯДОЧИТЬ ПО
| НЕ Исправляющий.Ссылка ЕСТЬ NULL,
| Найденный.ДатаНачала УБЫВ,
| Найденный.Проведен УБЫВ,
| Найденный.Ссылка УБЫВ";
Запрос.УстановитьПараметр("ФизическоеЛицо", ДокументСЭДО.ФизическоеЛицо);
Запрос.УстановитьПараметр("ГоловнаяОрганизация", ДокументСЭДО.ГоловнаяОрганизация);
Запрос.УстановитьПараметр("ДатаНачала", ДокументСЭДО.ОтпускПоУходуДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ДокументСЭДО.ОтпускПоУходуДатаОкончания);
УстановитьПривилегированныйРежим(Истина);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Реквизиты.Вставить("ПервичныйДокумент", Выборка.Ссылка);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьОтветНаЗапросФССДляРасчетаПособия(ОтпускПоУходу, ДокументСЭДО, Реквизиты, ДанныеДляРасчетаСреднегоЗаработка) Экспорт
Массив = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ОтпускПоУходу);
ДанныеДляРасчетаСреднегоЗаработка = ДанныеДокументовДляРасчетаСреднегоЗаработкаФСС(Массив).Получить(ОтпускПоУходу);
ДанныеОтпуска = ДанныеОтпускаДляСЭДО(ОтпускПоУходу, ДокументСЭДО);
Реквизиты.Вставить("ВидПособия", Перечисления.ПособияНазначаемыеФСС.ЕжемесячноеПособиеПоУходуЗаРебенком);
Если ДанныеОтпуска.ДанныеШапки <> Неопределено Тогда
Шапка = ДанныеОтпуска.ДанныеШапки;
Сотрудник = СотрудникОтпускаПоУходуЗаРебенком(Шапка.Сотрудник, Шапка.Организация, Шапка.ДатаНачала);
НомерНаПечать = ЗарплатаКадрыОтчеты.НомерНаПечать(Шапка.Номер, Шапка.НомерПриказа);
Реквизиты.Вставить("Организация", Шапка.Организация);
Реквизиты.Вставить("Сотрудник", Сотрудник);
Реквизиты.Вставить("ФизическоеЛицо", Шапка.Сотрудник);
Реквизиты.Вставить("ДатаНачалаСобытия", Шапка.ДатаНачала);
Реквизиты.Вставить("ОтпускПоУходуДата", Шапка.Дата);
Реквизиты.Вставить("ОтпускПоУходуНомер", НомерНаПечать);
Реквизиты.Вставить("ОтпускПоУходуДатаНачала", Шапка.ДатаНачала);
Реквизиты.Вставить("ОтпускПоУходуДатаОкончания", Шапка.ДатаОкончанияПособияДоПолутораЛет);
Реквизиты.Вставить("СреднийДневнойЗаработок", Шапка.СреднийДневнойЗаработок);
Реквизиты.Вставить("УходЗаНесколькимиДетьми", Шапка.УходЗаНесколькимиДетьми);
КонецЕсли;
Если ДанныеОтпуска.СведенияОРебенке <> Неопределено Тогда
СведенияОРебенке = ДанныеОтпуска.СведенияОРебенке;
Реквизиты.Вставить("ИдентификаторСтрокиОснования", СведенияОРебенке.ИдентификаторСтроки);
Реквизиты.Вставить("Ребенок", СведенияОРебенке.Ребенок);
Реквизиты.Вставить("РебенокФамилия", СведенияОРебенке.Фамилия);
Реквизиты.Вставить("РебенокИмя", СведенияОРебенке.Имя);
Реквизиты.Вставить("РебенокОтчество", СведенияОРебенке.Отчество);
Реквизиты.Вставить("РебенокДатаРождения", СведенияОРебенке.ДатаРождения);
Реквизиты.Вставить("РебенокОчередность", СведенияОРебенке.Очередность);
Реквизиты.Вставить("НаличиеРешенияСудаОЛишенииПрав", СведенияОРебенке.НаличиеРешенияСудаОЛишенииПрав);
Реквизиты.Вставить("НаличиеДокументовОРожденииПредыдущихДетей", Ложь);
Реквизиты.Вставить("НаличиеСвидетельстваОСмертиПредыдущихДетей", Ложь);
Реквизиты.Вставить("СвидетельствоОРожденииДатаВыдачи");
Реквизиты.Вставить("СвидетельствоОРожденииСерия");
Реквизиты.Вставить("СвидетельствоОРожденииНомер");
Реквизиты.Вставить("ИнойДокументОРожденииДатаВыдачи");
Реквизиты.Вставить("ИнойДокументОРожденииСерия");
Реквизиты.Вставить("ИнойДокументОРожденииНомер");
Реквизиты.Вставить("УсыновлениеОпекаТип");
Реквизиты.Вставить("УсыновлениеОпекаДата");
Реквизиты.Вставить("УсыновлениеОпекаНомер");
Реквизиты.Вставить("ИнойДокументОРожденииДатаВыдачи");
Реквизиты.Вставить("ИнойДокументОРожденииСерия");
Реквизиты.Вставить("ИнойДокументОРожденииНомер");
Если СведенияОРебенке.ВидПодтверждающегоДокумента = Перечисления.ВидыПодтверждающихДокументовОтпускаПоУходу.СвидетельствоОРождении Тогда
Реквизиты.СвидетельствоОРожденииДатаВыдачи = СведенияОРебенке.ДатаДокумента;
Реквизиты.СвидетельствоОРожденииСерия = СокрЛП(СведенияОРебенке.СерияДокумента);
Реквизиты.СвидетельствоОРожденииНомер = СокрЛП(СведенияОРебенке.НомерДокумента);
ИначеЕсли СведенияОРебенке.ВидПодтверждающегоДокумента = Перечисления.ВидыПодтверждающихДокументовОтпускаПоУходу.СправкаОРождении Тогда
Реквизиты.ИнойДокументОРожденииДатаВыдачи = СведенияОРебенке.ДатаДокумента;
Реквизиты.ИнойДокументОРожденииСерия = СокрЛП(СведенияОРебенке.СерияДокумента);
Реквизиты.ИнойДокументОРожденииНомер = СокрЛП(СведенияОРебенке.НомерДокумента);
ИначеЕсли СведенияОРебенке.ВидПодтверждающегоДокумента = Перечисления.ВидыПодтверждающихДокументовОтпускаПоУходу.РешениеОбУстановленииОпеки Тогда
Реквизиты.УсыновлениеОпекаТип = "1";
Реквизиты.УсыновлениеОпекаДата = СведенияОРебенке.ДатаДокумента;
Реквизиты.УсыновлениеОпекаНомер = СведенияОРебенке.НомерДокумента;
ИначеЕсли СведенияОРебенке.ВидПодтверждающегоДокумента = Перечисления.ВидыПодтверждающихДокументовОтпускаПоУходу.ИнойДокументПодтверждающийРождениеРебенка Тогда
Реквизиты.ИнойДокументОРожденииДатаВыдачи = СведенияОРебенке.ДатаДокумента;
Реквизиты.ИнойДокументОРожденииСерия = СокрЛП(СведенияОРебенке.СерияДокумента);
Реквизиты.ИнойДокументОРожденииНомер = СокрЛП(СведенияОРебенке.НомерДокумента);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьИсходящееСообщениеОСтраховомСлучаеФСС(ОтпускПоУходу, ДокументСЭДО, Реквизиты) Экспорт
ДанныеОтпуска = ДанныеОтпускаДляСЭДО(ОтпускПоУходу, ДокументСЭДО);
Реквизиты.ВидПособия = Перечисления.ПособияНазначаемыеФСС.ЕжемесячноеПособиеПоУходуЗаРебенком;
Если ДанныеОтпуска.ДанныеШапки <> Неопределено Тогда
Шапка = ДанныеОтпуска.ДанныеШапки;
Реквизиты.Организация = Шапка.Организация;
Реквизиты.Сотрудник = СотрудникОтпускаПоУходуЗаРебенком(Шапка.Сотрудник, Шапка.Организация, Шапка.ДатаНачала);
Реквизиты.ФизическоеЛицо = Шапка.Сотрудник;
Реквизиты.ДатаНачалаСобытия = Шапка.ДатаНачала;
Реквизиты.ОтпускПоУходуДатаНачала = Шапка.ДатаНачала;
Реквизиты.ОтпускПоУходуДатаОкончания = Шапка.ДатаОкончанияПособияДоПолутораЛет;
КонецЕсли;
Если ДанныеОтпуска.СведенияОРебенке <> Неопределено Тогда
СведенияОРебенке = ДанныеОтпуска.СведенияОРебенке;
Реквизиты.ИдентификаторСтрокиОснования = СведенияОРебенке.ИдентификаторСтроки;
Реквизиты.Ребенок = СведенияОРебенке.Ребенок;
Реквизиты.РебенокФамилия = СокрЛП(СведенияОРебенке.Фамилия);
Реквизиты.РебенокИмя = СокрЛП(СведенияОРебенке.Имя);
Реквизиты.РебенокОтчество = СокрЛП(СведенияОРебенке.Отчество);
Реквизиты.РебенокДатаРождения = СведенияОРебенке.ДатаРождения;
Если СведенияОРебенке.ВидПодтверждающегоДокумента = Перечисления.ВидыПодтверждающихДокументовОтпускаПоУходу.СвидетельствоОРождении Тогда
Реквизиты.СвидетельствоОРожденииДатаВыдачи = СведенияОРебенке.ДатаДокумента;
Реквизиты.СвидетельствоОРожденииНомер = СокрЛП(СведенияОРебенке.НомерДокумента);
Реквизиты.СвидетельствоОРожденииСерия = СокрЛП(СведенияОРебенке.СерияДокумента);
Реквизиты.СвидетельствоОРожденииКемВыдано = СокрЛП(СведенияОРебенке.КемВыданДокумент);
Иначе
Реквизиты.ИнойДокументОРожденииДатаВыдачи = СведенияОРебенке.ДатаДокумента;
Реквизиты.ИнойДокументОРожденииНомер = СокрЛП(СведенияОРебенке.НомерДокумента);
Реквизиты.ИнойДокументОРожденииСерия = СокрЛП(СведенияОРебенке.СерияДокумента);
Реквизиты.ИнойДокументОРожденииКемВыдан = СокрЛП(СведенияОРебенке.КемВыданДокумент);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция ДанныеОтпускаДляСЭДО(ОтпускПоУходу, ДокументСЭДО)
Результат = Новый Структура("ДанныеШапки, СведенияОРебенке");
Если Не ЗначениеЗаполнено(ОтпускПоУходу) Тогда
Возврат Результат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", ОтпускПоУходу);
Запрос.Текст =
"ВЫБРАТЬ
| ШапкаДокумента.Организация КАК Организация,
| ШапкаДокумента.Сотрудник КАК Сотрудник,
| ШапкаДокумента.Номер КАК Номер,
| ШапкаДокумента.НомерПриказа КАК НомерПриказа,
| ШапкаДокумента.Дата КАК Дата,
| ШапкаДокумента.ДатаНачала КАК ДатаНачала,
| ШапкаДокумента.ДатаОкончанияПособияДоПолутораЛет КАК ДатаОкончанияПособияДоПолутораЛет,
| ШапкаДокумента.КоличествоДетей > 1 КАК УходЗаНесколькимиДетьми,
| ШапкаДокумента.СреднийДневнойЗаработок КАК СреднийДневнойЗаработок
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком КАК ШапкаДокумента
|ГДЕ
| ШапкаДокумента.Ссылка = &Ссылка
|;
|
|
|ВЫБРАТЬ
| ДанныеОДетях.Ссылка КАК Ссылка,
| ДанныеОДетях.НомерСтроки КАК НомерСтроки,
| ДанныеОДетях.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ДанныеОДетях.Очередность КАК Очередность,
| ЕСТЬNULL(РодственникиФизическихЛиц.ДатаРождения, ДанныеОДетях.ДатаРожденияРебенка) КАК ДатаРожденияРебенка,
| ДанныеОДетях.Ребенок КАК Ребенок,
| ДанныеОДетях.ВидПодтверждающегоДокумента КАК ВидПодтверждающегоДокумента,
| ДанныеОДетях.НаименованиеПодтверждающегоДокумента КАК НаименованиеПодтверждающегоДокумента,
| ДанныеОДетях.ДатаДокумента КАК ДатаДокумента,
| ДанныеОДетях.СерияДокумента КАК СерияДокумента,
| ДанныеОДетях.НомерДокумента КАК НомерДокумента,
| ДанныеОДетях.КемВыданДокумент КАК КемВыданДокумент,
| ДанныеОДетях.НаличиеРешенияСудаОЛишенииПрав КАК НаличиеРешенияСудаОЛишенииПрав,
| ЕСТЬNULL(РодственникиФизическихЛиц.ДатаРождения, ДанныеОДетях.ДатаРожденияРебенка) КАК ДатаРождения,
| ЕСТЬNULL(РодственникиФизическихЛиц.Фамилия, ДанныеОДетях.Фамилия) КАК Фамилия,
| ЕСТЬNULL(РодственникиФизическихЛиц.Имя, ДанныеОДетях.Имя) КАК Имя,
| ЕСТЬNULL(РодственникиФизическихЛиц.Отчество, ДанныеОДетях.Отчество) КАК Отчество
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком.ДанныеОДетях КАК ДанныеОДетях
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РодственникиФизическихЛиц КАК РодственникиФизическихЛиц
| ПО ДанныеОДетях.Ребенок = РодственникиФизическихЛиц.Ссылка
| И (ДанныеОДетях.Фамилия = """")
| И (ДанныеОДетях.Имя = """")
| И (ДанныеОДетях.Отчество = """")
| И (ДанныеОДетях.ДатаРожденияРебенка = ДАТАВРЕМЯ(1, 1, 1))
|ГДЕ
| ДанныеОДетях.Ссылка = &Ссылка";
РезультатыЗапроса = Запрос.ВыполнитьПакет();
ТаблицаШапки = РезультатыЗапроса[0].Выгрузить();
ТаблицаДетей = РезультатыЗапроса[1].Выгрузить();
Если ТаблицаШапки.Количество() > 0 Тогда
Результат.ДанныеШапки = ТаблицаШапки[0];
КонецЕсли;
Если ЗначениеЗаполнено(ДокументСЭДО.Ребенок) Тогда
Результат.СведенияОРебенке = ТаблицаДетей.Найти(ДокументСЭДО.Ребенок, "Ребенок");
Если Результат.СведенияОРебенке <> Неопределено Тогда
Возврат Результат;
КонецЕсли;
КонецЕсли;
Количество = ТаблицаДетей.Количество();
Если Количество = 0 Тогда
Возврат Результат;
КонецЕсли;
Если Количество = 1 Тогда
СведенияОРебенке = ТаблицаДетей[0];
Если СведенияОРебенке.Ребенок = ДокументСЭДО.Ребенок
Или Не ЗначениеЗаполнено(ДокументСЭДО.Ребенок)
Или Не ЗначениеЗаполнено(СведенияОРебенке.Ребенок) Тогда
Результат.СведенияОРебенке = СведенияОРебенке;
Возврат Результат;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(ДокументСЭДО.РебенокИмя) Тогда
Найденные = ТаблицаДетей.НайтиСтроки(Новый Структура("Имя", ДокументСЭДО.РебенокИмя));
Если Найденные.Количество() = 1 Тогда
СведенияОРебенке = Найденные[0];
Если СведенияОРебенке.Ребенок = ДокументСЭДО.Ребенок
Или Не ЗначениеЗаполнено(ДокументСЭДО.Ребенок)
Или Не ЗначениеЗаполнено(СведенияОРебенке.Ребенок) Тогда
Результат.СведенияОРебенке = СведенияОРебенке;
Возврат Результат;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(ДокументСЭДО.РебенокДатаРождения) Тогда
Найденные = ТаблицаДетей.НайтиСтроки(Новый Структура("ДатаРожденияРебенка", ДокументСЭДО.РебенокДатаРождения));
Если Найденные.Количество() = 1 Тогда
СведенияОРебенке = Найденные[0];
Если СведенияОРебенке.Ребенок = ДокументСЭДО.Ребенок
Или Не ЗначениеЗаполнено(ДокументСЭДО.Ребенок)
Или Не ЗначениеЗаполнено(СведенияОРебенке.Ребенок) Тогда
Результат.СведенияОРебенке = СведенияОРебенке;
Возврат Результат;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Очередность = ОбщегоНазначенияБЗК.ЗначениеСвойства(ДокументСЭДО, "РебенокОчередность");
Если ЗначениеЗаполнено(Очередность) Тогда
Найденные = ТаблицаДетей.НайтиСтроки(Новый Структура("Очередность", Очередность));
Если Найденные.Количество() = 1 Тогда
СведенияОРебенке = Найденные[0];
Если СведенияОРебенке.Ребенок = ДокументСЭДО.Ребенок
Или Не ЗначениеЗаполнено(ДокументСЭДО.Ребенок)
Или Не ЗначениеЗаполнено(СведенияОРебенке.Ребенок) Тогда
Результат.СведенияОРебенке = СведенияОРебенке;
Возврат Результат;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
Процедура ЗаполнитьЗапросСреднегоЗаработкаСЭДО(ЗапросСЭДО) Экспорт
ОтпускПоУходу = ЗапросСЭДО.ДокументОснование;
РеквизитыОснования = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ОтпускПоУходу, "Организация, Сотрудник");
ЗапросСЭДО.Страхователь = СЭДОФСС.СтраховательОрганизации(РеквизитыОснования.Организация);
ЗапросСЭДО.ФизическоеЛицо = РеквизитыОснования.Сотрудник;
КонецПроцедуры
#КонецОбласти
Функция СвойстваИсправляемогоДокумента(ДокументСсылка) Экспорт
Реквизиты = ИсправлениеДокументовЗарплатаКадры.РеквизитыИсправляемогоРасчетногоДокумента();
Возврат ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументСсылка, Реквизиты);
КонецФункции
Функция ПараметрыИсправляемогоДокумента(ДокументСсылка) Экспорт
Возврат ИсправлениеДокументовЗарплатаКадры.ПараметрыИсправляемогоДокумента(ДокументСсылка,
СвойстваИсправляемогоДокумента(ДокументСсылка));
КонецФункции
Функция ОбъектЗаблокирован(СсылкаНаОбъект) Экспорт
Возврат Ложь;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ДобавитьКомандыСозданияДокументов(КомандыСозданияДокументов, ДополнительныеПараметры) Экспорт
ЗарплатаКадрыРасширенный.ДобавитьВКоллекциюКомандуСозданияДокументаПоМетаданнымДокумента(
КомандыСозданияДокументов, Метаданные.Документы.ОтпускПоУходуЗаРебенком);
КонецФункции
Процедура РассчитатьФОТПоДокументу(ДокументОбъект) Экспорт
Если НЕ ДокументОбъект.ИзменитьНачисления Тогда
Возврат;
КонецЕсли;
ТаблицаНачислений = ПлановыеНачисленияСотрудников.ТаблицаНачисленийДляРасчетаВторичныхДанных();
ТаблицаПоказателей = ПлановыеНачисленияСотрудников.ТаблицаИзвестныеПоказатели();
ИзвестныеКадровыеДанные = ПлановыеНачисленияСотрудников.СоздатьТаблицаКадровыхДанных();
ТаблицаСотрудников = ДокументОбъект.Начисления.Выгрузить(, "РабочееМесто");
ТаблицаСотрудников.Свернуть("РабочееМесто");
Для каждого СтрокаТаблицыСотрудников Из ТаблицаСотрудников Цикл
КадровыеДанныеСотрудника = ИзвестныеКадровыеДанные.Добавить();
КадровыеДанныеСотрудника.Сотрудник = ДокументОбъект.ОсновнойСотрудник;
КадровыеДанныеСотрудника.Период = ДокументОбъект.ДатаНачала;
КадровыеДанныеСотрудника.Организация = ДокументОбъект.Организация;
НачисленияСотрудника = ДокументОбъект.Начисления.НайтиСтроки(Новый Структура("РабочееМесто", СтрокаТаблицыСотрудников.РабочееМесто));
Для Каждого СтрокаНачисления Из НачисленияСотрудника Цикл
ДанныеНачисления = ТаблицаНачислений.Добавить();
ДанныеНачисления.Сотрудник = ДокументОбъект.ОсновнойСотрудник;
ДанныеНачисления.Период = ДокументОбъект.ДатаНачала;
ДанныеНачисления.Начисление = СтрокаНачисления.Начисление;
ДанныеНачисления.ДокументОснование = СтрокаНачисления.ДокументОснование;
ДанныеНачисления.Размер = СтрокаНачисления.Размер;
ПоказателиНачисления = ДокументОбъект.Показатели.НайтиСтроки(Новый Структура("ИдентификаторСтрокиВидаРасчета", СтрокаНачисления.ИдентификаторСтрокиВидаРасчета));
Для Каждого СтрокаПоказателя Из ПоказателиНачисления Цикл
ДанныеПоказателя = ТаблицаПоказателей.Добавить();
ДанныеПоказателя.Сотрудник = ДокументОбъект.Сотрудник;
ДанныеПоказателя.Период = ДокументОбъект.ДатаНачала;
ДанныеПоказателя.Показатель = СтрокаПоказателя.Показатель;
ДанныеПоказателя.ДокументОснование = СтрокаНачисления.ДокументОснование;
ДанныеПоказателя.Значение = СтрокаПоказателя.Значение;
КонецЦикла;
КонецЦикла;
КонецЦикла;
РассчитанныеДанные = ПлановыеНачисленияСотрудников.РассчитатьВторичныеДанныеПлановыхНачислений(ТаблицаНачислений, ТаблицаПоказателей, ИзвестныеКадровыеДанные);
Для Каждого ОписаниеНачисления Из РассчитанныеДанные.ПлановыйФОТ Цикл
Отбор = Новый Структура("РабочееМесто, Начисление, ДокументОснование",
СтрокаТаблицыСотрудников.РабочееМесто, ОписаниеНачисления.Начисление, ОписаниеНачисления.ДокументОснование);
СтрокиДокумента = ДокументОбъект.Начисления.НайтиСтроки(Отбор);
Если СтрокиДокумента.Количество() > 0 Тогда
СтрокиДокумента[0].Размер = ОписаниеНачисления.ВкладВФОТ;
КонецЕсли;
КонецЦикла;
РасчетЗарплатыРасширенный.ЗаполнитьФОТВДвиженияхЗагружаемогоДокумента(ДокументОбъект.Движения.ПлановыеНачисления, ДокументОбъект.Начисления, "РабочееМесто");
КонецПроцедуры
Функция ДанныеДляРегистрацииВУчетаСтажаПФР(МассивСсылок) Экспорт
ДанныеДляРегистрацииВУчете = Новый Соответствие;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
Запрос.Текст =
"ВЫБРАТЬ
| ОтпускПоУходуЗаРебенком.ОсновнойСотрудник,
| ОтпускПоУходуЗаРебенком.ДатаНачала,
| ОтпускПоУходуЗаРебенком.ДатаОкончания,
| ОтпускПоУходуЗаРебенком.ДатаОкончанияПособияДоПолутораЛет,
| ОтпускПоУходуЗаРебенком.ДатаОкончанияПособияДоТрехЛет,
| ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоПолутораЛет,
| ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоТрехЛет,
| ОтпускПоУходуЗаРебенком.НеНачислятьЗарплатуИНеВыплачиватьАвансВоВремяОтпуска,
| ОтпускПоУходуЗаРебенком.Ссылка,
| ОтпускПоУходуЗаРебенком.ДатаНачалаПФР
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком КАК ОтпускПоУходуЗаРебенком
|ГДЕ
| ОтпускПоУходуЗаРебенком.Ссылка В(&МассивСсылок)";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ДанныеДляРегистрацииВУчетеПоДокументу = УчетСтажаПФР.ДанныеДляРегистрацииВУчетеСтажаПФР();
ДанныеДляРегистрацииВУчете.Вставить(Выборка.Ссылка, ДанныеДляРегистрацииВУчетеПоДокументу);
Если Выборка.НеНачислятьЗарплатуИНеВыплачиватьАвансВоВремяОтпуска Тогда
Если Выборка.ВыплачиватьПособиеДоПолутораЛет
И Выборка.ДатаНачалаПФР < Выборка.ДатаОкончанияПособияДоПолутораЛет Тогда
ОписаниеПериода = УчетСтажаПФР.ОписаниеРегистрируемогоПериода();
ОписаниеПериода.Сотрудник = Выборка.ОсновнойСотрудник;
ОписаниеПериода.ДатаНачалаПериода = Макс(Выборка.ДатаНачала, Выборка.ДатаНачалаПФР);
ОписаниеПериода.Состояние = Перечисления.СостоянияСотрудника.ОтпускПоУходуЗаРебенком;
ОписаниеПериода.ДатаНачалаСобытия = Макс(Выборка.ДатаНачала, Выборка.ДатаНачалаПФР);
РегистрируемыйПериод = УчетСтажаПФР.ДобавитьЗаписьВДанныеДляРегистрацииВУчета(ДанныеДляРегистрацииВУчетеПоДокументу, ОписаниеПериода);
УчетСтажаПФР.УстановитьЗначениеРегистрируемогоРесурса(РегистрируемыйПериод, "ВидСтажаПФР", Перечисления.ВидыСтажаПФР2014.Дети);
ДатаНачалаПериодаБезОплаты = Выборка.ДатаОкончанияПособияДоПолутораЛет + 86400;
Иначе
ДатаНачалаПериодаБезОплаты = Выборка.ДатаНачала;
КонецЕсли;
Если Выборка.ДатаОкончания >= ДатаНачалаПериодаБезОплаты Тогда
ОписаниеПериода = УчетСтажаПФР.ОписаниеРегистрируемогоПериода();
ОписаниеПериода.Сотрудник = Выборка.ОсновнойСотрудник;
ОписаниеПериода.ДатаНачалаПериода = Макс(ДатаНачалаПериодаБезОплаты, Выборка.ДатаНачалаПФР);
ОписаниеПериода.Состояние = Перечисления.СостоянияСотрудника.ОтпускПоУходуЗаРебенком;
ОписаниеПериода.ДатаНачалаСобытия = Макс(Выборка.ДатаНачала, Выборка.ДатаНачалаПФР);
РегистрируемыйПериод = УчетСтажаПФР.ДобавитьЗаписьВДанныеДляРегистрацииВУчета(ДанныеДляРегистрацииВУчетеПоДокументу, ОписаниеПериода);
УчетСтажаПФР.УстановитьЗначениеРегистрируемогоРесурса(РегистрируемыйПериод, "ВидСтажаПФР", Перечисления.ВидыСтажаПФР2014.ДЛДЕТИ);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат ДанныеДляРегистрацииВУчете;
КонецФункции
#Область ПечатьРасчетаСреднегоЗаработка
Функция ДанныеДокументовДляПечатиРасчетаСреднегоЗаработкаФСС(МассивСсылок) Экспорт
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
УчетПособийСоциальногоСтрахования.СоздатьВТДанныеДокументовДляРасчетаСреднегоЗаработкаФСС(Запрос.МенеджерВременныхТаблиц, МассивСсылок);
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокументов.Ссылка КАК Ссылка,
| ДанныеДокументов.Сотрудник КАК Сотрудник,
| ДанныеДокументов.ДатаНачалаСобытия КАК ДатаНачалаСобытия,
| ДанныеДокументов.ПериодРасчетаСреднегоЗаработкаНачало КАК ПериодРасчетаСреднегоЗаработкаНачало,
| ДанныеДокументов.ПериодРасчетаСреднегоЗаработкаОкончание КАК ПериодРасчетаСреднегоЗаработкаОкончание,
| ДанныеДокументов.ПериодРасчетаСреднегоЗаработкаПервыйГод КАК ПериодРасчетаСреднегоЗаработкаПервыйГод,
| ДанныеДокументов.ПериодРасчетаСреднегоЗаработкаВторойГод КАК ПериодРасчетаСреднегоЗаработкаВторойГод,
| ДанныеДокументов.УчитыватьЗаработокПредыдущихСтрахователей КАК УчитыватьЗаработокПредыдущихСтрахователей,
| ДанныеДокументов.РасчетПоПравилам2010Года КАК РасчетПоПравилам2010Года,
| ДанныеДокументов.РайонныйКоэффициентРФ КАК РайонныйКоэффициентРФ,
| ДанныеДокументов.ДоляНеполногоВремени КАК ДоляНеполногоВремени,
| ДанныеДокументов.МинимальныйРазмерОплатыТрудаРФ КАК МинимальныйРазмерОплатыТрудаРФ,
| ДанныеДокументов.ПрименятьПредельнуюВеличину КАК ПрименятьПредельнуюВеличину,
| ДанныеДокументов.ИспользоватьДниБолезниУходаЗаДетьми КАК ИспользоватьДниБолезниУходаЗаДетьми,
| ОтпускПоУходуЗаРебенком.Организация КАК Организация,
| ОтпускПоУходуЗаРебенком.Дата КАК ДатаДокумента,
| ОтпускПоУходуЗаРебенком.Номер КАК Номер,
| ОтпускПоУходуЗаРебенком.НомерПриказа КАК НомерПриказа,
| ОтпускПоУходуЗаРебенком.ДатаНачала КАК ДатаНачалаОтсутствия,
| ВЫБОР
| КОГДА ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоПолутораЛет
| ТОГДА ОтпускПоУходуЗаРебенком.ДатаОкончанияПособияДоПолутораЛет
| ИНАЧЕ ОтпускПоУходуЗаРебенком.ДатаОкончания
| КОНЕЦ КАК ДатаОкончанияОтсутствия,
| Организации.НаименованиеПолное КАК ПолноеНаименованиеОрганизации,
| Организации.Наименование КАК НаименованиеОрганизации
|ИЗ
| ВТДанныеДокументовДляРасчетаСреднегоЗаработкаФСС КАК ДанныеДокументов
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтпускПоУходуЗаРебенком КАК ОтпускПоУходуЗаРебенком
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
| ПО ОтпускПоУходуЗаРебенком.Организация = Организации.Ссылка
| ПО ДанныеДокументов.Ссылка = ОтпускПоУходуЗаРебенком.Ссылка";
ДанныеДокументов = Новый Массив;
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
ТаблицыДанныхОСреднем = УчетПособийСоциальногоСтрахования.ТаблицыДанныхСреднегоЗаработкаФСС("ОтпускПоУходуЗаРебенком", МассивСсылок);
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
КадровыеДанныеСотрудника = КадровыеДанныеОсновногоСотрудника(Выборка.Сотрудник, Выборка.Организация, Выборка.ДатаНачалаСобытия);
ДанныеДокумента = Обработки.ПечатьРасчетаСреднегоЗаработкаФСС.ПустаяСтруктураДанныхДляПечатиСреднегоЗаработка();
ЗаполнитьЗначенияСвойств(ДанныеДокумента.РеквизитыДокумента, Выборка);
ЗаполнитьЗначенияСвойств(ДанныеДокумента.КадровыеДанныеСотрудника, КадровыеДанныеСотрудника);
ДанныеДокумента.РеквизитыДокумента.Сотрудник = КадровыеДанныеСотрудника.Сотрудник;
ДанныеДокумента.КадровыеДанныеСотрудника.Страхователь = КадровыеДанныеСотрудника.Организация;
ДанныеДокумента.РеквизитыДокумента.НомерДокумента = ЗарплатаКадрыОтчеты.НомерНаПечать(Выборка.Номер, Выборка.НомерПриказа);
РеквизитыДокументаДляРасчетаСреднегоЗаработкаФСС = УчетПособийСоциальногоСтрахования.РеквизитыДокументаДляРасчетаСреднегоЗаработкаФСС();
ЗаполнитьЗначенияСвойств(РеквизитыДокументаДляРасчетаСреднегоЗаработкаФСС, Выборка);
РеквизитыДокументаДляРасчетаСреднегоЗаработкаФСС.ФизическоеЛицо = Выборка.Сотрудник;
РеквизитыДокументаДляРасчетаСреднегоЗаработкаФСС.Сотрудник = КадровыеДанныеСотрудника.Сотрудник;
ДанныеДокументаДляРасчетаСреднегоЗаработкаФСС = УчетПособийСоциальногоСтрахования.ДанныеДокументаДляРасчетаСреднегоЗаработкаФСС(РеквизитыДокументаДляРасчетаСреднегоЗаработкаФСС, ТаблицыДанныхОСреднем);
ДанныеДокумента.ПараметрыРасчета = ДанныеДокументаДляРасчетаСреднегоЗаработкаФСС.ПараметрыРасчета;
ДанныеДокумента.ДанныеРасчетаСреднего = ДанныеДокументаДляРасчетаСреднегоЗаработкаФСС.ДанныеРасчетаСреднего;
ДанныеДокументов.Добавить(ДанныеДокумента);
КонецЦикла;
КонецЕсли;
Возврат ДанныеДокументов;
КонецФункции
Функция КадровыеДанныеОсновногоСотрудника(ФизическоеЛицо, Организация, Дата)
КадровыеДанныеСотрудника = Неопределено;
МассивФизическихЛиц = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ФизическоеЛицо);
ОсновныеСотрудники = КадровыйУчет.ОсновныеСотрудникиФизическихЛиц(МассивФизическихЛиц, Истина, Организация, Дата);
Если НЕ ОсновныеСотрудники.Количество() > 0 Тогда
ТекстСообщения = Нстр("ru='%1 не работает в организации на %2. Печать документа невозможна.'");
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, ФизическоеЛицо, Формат(Дата,"ДЛФ=D"));
ВызватьИсключение ТекстСообщения;
КонецЕсли;
КадровыеДанныеСотрудников = КадровыйУчет.КадровыеДанныеСотрудников(Истина, ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ОсновныеСотрудники[0].Сотрудник), "Организация,ФизическоеЛицо,ФИОПолные,ТабельныйНомер,Подразделение,Должность,ВидЗанятости", Дата);
Если КадровыеДанныеСотрудников.Количество() > 0 Тогда
КадровыеДанныеСотрудника = КадровыеДанныеСотрудников[0];
КонецЕсли;
Возврат КадровыеДанныеСотрудника;
КонецФункции
#КонецОбласти
#Область ДанныеДляРасчетаСреднегоЗаработка
Функция ДанныеДокументовДляРасчетаСреднегоЗаработкаФСС(МассивСсылок) Экспорт
ДанныеДокументов = Новый Соответствие;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
УчетПособийСоциальногоСтрахования.СоздатьВТДанныеДокументовДляРасчетаСреднегоЗаработкаФСС(Запрос.МенеджерВременныхТаблиц, МассивСсылок);
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокументов.Ссылка,
| ДанныеДокументов.Сотрудник,
| ДанныеДокументов.ДатаНачалаСобытия,
| ДанныеДокументов.ПрименятьПредельнуюВеличину,
| ДанныеДокументов.ИспользоватьДниБолезниУходаЗаДетьми,
| ДанныеДокументов.ПериодРасчетаСреднегоЗаработкаНачало,
| ДанныеДокументов.ПериодРасчетаСреднегоЗаработкаОкончание,
| ДанныеДокументов.ПериодРасчетаСреднегоЗаработкаПервыйГод,
| ДанныеДокументов.ПериодРасчетаСреднегоЗаработкаВторойГод,
| ДанныеДокументов.УчитыватьЗаработокПредыдущихСтрахователей,
| ДанныеДокументов.РасчетПоПравилам2010Года,
| ДанныеДокументов.ДоляНеполногоВремени,
| ДанныеДокументов.РайонныйКоэффициентРФ,
| ДанныеДокументов.МинимальныйРазмерОплатыТрудаРФ,
| ОтпускПоУходуЗаРебенком.Организация КАК Организация
|ИЗ
| ВТДанныеДокументовДляРасчетаСреднегоЗаработкаФСС КАК ДанныеДокументов
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтпускПоУходуЗаРебенком КАК ОтпускПоУходуЗаРебенком
| ПО ДанныеДокументов.Ссылка = ОтпускПоУходуЗаРебенком.Ссылка";
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
ТаблицыДанныхОСреднем = УчетПособийСоциальногоСтрахования.ТаблицыДанныхСреднегоЗаработкаФСС("ОтпускПоУходуЗаРебенком", МассивСсылок);
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
КадровыеДанныеСотрудника = КадровыеДанныеОсновногоСотрудника(Выборка.Сотрудник, Выборка.Организация, Выборка.ДатаНачалаСобытия);
РеквизитыДокументаДляРасчетаСреднегоЗаработкаФСС = УчетПособийСоциальногоСтрахования.РеквизитыДокументаДляРасчетаСреднегоЗаработкаФСС();
ЗаполнитьЗначенияСвойств(РеквизитыДокументаДляРасчетаСреднегоЗаработкаФСС, Выборка);
РеквизитыДокументаДляРасчетаСреднегоЗаработкаФСС.ФизическоеЛицо = Выборка.Сотрудник;
РеквизитыДокументаДляРасчетаСреднегоЗаработкаФСС.Сотрудник = КадровыеДанныеСотрудника.Сотрудник;
ДанныеДокументаДляРасчетаСреднегоЗаработкаФСС = УчетПособийСоциальногоСтрахования.ДанныеДокументаДляРасчетаСреднегоЗаработкаФСС(РеквизитыДокументаДляРасчетаСреднегоЗаработкаФСС, ТаблицыДанныхОСреднем);
ДанныеДокументов.Вставить(Выборка.Ссылка, ДанныеДокументаДляРасчетаСреднегоЗаработкаФСС);
КонецЦикла;
КонецЕсли;
Возврат ДанныеДокументов;
КонецФункции
#КонецОбласти
#Область ПФ_MXL_ЗаявлениеОНазначенииПособияПоУходуЗаРебенком
Процедура ПриПечатиЗаявленияОНазначенииПособияПоУходуЗаРебенком(КонтекстПечати)
СЭДОФСС.УстановитьСтандартныйОтступПечати(КонтекстПечати);
ТаблицаДанных = ДанныеДляПечатиЗаявленияОНазначенииПособияПоУходуЗаРебенком(КонтекстПечати.МассивОбъектов);
Для Каждого СтрокаТаблицы Из ТаблицаДанных Цикл
Данные = Обработки.ОбщиеФормыСЭДОФСС.ПустаяСтруктураДанныхДляПечатиЗаявленияОНазначенииПособияПоУходуЗаРебенком();
ЗаполнитьЗначенияСвойств(Данные, СтрокаТаблицы);
Данные.УполномоченныйПредставительДолжность = СокрЛП(СтрокаТаблицы.ДолжностьРуководителя);
Данные.УполномоченныйПредставительФИО = СокрЛП(СтрокаТаблицы.РуководительФИО);
Обработки.ОбщиеФормыСЭДОФСС.НапечататьЗаявлениеОНазначенииПособияПоУходуЗаРебенком(КонтекстПечати, Данные);
КонецЦикла;
КонецПроцедуры
Функция ДанныеДляПечатиЗаявленияОНазначенииПособияПоУходуЗаРебенком(МассивСсылок)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокументов.Ссылка КАК Ссылка,
| ДанныеДокументов.Дата КАК ДатаПодачи,
| ДанныеДокументов.Организация КАК Организация,
| ДанныеДокументов.Сотрудник КАК ФизическоеЛицо,
| ДанныеДокументов.ДатаНачала КАК ДатаНачала,
| ДанныеДокументов.ДатаОкончанияПособияДоПолутораЛет КАК ДатаОкончания,
| ДанныеДокументов.ДатаНачала КАК ДатаНачалаСобытия,
| ДанныеДокументов.Руководитель КАК Руководитель,
| ДанныеДокументов.ДолжностьРуководителя КАК ДолжностьРуководителя,
| ЕСТЬNULL(РодственникиФизическихЛиц.Фамилия, ТаблицаОДетях.Фамилия) КАК РебенокФамилия,
| ЕСТЬNULL(РодственникиФизическихЛиц.Имя, ТаблицаОДетях.Имя) КАК РебенокИмя,
| ЕСТЬNULL(РодственникиФизическихЛиц.Отчество, ТаблицаОДетях.Отчество) КАК РебенокОтчество,
| ЕСТЬNULL(РодственникиФизическихЛиц.ДатаРождения, ТаблицаОДетях.ДатаРожденияРебенка) КАК РебенокДатаРождения,
| ЕСТЬNULL(РодственникиФизическихЛиц.СНИЛС, """") КАК РебенокСНИЛС
|ПОМЕСТИТЬ ВТДанныеДокументов
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком КАК ДанныеДокументов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтпускПоУходуЗаРебенком.ДанныеОДетях КАК ТаблицаОДетях
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РодственникиФизическихЛиц КАК РодственникиФизическихЛиц
| ПО ТаблицаОДетях.Ребенок = РодственникиФизическихЛиц.Ссылка
| ПО ДанныеДокументов.Ссылка = ТаблицаОДетях.Ссылка
|ГДЕ
| ДанныеДокументов.Ссылка В(&МассивСсылок)
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеДокументов.ФизическоеЛицо КАК ФизическоеЛицо,
| ДанныеДокументов.ДатаНачалаСобытия КАК ДатаНачалаСобытия
|ПОМЕСТИТЬ ВТФизлица
|ИЗ
| ВТДанныеДокументов КАК ДанныеДокументов
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| ВТДанныеДокументов.Руководитель,
| ВТДанныеДокументов.ДатаНачалаСобытия
|ИЗ
| ВТДанныеДокументов КАК ВТДанныеДокументов";
Запрос.Выполнить();
Описатель = КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеФизическихЛиц(
Запрос.МенеджерВременныхТаблиц,
"ВТФизлица",
"ФизическоеЛицо,ДатаНачалаСобытия");
ИменаПолей = "СтраховойНомерПФР, Фамилия, Имя, Отчество, ФИОПолные, ИОФамилия";
КадровыйУчет.СоздатьВТКадровыеДанныеФизическихЛиц(Описатель, Истина, ИменаПолей);
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокументов.Ссылка КАК Ссылка,
| ДанныеДокументов.ДатаПодачи КАК ДатаПодачи,
| ДанныеДокументов.ФизическоеЛицо КАК ФизическоеЛицо,
| ДанныеДокументов.ДатаНачала КАК ДатаНачала,
| ДанныеДокументов.ДатаОкончания КАК ДатаОкончания,
| ДанныеДокументов.ДатаНачалаСобытия КАК ДатаНачалаСобытия,
| ДанныеДокументов.РебенокФамилия КАК РебенокФамилия,
| ДанныеДокументов.РебенокИмя КАК РебенокИмя,
| ДанныеДокументов.РебенокОтчество КАК РебенокОтчество,
| ДанныеДокументов.РебенокДатаРождения КАК РебенокДатаРождения,
| ДанныеДокументов.РебенокСНИЛС КАК РебенокСНИЛС,
| ДанныеДокументов.Руководитель КАК Руководитель,
| ДанныеДокументов.ДолжностьРуководителя КАК ДолжностьРуководителя,
| ВЫБОР
| КОГДА ОрганизацияСправочник.НаименованиеПолное ПОДОБНО """"
| ТОГДА ОрганизацияСправочник.Наименование
| ИНАЧЕ ОрганизацияСправочник.НаименованиеПолное
| КОНЕЦ КАК СтраховательНаименование,
| РуководительКадровыеДанные.ИОФамилия КАК РуководительРасшифровкаПодписи,
| РуководительКадровыеДанные.ФИОПолные КАК РуководительФИО,
| ФизическоеЛицоКадровыеДанные.СтраховойНомерПФР КАК СНИЛС,
| ФизическоеЛицоКадровыеДанные.Фамилия КАК Фамилия,
| ФизическоеЛицоКадровыеДанные.Имя КАК Имя,
| ФизическоеЛицоКадровыеДанные.Отчество КАК Отчество
|ИЗ
| ВТДанныеДокументов КАК ДанныеДокументов
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК ОрганизацияСправочник
| ПО ДанныеДокументов.Организация = ОрганизацияСправочник.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеФизическихЛиц КАК РуководительКадровыеДанные
| ПО ДанныеДокументов.Руководитель = РуководительКадровыеДанные.ФизическоеЛицо
| И ДанныеДокументов.ДатаНачалаСобытия = РуководительКадровыеДанные.Период
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеФизическихЛиц КАК ФизическоеЛицоКадровыеДанные
| ПО ДанныеДокументов.ФизическоеЛицо = ФизическоеЛицоКадровыеДанные.ФизическоеЛицо
| И ДанныеДокументов.ДатаНачалаСобытия = ФизическоеЛицоКадровыеДанные.Период";
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
#КонецОбласти
#Область ПФ_MXL_ЗаменаЛетРасчетногоПериода
Процедура ПриПечатиЗаменыЛетРасчетногоПериода(КонтекстПечати)
СЭДОФСС.УстановитьСтандартныйОтступПечати(КонтекстПечати);
ТаблицаДанных = ДанныеДляПечатиЗаменыЛетРасчетногоПериода(КонтекстПечати.МассивОбъектов);
Для Каждого СтрокаТаблицы Из ТаблицаДанных Цикл
Данные = Обработки.ОбщиеФормыСЭДОФСС.ПустаяСтруктураДанныхДляПечатиЗаменыЛет();
ЗаполнитьЗначенияСвойств(Данные, СтрокаТаблицы);
Данные.УполномоченныйПредставительДолжность = СокрЛП(СтрокаТаблицы.ДолжностьРуководителя);
Данные.УполномоченныйПредставительФИО = СокрЛП(СтрокаТаблицы.РуководительФИО);
Данные.ВидПособия = Перечисления.ПособияНазначаемыеФСС.ЕжемесячноеПособиеПоУходуЗаРебенком;
Обработки.ОбщиеФормыСЭДОФСС.НапечататьЗаменуЛет(КонтекстПечати, Данные);
КонецЦикла;
КонецПроцедуры
Функция ДанныеДляПечатиЗаменыЛетРасчетногоПериода(МассивСсылок)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокументов.Ссылка КАК Ссылка,
| ДанныеДокументов.Дата КАК ДатаПодачи,
| ДанныеДокументов.Организация КАК Организация,
| ДанныеДокументов.Сотрудник КАК ФизическоеЛицо,
| ДанныеДокументов.ПериодРасчетаСреднегоЗаработкаПервыйГод КАК ПервыйРасчетныйГод,
| ДанныеДокументов.ПериодРасчетаСреднегоЗаработкаВторойГод КАК ВторойРасчетныйГод,
| ДанныеДокументов.ФиксПериодРасчетаСреднегоЗаработка КАК ФиксПериодРасчетаСреднегоЗаработка,
| ДанныеДокументов.ДатаНачала КАК ДатаНачалаСобытия,
| ДанныеДокументов.Руководитель КАК Руководитель,
| ДанныеДокументов.ДолжностьРуководителя КАК ДолжностьРуководителя
|ПОМЕСТИТЬ ВТДанныеДокументов
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком КАК ДанныеДокументов
|ГДЕ
| ДанныеДокументов.Ссылка В(&МассивСсылок)
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеДокументов.ФизическоеЛицо КАК ФизическоеЛицо,
| ДанныеДокументов.ДатаНачалаСобытия КАК ДатаНачалаСобытия
|ПОМЕСТИТЬ ВТФизлица
|ИЗ
| ВТДанныеДокументов КАК ДанныеДокументов
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| ВТДанныеДокументов.Руководитель,
| ВТДанныеДокументов.ДатаНачалаСобытия
|ИЗ
| ВТДанныеДокументов КАК ВТДанныеДокументов";
Запрос.Выполнить();
Описатель = КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеФизическихЛиц(
Запрос.МенеджерВременныхТаблиц,
"ВТФизлица",
"ФизическоеЛицо,ДатаНачалаСобытия");
ИменаПолей = "СтраховойНомерПФР, Фамилия, Имя, Отчество, ФИОПолные, ИОФамилия";
КадровыйУчет.СоздатьВТКадровыеДанныеФизическихЛиц(Описатель, Истина, ИменаПолей);
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокументов.Ссылка КАК Ссылка,
| ДанныеДокументов.ДатаПодачи КАК ДатаПодачи,
| ДанныеДокументов.ФизическоеЛицо КАК ФизическоеЛицо,
| ДанныеДокументов.ПервыйРасчетныйГод КАК ПервыйРасчетныйГод,
| ДанныеДокументов.ВторойРасчетныйГод КАК ВторойРасчетныйГод,
| ДанныеДокументов.ФиксПериодРасчетаСреднегоЗаработка КАК ФиксПериодРасчетаСреднегоЗаработка,
| ДанныеДокументов.ДатаНачалаСобытия КАК ДатаНачалаСобытия,
| ДанныеДокументов.Руководитель КАК Руководитель,
| ДанныеДокументов.ДолжностьРуководителя КАК ДолжностьРуководителя,
| ВЫБОР
| КОГДА ОрганизацияСправочник.НаименованиеПолное ПОДОБНО """"
| ТОГДА ОрганизацияСправочник.Наименование
| ИНАЧЕ ОрганизацияСправочник.НаименованиеПолное
| КОНЕЦ КАК СтраховательНаименование,
| РуководительКадровыеДанные.ИОФамилия КАК РуководительРасшифровкаПодписи,
| РуководительКадровыеДанные.ФИОПолные КАК РуководительФИО,
| ФизическоеЛицоКадровыеДанные.СтраховойНомерПФР КАК СНИЛС,
| ФизическоеЛицоКадровыеДанные.Фамилия КАК Фамилия,
| ФизическоеЛицоКадровыеДанные.Имя КАК Имя,
| ФизическоеЛицоКадровыеДанные.Отчество КАК Отчество
|ИЗ
| ВТДанныеДокументов КАК ДанныеДокументов
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК ОрганизацияСправочник
| ПО ДанныеДокументов.Организация = ОрганизацияСправочник.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеФизическихЛиц КАК РуководительКадровыеДанные
| ПО ДанныеДокументов.Руководитель = РуководительКадровыеДанные.ФизическоеЛицо
| И ДанныеДокументов.ДатаНачалаСобытия = РуководительКадровыеДанные.Период
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеФизическихЛиц КАК ФизическоеЛицоКадровыеДанные
| ПО ДанныеДокументов.ФизическоеЛицо = ФизическоеЛицоКадровыеДанные.ФизическоеЛицо
| И ДанныеДокументов.ДатаНачалаСобытия = ФизическоеЛицоКадровыеДанные.Период";
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
#КонецОбласти
Функция ИдентификаторСтрокПоказателейПособияДоТрехЛет() Экспорт
Возврат 9 * 1000000;
КонецФункции
Функция ДанныеДляПроведения(РеквизитыДляПроведения, СтруктураВидовУчета)
ДанныеДляПроведения = РасчетЗарплатыРасширенный.СоздатьДанныеДляПроведенияНачисленияЗарплаты();
Если РеквизитыДляПроведения.РассчитатьЗарплату И РеквизитыДляПроведения.НачисленияУтверждены Тогда
Если СтруктураВидовУчета.ОстальныеВидыУчета Или СтруктураВидовУчета.СтраховыеВзносы Тогда
РасчетЗарплатыРасширенный.ЗаполнитьНачисления(ДанныеДляПроведения, РеквизитыДляПроведения.Ссылка, "ОплатаТруда,ОплатаЛьгот", "Ссылка.ПериодРегистрации");
ОтражениеЗарплатыВБухучете.СоздатьВТНачисленияСДаннымиЕНВД(РеквизитыДляПроведения.Организация, РеквизитыДляПроведения.ПериодРегистрации, ДанныеДляПроведения.МенеджерВременныхТаблиц, ДанныеДляПроведения.НачисленияПоСотрудникам);
РасчетЗарплаты.ЗаполнитьДанныеСтраховыхВзносов(ДанныеДляПроведения, РеквизитыДляПроведения.Ссылка);
КонецЕсли;
Если СтруктураВидовУчета.ОстальныеВидыУчета Тогда
РасчетЗарплатыРасширенный.ЗаполнитьУдержания(ДанныеДляПроведения, РеквизитыДляПроведения.Ссылка);
РасчетЗарплаты.ЗаполнитьСписокФизическихЛиц(ДанныеДляПроведения, РеквизитыДляПроведения.Ссылка, РеквизитыДляПроведения.ИсправленныйДокумент);
РасчетЗарплатыРасширенный.ЗаполнитьПогашениеЗадолженностиПоУдержаниям(ДанныеДляПроведения, РеквизитыДляПроведения.Ссылка, РеквизитыДляПроведения.ПериодРегистрации);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплата");
ПараметрыУправленческаяЗарплата = Модуль.ДополнительныеПараметрыПодготовкиДанныхДляПроведения();
ПараметрыУправленческаяЗарплата.ПолеДатыДействия = "Ссылка.ПериодРегистрации";
ПараметрыУправленческаяЗарплата.ПолеВидаНачисления = "Начисление";
Модуль.ПриПодготовкеДанныхДляПроведенияДокументаРасчетаЗарплаты(ДанныеДляПроведения, РеквизитыДляПроведения.Ссылка, ПараметрыУправленческаяЗарплата);
КонецЕсли;
РасчетЗарплаты.ЗаполнитьДанныеНДФЛ(ДанныеДляПроведения, РеквизитыДляПроведения.Ссылка);
РасчетЗарплатыРасширенный.ЗаполнитьДанныеКорректировкиВыплаты(ДанныеДляПроведения, РеквизитыДляПроведения.Ссылка);
ЗаймыСотрудникам.ЗаполнитьДанныеДляПроведенияПоЗаймам(ДанныеДляПроведения, РеквизитыДляПроведения.Ссылка, РеквизитыДляПроведения.ПланируемаяДатаВыплаты, "Ссылка.ПериодРегистрации");
КонецЕсли;
Если СтруктураВидовУчета.ДанныеДляРасчетаСреднего Тогда
ДополнительныеПараметры = УчетСреднегоЗаработка.ДополнительныеПараметрыРегистрацииДанныхСреднегоЗаработка("ОплатаТруда");
ДополнительныеПараметры.МесяцНачисления = "Ссылка.ПериодРегистрации";
УчетСреднегоЗаработка.ЗаполнитьТаблицыДляРегистрацииДанныхСреднегоЗаработка(ДанныеДляПроведения, РеквизитыДляПроведения.Ссылка, ДополнительныеПараметры);
КонецЕсли;
КонецЕсли;
Если СтруктураВидовУчета.ОстальныеВидыУчета Тогда
Если РеквизитыДляПроведения.НачисленияУтверждены Тогда
ЗаполнитьУсловияОплатыОтпускаПоУходуЗаРебенком(РеквизитыДляПроведения, ДанныеДляПроведения);
ЗаполнитьПлановыеНачисленияИПоказатели(РеквизитыДляПроведения, ДанныеДляПроведения);
ЗаполнитьПрименениеПлановыхНачислений(РеквизитыДляПроведения, ДанныеДляПроведения);
ЗаполнитьПрименениеДополнительныхПоказателей(РеквизитыДляПроведения, ДанныеДляПроведения);
ЗаполнитьПересчетТарифныхСтавок(РеквизитыДляПроведения, ДанныеДляПроведения);
ЗаполнитьСовокупныеТарифныеСтавки(РеквизитыДляПроведения, ДанныеДляПроведения);
КонецЕсли;
ЗаполнитьДанныеВремениРегистрацииДокумента(РеквизитыДляПроведения, ДанныеДляПроведения);
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", РеквизитыДляПроведения.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| СреднийЗаработокФСС.Ссылка КАК ДокументОснование,
| СреднийЗаработокФСС.СтатьяФинансирования КАК СтатьяФинансирования,
| СУММА(СреднийЗаработокФСС.Сумма) КАК Коэффициент
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком.СреднийЗаработокФСС КАК СреднийЗаработокФСС
|ГДЕ
| СреднийЗаработокФСС.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| СреднийЗаработокФСС.Ссылка,
| СреднийЗаработокФСС.СтатьяФинансирования";
ДанныеДляПроведения.Вставить("КоэффициентыРаспределенияСреднегоЗаработка", Запрос.Выполнить().Выгрузить());
ЗаполнитьПериодыОтпусков(РеквизитыДляПроведения, ДанныеДляПроведения);
КонецЕсли;
Возврат ДанныеДляПроведения;
КонецФункции
Процедура ЗаполнитьУсловияОплатыОтпускаПоУходуЗаРебенком(РеквизитыДляПроведения, ДанныеДляПроведения)
УсловияОплаты = Новый ТаблицаЗначений;
УсловияОплаты.Колонки.Добавить("СтраховойСлучай");
УсловияОплаты.Колонки.Добавить("Период");
УсловияОплаты.Колонки.Добавить("Сотрудник");
УсловияОплаты.Колонки.Добавить("Организация");
УсловияОплаты.Колонки.Добавить("ФизическоеЛицо");
УсловияОплаты.Колонки.Добавить("СреднийДневнойЗаработок");
УсловияОплаты.Колонки.Добавить("МинимальныйСреднедневнойЗаработок");
УсловияОплаты.Колонки.Добавить("КоличествоДетей");
УсловияОплаты.Колонки.Добавить("КоличествоПервыхДетей");
УсловияОплаты.Колонки.Добавить("ПрименятьЛьготыПриНачисленииПособия");
УсловияОплаты.Колонки.Добавить("РасчетПоПравилам2010Года");
УсловияОплаты.Колонки.Добавить("ФинансированиеФедеральнымБюджетом");
УсловияОплаты.Колонки.Добавить("ДатаНачалаСобытия");
УсловияОплаты.Колонки.Добавить("ДоляНеполногоВремени");
УсловияОплаты.Колонки.Добавить("РайонныйКоэффициентРФнаНачалоСобытия");
Если РеквизитыДляПроведения.ВыплачиватьПособиеДоПолутораЛет Тогда
НовыеУсловияОплаты = УсловияОплаты.Добавить();
НовыеУсловияОплаты.СтраховойСлучай = РеквизитыДляПроведения.Ссылка;
НовыеУсловияОплаты.Период = РеквизитыДляПроведения.ДатаНачала;
НовыеУсловияОплаты.ДатаНачалаСобытия = РеквизитыДляПроведения.ДатаНачала;
НовыеУсловияОплаты.Сотрудник = РеквизитыДляПроведения.ОсновнойСотрудник;
НовыеУсловияОплаты.Организация = РеквизитыДляПроведения.Организация;
НовыеУсловияОплаты.ФизическоеЛицо = РеквизитыДляПроведения.Сотрудник;
НовыеУсловияОплаты.СреднийДневнойЗаработок = РеквизитыДляПроведения.СреднийДневнойЗаработок;
НовыеУсловияОплаты.МинимальныйСреднедневнойЗаработок = РеквизитыДляПроведения.МинимальныйСреднедневнойЗаработок;
НовыеУсловияОплаты.КоличествоДетей = РеквизитыДляПроведения.КоличествоДетей;
НовыеУсловияОплаты.КоличествоПервыхДетей = РеквизитыДляПроведения.КоличествоПервыхДетей;
НовыеУсловияОплаты.ПрименятьЛьготыПриНачисленииПособия = РеквизитыДляПроведения.ПрименятьЛьготыПриНачисленииПособия;
НовыеУсловияОплаты.ФинансированиеФедеральнымБюджетом = РеквизитыДляПроведения.ФинансированиеФедеральнымБюджетом;
НовыеУсловияОплаты.РасчетПоПравилам2010Года = РеквизитыДляПроведения.РасчетПоПравилам2010Года;
НовыеУсловияОплаты.ДоляНеполногоВремени = РеквизитыДляПроведения.ДоляНеполногоВремени;
НовыеУсловияОплаты.РайонныйКоэффициентРФнаНачалоСобытия = РеквизитыДляПроведения.РайонныйКоэффициентРФнаНачалоСобытия;
КонецЕсли;
ДанныеДляПроведения.Вставить("УсловияОплатыОтпускаПоУходуЗаРебенком", УсловияОплаты);
КонецПроцедуры
Процедура ЗаполнитьПлановыеНачисленияИПоказатели(РеквизитыДляПроведения, ДанныеДляПроведения)
ПлановыеНачисления = РасчетЗарплатыРасширенный.ПустаяТаблицаРегистрацииПлановыхНачислений();
ПлановыеНачисления.Колонки.Добавить("ИспользуетсяПоОкончании", Новый ОписаниеТипов("Булево"));
ЗначенияПоказателей = РасчетЗарплатыРасширенный.ПустаяТаблицаРегистрацииЗначенийПериодическихПоказателей();
ГоловнаяОрганизация = ЗарплатаКадры.ГоловнаяОрганизация(РеквизитыДляПроведения.Организация);
Если РеквизитыДляПроведения.ВыплачиватьПособиеДоПолутораЛет Тогда
ДобавитьПособиеПоУходуДоПолутораЛет(РеквизитыДляПроведения, ПлановыеНачисления, ГоловнаяОрганизация);
КонецЕсли;
Если РеквизитыДляПроведения.ВыплачиватьПособиеДоТрехЛет Тогда
ДобавитьПособиеПоУходуДоТрехЛет(РеквизитыДляПроведения, ПлановыеНачисления, ГоловнаяОрганизация);
ДобавитьПоказателиПособияПоУходуДоТрехЛет(РеквизитыДляПроведения, ЗначенияПоказателей);
КонецЕсли;
Если РеквизитыДляПроведения.ИзменитьНачисления Тогда
ДобавитьПлановыеНачисления(РеквизитыДляПроведения, ПлановыеНачисления);
ДобавитьПлановыеПоказатели(РеквизитыДляПроведения, ЗначенияПоказателей);
КонецЕсли;
Если РеквизитыДляПроведения.ИзменитьЛьготы И Не РеквизитыДляПроведения.НеНачислятьЗарплатуИНеВыплачиватьАвансВоВремяОтпуска Тогда
ДобавитьЛьготы(РеквизитыДляПроведения, ПлановыеНачисления);
ДобавитьПоказателиЛьгот(РеквизитыДляПроведения, ЗначенияПоказателей);
КонецЕсли;
ДанныеДляПроведения.Вставить("ПлановыеНачисления", ПлановыеНачисления);
ДанныеДляПроведения.Вставить("ЗначенияПоказателей", ЗначенияПоказателей);
КонецПроцедуры
Процедура ЗаполнитьПрименениеПлановыхНачислений(РеквизитыДляПроведения, ДанныеДляПроведения)
ПрименениеНачислений = РасчетЗарплатыРасширенный.ПустаяТаблицаРегистрацииПримененияПлановыхНачислений();
Если РеквизитыДляПроведения.НеНачислятьЗарплатуИНеВыплачиватьАвансВоВремяОтпуска Тогда
МассивРабочихМест = КадровыйУчетРасширенный.МассивСотрудников(РеквизитыДляПроведения.Сотрудник, РеквизитыДляПроведения.Организация, РеквизитыДляПроведения.ДатаОкончания);
Для каждого РабочееМесто Из МассивРабочихМест Цикл
ПустоеПрименениеНачислений = ПрименениеНачислений.Добавить();
ПустоеПрименениеНачислений.Сотрудник = РабочееМесто;
КонецЦикла;
ПрименениеНачислений.ЗаполнитьЗначения(РеквизитыДляПроведения.ДатаНачала, "ДатаСобытия");
КонецЕсли;
ДанныеДляПроведения.Вставить("ПрименениеНачислений", ПрименениеНачислений);
КонецПроцедуры
Процедура ЗаполнитьПрименениеДополнительныхПоказателей(РеквизитыДляПроведения, ДанныеДляПроведения)
ПрименениеДополнительныхПоказателей = Неопределено;
Если РеквизитыДляПроведения.ИзменитьНачисления
И Не РеквизитыДляПроведения.НеНачислятьЗарплатуИНеВыплачиватьАвансВоВремяОтпуска Тогда
Запрос = ЗапросССсылкой(РеквизитыДляПроведения.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОтпускПоУходуЗаРебенкомПоказатели.Ссылка,
| ОтпускПоУходуЗаРебенкомПоказатели.Показатель,
| ОтпускПоУходуЗаРебенкомПоказатели.РабочееМесто
|ПОМЕСТИТЬ ВТПоказателиНачислений
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком.Начисления КАК ОтпускПоУходуЗаРебенкомНачисления
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтпускПоУходуЗаРебенком.Показатели КАК ОтпускПоУходуЗаРебенкомПоказатели
| ПО ОтпускПоУходуЗаРебенкомНачисления.Ссылка = ОтпускПоУходуЗаРебенкомПоказатели.Ссылка
| И ОтпускПоУходуЗаРебенкомНачисления.РабочееМесто = ОтпускПоУходуЗаРебенкомПоказатели.РабочееМесто
| И ОтпускПоУходуЗаРебенкомНачисления.ИдентификаторСтрокиВидаРасчета = ОтпускПоУходуЗаРебенкомПоказатели.ИдентификаторСтрокиВидаРасчета
|ГДЕ
| ОтпускПоУходуЗаРебенкомНачисления.Ссылка = &Ссылка
| И ОтпускПоУходуЗаРебенкомНачисления.Действие <> ЗНАЧЕНИЕ(Перечисление.ДействияСНачислениямиИУдержаниями.Отменить)
|;
|
|
|ВЫБРАТЬ
| ОтпускПоУходуЗаРебенкомПоказатели.Ссылка.ДатаНачала КАК ДатаСобытия,
| ОтпускПоУходуЗаРебенкомПоказатели.Ссылка.Организация КАК Организация,
| ОтпускПоУходуЗаРебенкомПоказатели.РабочееМесто КАК Сотрудник,
| ОтпускПоУходуЗаРебенкомПоказатели.Ссылка.Сотрудник КАК ФизическоеЛицо,
| ОтпускПоУходуЗаРебенкомПоказатели.Показатель КАК Показатель,
| ДАТАВРЕМЯ(1, 1, 1) КАК ДействуетДо,
| ВЫБОР
| КОГДА ОтпускПоУходуЗаРебенкомПоказатели.Действие = ЗНАЧЕНИЕ(Перечисление.ДействияСНачислениямиИУдержаниями.Отменить)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК Применение
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком.Показатели КАК ОтпускПоУходуЗаРебенкомПоказатели
| ЛЕВОЕ СОЕДИНЕНИЕ ВТПоказателиНачислений КАК ПоказателиНачислений
| ПО ОтпускПоУходуЗаРебенкомПоказатели.Ссылка = ПоказателиНачислений.Ссылка
| И ОтпускПоУходуЗаРебенкомПоказатели.РабочееМесто = ПоказателиНачислений.РабочееМесто
| И ОтпускПоУходуЗаРебенкомПоказатели.Показатель = ПоказателиНачислений.Показатель
|ГДЕ
| ОтпускПоУходуЗаРебенкомПоказатели.Ссылка = &Ссылка
| И ОтпускПоУходуЗаРебенкомПоказатели.ИдентификаторСтрокиВидаРасчета = 0
| И ОтпускПоУходуЗаРебенкомПоказатели.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиРасчетаЗарплаты.ПустаяСсылка)
| И ПоказателиНачислений.Показатель ЕСТЬ NULL ";
ПрименениеДополнительныхПоказателей = Запрос.Выполнить().Выгрузить();
КонецЕсли;
ДанныеДляПроведения.Вставить("ПрименениеДополнительныхПоказателей", ПрименениеДополнительныхПоказателей);
КонецПроцедуры
Процедура ЗаполнитьПересчетТарифныхСтавок(РеквизитыДляПроведения, ДанныеДляПроведения)
ПорядокПересчетаТарифнойСтавки = Неопределено;
Если РеквизитыДляПроведения.ИзменитьНачисления Тогда
Запрос = ЗапросССсылкой(РеквизитыДляПроведения.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| ПересчетТарифныхСтавок.Ссылка.ДатаНачала КАК ДатаСобытия,
| ПересчетТарифныхСтавок.РабочееМесто КАК Сотрудник,
| ПересчетТарифныхСтавок.Ссылка.Сотрудник КАК ФизическоеЛицо,
| ПересчетТарифныхСтавок.ПорядокРасчетаСтоимостиЕдиницыВремени КАК ПорядокРасчета,
| ДАТАВРЕМЯ(1, 1, 1) КАК ДействуетДо
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком.ПересчетТарифныхСтавок КАК ПересчетТарифныхСтавок
|ГДЕ
| ПересчетТарифныхСтавок.Ссылка = &Ссылка";
ПорядокПересчетаТарифнойСтавки = Запрос.Выполнить().Выгрузить();
КонецЕсли;
ДанныеДляПроведения.Вставить("ПорядокПересчетаТарифнойСтавки", ПорядокПересчетаТарифнойСтавки);
КонецПроцедуры
Процедура ЗаполнитьСовокупныеТарифныеСтавки(РеквизитыДляПроведения, ДанныеДляПроведения)
ДанныеСовокупныхТарифныхСтавок = Неопределено;
Если РеквизитыДляПроведения.ИзменитьНачисления Тогда
Запрос = ЗапросССсылкой(РеквизитыДляПроведения.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| ПересчетТарифныхСтавок.Ссылка.ДатаНачала КАК ДатаСобытия,
| ПересчетТарифныхСтавок.РабочееМесто КАК Сотрудник,
| ПересчетТарифныхСтавок.Ссылка.Сотрудник КАК ФизическоеЛицо,
| ПересчетТарифныхСтавок.СовокупнаяТарифнаяСтавка КАК Значение,
| ВЫБОР
| КОГДА ПересчетТарифныхСтавок.СовокупнаяТарифнаяСтавка = 0
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыТарифныхСтавок.ПустаяСсылка)
| ИНАЧЕ ПересчетТарифныхСтавок.ВидТарифнойСтавки
| КОНЕЦ КАК ВидТарифнойСтавки,
| ДАТАВРЕМЯ(1, 1, 1) КАК ДействуетДо
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком.ПересчетТарифныхСтавок КАК ПересчетТарифныхСтавок
|ГДЕ
| ПересчетТарифныхСтавок.Ссылка = &Ссылка";
ДанныеСовокупныхТарифныхСтавок = Запрос.Выполнить().Выгрузить();
КонецЕсли;
ДанныеДляПроведения.Вставить("ДанныеСовокупныхТарифныхСтавок", ДанныеСовокупныхТарифныхСтавок);
КонецПроцедуры
Процедура ЗаполнитьДанныеВремениРегистрацииДокумента(РеквизитыДляПроведения, ДанныеДляПроведения)
Запрос = ЗапросССсылкой(РеквизитыДляПроведения.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| ОтпускПоУходуЗаРебенкомНачисления.Ссылка.ДатаНачала КАК ДатаСобытия,
| ОтпускПоУходуЗаРебенкомНачисления.РабочееМесто КАК Сотрудник
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком.Начисления КАК ОтпускПоУходуЗаРебенкомНачисления
|ГДЕ
| ОтпускПоУходуЗаРебенкомНачисления.Ссылка = &Ссылка";
ДанныеДляПроведения.Вставить("СотрудникиДаты", Запрос.Выполнить().Выгрузить());
КонецПроцедуры
Процедура ЗаполнитьПериодыОтпусков(РеквизитыДляПроведения, ДанныеДляПроведения)
ПериодыОтпусков = ОстаткиОтпусков.ПустаяТаблицаПериодовОтпусков();
ИсходныйДокумент = РеквизитыДляПроведения.Ссылка;
ИсходныйДокументДата = РеквизитыДляПроведения.Дата;
ИсходныйДокументНомер = ЗарплатаКадрыОтчеты.НомерНаПечать(РеквизитыДляПроведения.Номер, РеквизитыДляПроведения.НомерПриказа);
Если ЗначениеЗаполнено(РеквизитыДляПроведения.ИсправленныйДокумент) Тогда
ИсходныйДокумент = ИсправлениеДокументовЗарплатаКадры.ПервыйДокументЦепочкиИсправлений(РеквизитыДляПроведения.ИсправленныйДокумент);
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ИсходныйДокумент, "Дата, Номер, НомерПриказа");
ИсходныйДокументДата = ЗначенияРеквизитов["Дата"];
ИсходныйДокументНомер = ЗарплатаКадрыОтчеты.НомерНаПечать(ЗначенияРеквизитов["Номер"], ЗначенияРеквизитов["НомерПриказа"]);
КонецЕсли;
НоваяСтрока = ПериодыОтпусков.Добавить();
НоваяСтрока.Сотрудник = РеквизитыДляПроведения.ОсновнойСотрудник;
НоваяСтрока.ДатаНачала = РеквизитыДляПроведения.ДатаНачала;
НоваяСтрока.ДатаОкончания = РеквизитыДляПроведения.ДатаОкончания;
НоваяСтрока.ПериодЗаписи = РеквизитыДляПроведения.ДатаНачала;
НоваяСтрока.КоличествоДней = ЗарплатаКадрыКлиентСервер.ДнейВПериоде(
РеквизитыДляПроведения.ДатаНачала, РеквизитыДляПроведения.ДатаОкончания);
НоваяСтрока.Состояние = Перечисления.СостоянияСотрудника.ОтпускПоУходуЗаРебенком;
НоваяСтрока.ИсходныйДокумент = ИсходныйДокумент;
НоваяСтрока.ИсходныйДокументДата = ИсходныйДокументДата;
НоваяСтрока.ИсходныйДокументНомер = ИсходныйДокументНомер;
ДанныеДляПроведения.Вставить("ПериодыОтпусков", ПериодыОтпусков);
КонецПроцедуры
Процедура ДобавитьПособиеПоУходуДоПолутораЛет(РеквизитыДляПроведения, ПлановыеНачисления, ГоловнаяОрганизация)
НовоеПлановоеНачисление = ПлановыеНачисления.Добавить();
НовоеПлановоеНачисление.ДатаСобытия = РеквизитыДляПроведения.ДатаНачала;
НовоеПлановоеНачисление.ДействуетДо = КонецДня(РеквизитыДляПроведения.ДатаОкончанияПособияДоПолутораЛет) + 1;
НовоеПлановоеНачисление.Сотрудник = РеквизитыДляПроведения.ОсновнойСотрудник;
НовоеПлановоеНачисление.ФизическоеЛицо = РеквизитыДляПроведения.Сотрудник;
НовоеПлановоеНачисление.ГоловнаяОрганизация = ГоловнаяОрганизация;
НовоеПлановоеНачисление.Начисление = РеквизитыДляПроведения.ПособиеДоПолутораЛет;
НовоеПлановоеНачисление.Используется = Истина;
КонецПроцедуры
Процедура ДобавитьПособиеПоУходуДоТрехЛет(РеквизитыДляПроведения, ПлановыеНачисления, ГоловнаяОрганизация)
НовоеПлановоеНачисление = ПлановыеНачисления.Добавить();
НовоеПлановоеНачисление.ДатаСобытия = РеквизитыДляПроведения.ДатаНачала;
НовоеПлановоеНачисление.ДействуетДо = КонецДня(РеквизитыДляПроведения.ДатаОкончанияПособияДоТрехЛет) + 1;
НовоеПлановоеНачисление.Сотрудник = РеквизитыДляПроведения.ОсновнойСотрудник;
НовоеПлановоеНачисление.ФизическоеЛицо = РеквизитыДляПроведения.Сотрудник;
НовоеПлановоеНачисление.ГоловнаяОрганизация = ГоловнаяОрганизация;
НовоеПлановоеНачисление.Начисление = РеквизитыДляПроведения.ПособиеДоТрехЛет;
НовоеПлановоеНачисление.Размер = РеквизитыДляПроведения.РазмерПособияДоТрехЛетФиксированнойСуммой;
НовоеПлановоеНачисление.Используется = Истина;
КонецПроцедуры
Процедура ДобавитьПоказателиПособияПоУходуДоТрехЛет(РеквизитыДляПроведения, ЗначенияПоказателей)
ОтборПоказателейПособия = Новый Структура("ИдентификаторСтрокиВидаРасчета", Документы.ОтпускПоУходуЗаРебенком.ИдентификаторСтрокПоказателейПособияДоТрехЛет());
НайденныеСтроки = РеквизитыДляПроведения.Показатели.НайтиСтроки(ОтборПоказателейПособия);
Для Каждого СтрокаТаблицы Из НайденныеСтроки Цикл
НоваяСтрока = ЗначенияПоказателей.Добавить();
НоваяСтрока.ДатаСобытия = РеквизитыДляПроведения.ДатаНачала;
НоваяСтрока.ДействуетДо = КонецДня(РеквизитыДляПроведения.ДатаОкончанияПособияДоТрехЛет) + 1;
НоваяСтрока.Сотрудник = РеквизитыДляПроведения.ОсновнойСотрудник;
НоваяСтрока.ФизическоеЛицо = РеквизитыДляПроведения.Сотрудник;
НоваяСтрока.Организация = РеквизитыДляПроведения.Организация;
НоваяСтрока.Показатель = СтрокаТаблицы.Показатель;
НоваяСтрока.Значение = СтрокаТаблицы.Значение;
КонецЦикла;
КонецПроцедуры
Процедура ДобавитьПлановыеНачисления(РеквизитыДляПроведения, ПлановыеНачисления)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", РеквизитыДляПроведения.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| ОтпускПоУходуЗаРебенком.ДатаНачала КАК ДатаСобытия,
| ДАТАВРЕМЯ(1, 1, 1) КАК ДействуетДо,
| ОтпускПоУходуЗаРебенкомНачисления.РабочееМесто КАК Сотрудник,
| ОтпускПоУходуЗаРебенкомНачисления.Начисление,
| ОтпускПоУходуЗаРебенкомНачисления.ДокументОснование,
| ВЫБОР
| КОГДА ОтпускПоУходуЗаРебенкомНачисления.Действие = ЗНАЧЕНИЕ(Перечисление.ДействияСНачислениямиИУдержаниями.Отменить)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК Используется,
| ВЫБОР
| КОГДА ОтпускПоУходуЗаРебенкомНачисления.Действие = ЗНАЧЕНИЕ(Перечисление.ДействияСНачислениямиИУдержаниями.Отменить)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ИспользуетсяПоОкончании,
| ОтпускПоУходуЗаРебенком.Сотрудник КАК ФизическоеЛицо,
| ОтпускПоУходуЗаРебенкомНачисления.Размер,
| ОтпускПоУходуЗаРебенком.Организация.ГоловнаяОрганизация КАК ГоловнаяОрганизация
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком.Начисления КАК ОтпускПоУходуЗаРебенкомНачисления
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтпускПоУходуЗаРебенком КАК ОтпускПоУходуЗаРебенком
| ПО ОтпускПоУходуЗаРебенкомНачисления.Ссылка = ОтпускПоУходуЗаРебенком.Ссылка
|ГДЕ
| ОтпускПоУходуЗаРебенком.Ссылка = &Ссылка";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ПлановыеНачисления.Добавить(), Выборка);
КонецЦикла;
КонецПроцедуры
Процедура ДобавитьПлановыеПоказатели(РеквизитыДляПроведения, ЗначенияПоказателей)
Запрос = ЗапросССсылкой(РеквизитыДляПроведения.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| ОтпускПоУходуЗаРебенком.Организация КАК Организация,
| ОтпускПоУходуЗаРебенком.Сотрудник КАК ФизическоеЛицо,
| ОтпускПоУходуЗаРебенкомНачисления.РабочееМесто КАК Сотрудник,
| ОтпускПоУходуЗаРебенкомПоказатели.Показатель КАК Показатель,
| ОтпускПоУходуЗаРебенкомНачисления.ДокументОснование КАК ДокументОснование,
| МАКСИМУМ(ОтпускПоУходуЗаРебенкомПоказатели.Значение) КАК Значение,
| ОтпускПоУходуЗаРебенком.ДатаНачала КАК ДатаСобытия,
| ДАТАВРЕМЯ(1, 1, 1) КАК ДействуетДо
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком.Показатели КАК ОтпускПоУходуЗаРебенкомПоказатели
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтпускПоУходуЗаРебенком.Начисления КАК ОтпускПоУходуЗаРебенкомНачисления
| ПО ОтпускПоУходуЗаРебенкомПоказатели.Ссылка = ОтпускПоУходуЗаРебенкомНачисления.Ссылка
| И ОтпускПоУходуЗаРебенкомПоказатели.ИдентификаторСтрокиВидаРасчета = ОтпускПоУходуЗаРебенкомНачисления.ИдентификаторСтрокиВидаРасчета
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтпускПоУходуЗаРебенком КАК ОтпускПоУходуЗаРебенком
| ПО ОтпускПоУходуЗаРебенкомПоказатели.Ссылка = ОтпускПоУходуЗаРебенком.Ссылка
| И (ОтпускПоУходуЗаРебенком.Ссылка = &Ссылка)
|
|СГРУППИРОВАТЬ ПО
| ОтпускПоУходуЗаРебенком.Организация,
| ОтпускПоУходуЗаРебенком.Сотрудник,
| ОтпускПоУходуЗаРебенкомНачисления.РабочееМесто,
| ОтпускПоУходуЗаРебенкомПоказатели.Показатель,
| ОтпускПоУходуЗаРебенкомНачисления.ДокументОснование,
| ОтпускПоУходуЗаРебенком.ДатаНачала";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ЗначенияПоказателей.Добавить(), Выборка);
КонецЦикла;
КонецПроцедуры
Процедура ДобавитьЛьготы(РеквизитыДляПроведения, ПлановыеНачисления)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", РеквизитыДляПроведения.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| ОтпускПоУходуЗаРебенкомЛьготы.Ссылка.ДатаНачала КАК ДатаСобытия,
| ДАТАВРЕМЯ(1, 1, 1) КАК ДействуетДо,
| ОтпускПоУходуЗаРебенкомЛьготы.РабочееМесто КАК Сотрудник,
| ОтпускПоУходуЗаРебенкомЛьготы.Льгота КАК Начисление,
| ОтпускПоУходуЗаРебенкомЛьготы.ДокументОснование КАК ДокументОснование,
| ВЫБОР
| КОГДА ОтпускПоУходуЗаРебенкомЛьготы.Действие = ЗНАЧЕНИЕ(Перечисление.ДействияСНачислениямиИУдержаниями.Отменить)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК Используется,
| ВЫБОР
| КОГДА ОтпускПоУходуЗаРебенкомЛьготы.Действие = ЗНАЧЕНИЕ(Перечисление.ДействияСНачислениямиИУдержаниями.Отменить)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ИспользуетсяПоОкончании,
| ОтпускПоУходуЗаРебенкомЛьготы.Ссылка.Сотрудник КАК ФизическоеЛицо,
| ОтпускПоУходуЗаРебенкомЛьготы.Размер КАК Размер,
| ОтпускПоУходуЗаРебенкомЛьготы.Ссылка.Организация.ГоловнаяОрганизация КАК ГоловнаяОрганизация
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком.Льготы КАК ОтпускПоУходуЗаРебенкомЛьготы
|ГДЕ
| ОтпускПоУходуЗаРебенкомЛьготы.Ссылка = &Ссылка";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ПлановыеНачисления.Добавить(), Выборка);
КонецЦикла;
КонецПроцедуры
Процедура ДобавитьПоказателиЛьгот(РеквизитыДляПроведения, ЗначенияПоказателей)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", РеквизитыДляПроведения.Ссылка);
Запрос.Текст = "ВЫБРАТЬ
| ОтпускПоУходуЗаРебенкомПоказатели.Ссылка.Организация КАК Организация,
| ОтпускПоУходуЗаРебенкомПоказатели.Ссылка.Сотрудник КАК ФизическоеЛицо,
| ОтпускПоУходуЗаРебенкомЛьготы.РабочееМесто КАК Сотрудник,
| ОтпускПоУходуЗаРебенкомПоказатели.Показатель КАК Показатель,
| ОтпускПоУходуЗаРебенкомЛьготы.ДокументОснование КАК ДокументОснование,
| ОтпускПоУходуЗаРебенкомПоказатели.Значение КАК Значение,
| ОтпускПоУходуЗаРебенкомПоказатели.Ссылка.ДатаНачала КАК ДатаСобытия,
| ДАТАВРЕМЯ(1, 1, 1) КАК ДействуетДо
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком.Показатели КАК ОтпускПоУходуЗаРебенкомПоказатели
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтпускПоУходуЗаРебенком.Льготы КАК ОтпускПоУходуЗаРебенкомЛьготы
| ПО ОтпускПоУходуЗаРебенкомПоказатели.Ссылка = ОтпускПоУходуЗаРебенкомЛьготы.Ссылка
| И ОтпускПоУходуЗаРебенкомПоказатели.ИдентификаторСтрокиВидаРасчета = ОтпускПоУходуЗаРебенкомЛьготы.ИдентификаторСтрокиВидаРасчета
| И (ОтпускПоУходуЗаРебенкомЛьготы.Действие <> ЗНАЧЕНИЕ(Перечисление.ДействияСНачислениямиИУдержаниями.Отменить))
| И (ОтпускПоУходуЗаРебенкомПоказатели.Ссылка = &Ссылка)";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ЗначенияПоказателей.Добавить(), Выборка);
КонецЦикла;
КонецПроцедуры
Функция ЗапросССсылкой(ДокументСсылка)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Возврат Запрос;
КонецФункции
Процедура ЗаполнитьТаблицыКорректировок(РеквизитыДляПроведения, ПараметрыКорректировок)
ТекстЗапроса =
"ВЫБРАТЬ
| КорректировкиНачислений.ФизическоеЛицо КАК ФизическоеЛицо,
| КорректировкиНачислений.ПорядокРасчета КАК ПорядокРасчета,
| КорректировкиНачислений.Начисление КАК Начисление,
| КорректировкиНачислений.СтатьяФинансирования КАК СтатьяФинансирования,
| КорректировкиНачислений.Период КАК Период,
| КорректировкиНачислений.Сумма КАК Сумма
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком.СреднийЗаработокФСС КАК КорректировкиНачислений
|ГДЕ
| КорректировкиНачислений.Источник = ЗНАЧЕНИЕ(Перечисление.ИсточникиДанныхДляРасчетаСреднегоЗаработка.СведенияДоНачалаЭксплуатации)
| И КорректировкиНачислений.Ссылка = &Ссылка
|;
|
|
|ВЫБРАТЬ
| КорректировкиВремени.ФизическоеЛицо КАК ФизическоеЛицо,
| КорректировкиВремени.Период КАК Период,
| КорректировкиВремени.ОтработаноДнейКалендарных КАК ОтработаноДнейКалендарных,
| КорректировкиВремени.ДнейБолезниУходаЗаДетьми КАК ДнейБолезниУходаЗаДетьми
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком.ОтработанноеВремяДляСреднегоФСС КАК КорректировкиВремени
|ГДЕ
| КорректировкиВремени.Источник <> ЗНАЧЕНИЕ(Перечисление.ИсточникиДанныхДляРасчетаСреднегоЗаработка.Исправления)
| И КорректировкиВремени.Ссылка = &Ссылка
|;
|
|
|ВЫБРАТЬ
| ПериодыОтсутствий.Ссылка КАК Ссылка,
| ПериодыОтсутствий.НомерСтроки КАК НомерСтроки,
| ПериодыОтсутствий.Начало КАК Начало,
| ПериодыОтсутствий.Окончание КАК Окончание,
| ПериодыОтсутствий.Дни КАК Дни,
| ПериодыОтсутствий.ВидБолезниУходаЗаДетьми КАК ВидБолезниУходаЗаДетьми,
| ПериодыОтсутствий.Источник КАК Источник
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком.ПериодыБолезниУходаЗаДетьми КАК ПериодыОтсутствий
|ГДЕ
| ПериодыОтсутствий.Источник = ЗНАЧЕНИЕ(Перечисление.ИсточникиДанныхДляРасчетаСреднегоЗаработка.СведенияДоНачалаЭксплуатации)
| И ПериодыОтсутствий.Ссылка = &Ссылка";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Ссылка", РеквизитыДляПроведения.Ссылка);
РезультатыЗапроса = Запрос.ВыполнитьПакет();
ПараметрыКорректировок.КорректировкиНачислений = РезультатыЗапроса[0].Выгрузить();
ПараметрыКорректировок.КорректировкиВремени = РезультатыЗапроса[1].Выгрузить();
ПараметрыКорректировок.ПериодыОтсутствий = РезультатыЗапроса[2].Выгрузить();
КонецПроцедуры
Функция РеквизитыДляПроведения(ДокументСсылка)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОтпускПоУходуЗаРебенком.Ссылка КАК Ссылка,
| ОтпускПоУходуЗаРебенком.Организация КАК Организация,
| ОтпускПоУходуЗаРебенком.ИсправленныйДокумент КАК ИсправленныйДокумент,
| ОтпускПоУходуЗаРебенком.ДатаНачала КАК ДатаНачала,
| ОтпускПоУходуЗаРебенком.ДатаОкончания КАК ДатаОкончания,
| ОтпускПоУходуЗаРебенком.НеНачислятьЗарплатуИНеВыплачиватьАвансВоВремяОтпуска КАК НеНачислятьЗарплатуИНеВыплачиватьАвансВоВремяОтпуска,
| ОтпускПоУходуЗаРебенком.НачисленияУтверждены КАК НачисленияУтверждены,
| ОтпускПоУходуЗаРебенком.РассчитатьЗарплату КАК РассчитатьЗарплату,
| ОтпускПоУходуЗаРебенком.ПорядокВыплаты КАК ПорядокВыплаты,
| ОтпускПоУходуЗаРебенком.Дата КАК Дата,
| ОтпускПоУходуЗаРебенком.ОсновнойСотрудник КАК ОсновнойСотрудник,
| ОтпускПоУходуЗаРебенком.ПериодРасчетаСреднегоЗаработкаНачало КАК ПериодРасчетаСреднегоЗаработкаНачало,
| ОтпускПоУходуЗаРебенком.ПериодРасчетаСреднегоЗаработкаОкончание КАК ПериодРасчетаСреднегоЗаработкаОкончание,
| ОтпускПоУходуЗаРебенком.ОсвобождатьСтавку КАК ОсвобождатьСтавку,
| ОтпускПоУходуЗаРебенком.Номер КАК Номер,
| ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоПолутораЛет КАК ВыплачиватьПособиеДоПолутораЛет,
| ОтпускПоУходуЗаРебенком.Сотрудник КАК Сотрудник,
| ОтпускПоУходуЗаРебенком.СреднийДневнойЗаработок КАК СреднийДневнойЗаработок,
| ОтпускПоУходуЗаРебенком.МинимальныйСреднедневнойЗаработок КАК МинимальныйСреднедневнойЗаработок,
| ОтпускПоУходуЗаРебенком.КоличествоДетей КАК КоличествоДетей,
| ОтпускПоУходуЗаРебенком.КоличествоПервыхДетей КАК КоличествоПервыхДетей,
| ОтпускПоУходуЗаРебенком.ПрименятьЛьготыПриНачисленииПособия КАК ПрименятьЛьготыПриНачисленииПособия,
| ОтпускПоУходуЗаРебенком.ФинансированиеФедеральнымБюджетом КАК ФинансированиеФедеральнымБюджетом,
| ОтпускПоУходуЗаРебенком.РасчетПоПравилам2010Года КАК РасчетПоПравилам2010Года,
| ОтпускПоУходуЗаРебенком.ДоляНеполногоВремени КАК ДоляНеполногоВремени,
| ОтпускПоУходуЗаРебенком.РайонныйКоэффициентРФнаНачалоСобытия КАК РайонныйКоэффициентРФнаНачалоСобытия,
| ОтпускПоУходуЗаРебенком.ВыплачиватьПособиеДоТрехЛет КАК ВыплачиватьПособиеДоТрехЛет,
| ОтпускПоУходуЗаРебенком.ИзменитьНачисления КАК ИзменитьНачисления,
| ОтпускПоУходуЗаРебенком.ИзменитьЛьготы КАК ИзменитьЛьготы,
| ОтпускПоУходуЗаРебенком.ДатаОкончанияПособияДоПолутораЛет КАК ДатаОкончанияПособияДоПолутораЛет,
| ОтпускПоУходуЗаРебенком.ДатаОкончанияПособияДоТрехЛет КАК ДатаОкончанияПособияДоТрехЛет,
| ОтпускПоУходуЗаРебенком.РазмерПособияДоТрехЛетФиксированнойСуммой КАК РазмерПособияДоТрехЛетФиксированнойСуммой,
| ОтпускПоУходуЗаРебенком.ПериодРегистрации КАК ПериодРегистрации,
| ОтпускПоУходуЗаРебенком.НомерПриказа КАК НомерПриказа
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком КАК ОтпускПоУходуЗаРебенком
|ГДЕ
| ОтпускПоУходуЗаРебенком.Ссылка = &Ссылка
|;
|
|
|ВЫБРАТЬ
| ОтпускПоУходуЗаРебенкомРаспределениеПоТерриториямУсловиямТруда.НомерСтроки КАК НомерСтроки,
| ОтпускПоУходуЗаРебенкомРаспределениеПоТерриториямУсловиямТруда.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ОтпускПоУходуЗаРебенкомРаспределениеПоТерриториямУсловиямТруда.Территория КАК Территория,
| ОтпускПоУходуЗаРебенкомРаспределениеПоТерриториямУсловиямТруда.УсловияТруда КАК УсловияТруда,
| ОтпускПоУходуЗаРебенкомРаспределениеПоТерриториямУсловиямТруда.ДоляРаспределения КАК ДоляРаспределения,
| ОтпускПоУходуЗаРебенкомРаспределениеПоТерриториямУсловиямТруда.Результат КАК Результат,
| ОтпускПоУходуЗаРебенкомРаспределениеПоТерриториямУсловиямТруда.ИдентификаторСтрокиПоказателей КАК ИдентификаторСтрокиПоказателей,
| ОтпускПоУходуЗаРебенкомРаспределениеПоТерриториямУсловиямТруда.СуммаВычета КАК СуммаВычета,
| ОтпускПоУходуЗаРебенкомРаспределениеПоТерриториямУсловиямТруда.СкидкаПоВзносам КАК СкидкаПоВзносам,
| ОтпускПоУходуЗаРебенкомРаспределениеПоТерриториямУсловиямТруда.РанееНачислено КАК РанееНачислено
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком.РаспределениеПоТерриториямУсловиямТруда КАК ОтпускПоУходуЗаРебенкомРаспределениеПоТерриториямУсловиямТруда
|ГДЕ
| ОтпускПоУходуЗаРебенкомРаспределениеПоТерриториямУсловиямТруда.Ссылка = &Ссылка
|;
|
|
|ВЫБРАТЬ
| ОтпускПоУходуЗаРебенкомРаспределениеРезультатовНачислений.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ОтпускПоУходуЗаРебенкомРаспределениеРезультатовНачислений.Территория КАК Территория,
| ОтпускПоУходуЗаРебенкомРаспределениеРезультатовНачислений.СтатьяФинансирования КАК СтатьяФинансирования,
| ОтпускПоУходуЗаРебенкомРаспределениеРезультатовНачислений.СтатьяРасходов КАК СтатьяРасходов,
| ОтпускПоУходуЗаРебенкомРаспределениеРезультатовНачислений.СпособОтраженияЗарплатыВБухучете КАК СпособОтраженияЗарплатыВБухучете,
| ОтпускПоУходуЗаРебенкомРаспределениеРезультатовНачислений.ОблагаетсяЕНВД КАК ОблагаетсяЕНВД,
| СУММА(ОтпускПоУходуЗаРебенкомРаспределениеРезультатовНачислений.Результат) КАК Результат,
| ОтпускПоУходуЗаРебенкомРаспределениеРезультатовНачислений.ПодразделениеУчетаЗатрат КАК ПодразделениеУчетаЗатрат
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком.РаспределениеРезультатовНачислений КАК ОтпускПоУходуЗаРебенкомРаспределениеРезультатовНачислений
|ГДЕ
| ОтпускПоУходуЗаРебенкомРаспределениеРезультатовНачислений.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ОтпускПоУходуЗаРебенкомРаспределениеРезультатовНачислений.Территория,
| ОтпускПоУходуЗаРебенкомРаспределениеРезультатовНачислений.СтатьяФинансирования,
| ОтпускПоУходуЗаРебенкомРаспределениеРезультатовНачислений.СтатьяРасходов,
| ОтпускПоУходуЗаРебенкомРаспределениеРезультатовНачислений.ОблагаетсяЕНВД,
| ОтпускПоУходуЗаРебенкомРаспределениеРезультатовНачислений.ПодразделениеУчетаЗатрат,
| ОтпускПоУходуЗаРебенкомРаспределениеРезультатовНачислений.СпособОтраженияЗарплатыВБухучете,
| ОтпускПоУходуЗаРебенкомРаспределениеРезультатовНачислений.ИдентификаторСтроки
|;
|
|
|ВЫБРАТЬ
| ОтпускПоУходуЗаРебенкомПоказатели.НомерСтроки КАК НомерСтроки,
| ОтпускПоУходуЗаРебенкомПоказатели.ИдентификаторСтрокиВидаРасчета КАК ИдентификаторСтрокиВидаРасчета,
| ОтпускПоУходуЗаРебенкомПоказатели.Показатель КАК Показатель,
| ОтпускПоУходуЗаРебенкомПоказатели.Значение КАК Значение,
| ОтпускПоУходуЗаРебенкомПоказатели.Действие КАК Действие,
| ОтпускПоУходуЗаРебенкомПоказатели.РабочееМесто КАК РабочееМесто
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком.Показатели КАК ОтпускПоУходуЗаРебенкомПоказатели
|ГДЕ
| ОтпускПоУходуЗаРебенкомПоказатели.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Результаты = Запрос.ВыполнитьПакет();
РеквизитыДляПроведения = РеквизитыДляПроведенияПустаяСтруктура();
ВыборкаРеквизиты = Результаты[0].Выбрать();
Пока ВыборкаРеквизиты.Следующий() Цикл
ЗаполнитьЗначенияСвойств(РеквизитыДляПроведения, ВыборкаРеквизиты);
КонецЦикла;
РаспределениеПоТерриториямУсловиямТруда = Результаты[1].Выгрузить();
РаспределениеРезультатовНачислений = Результаты[2].Выгрузить();
РеквизитыДляПроведения.РаспределениеПоТерриториямУсловиямТруда = РаспределениеПоТерриториямУсловиямТруда;
РеквизитыДляПроведения.РаспределениеРезультатовНачислений = РаспределениеРезультатовНачислений;
Показатели = Результаты[3].Выгрузить();
РеквизитыДляПроведения.Показатели = Показатели;
Возврат РеквизитыДляПроведения;
КонецФункции
Функция РеквизитыДляПроведенияПустаяСтруктура()
РеквизитыДляПроведенияПустаяСтруктура = Новый Структура("Ссылка, Организация, ИсправленныйДокумент, ДатаНачала, ДатаОкончания, НеНачислятьЗарплатуИНеВыплачиватьАвансВоВремяОтпуска,
| НачисленияУтверждены, РассчитатьЗарплату, ПорядокВыплаты, Дата, ОсновнойСотрудник, ПериодРасчетаСреднегоЗаработкаНачало, ПериодРасчетаСреднегоЗаработкаОкончание, ОсвобождатьСтавку,
| Номер, ВыплачиватьПособиеДоПолутораЛет, Сотрудник, СреднийДневнойЗаработок, МинимальныйСреднедневнойЗаработок, КоличествоДетей, КоличествоПервыхДетей,
| ПрименятьЛьготыПриНачисленииПособия, ФинансированиеФедеральнымБюджетом, РасчетПоПравилам2010Года, ДоляНеполногоВремени, РайонныйКоэффициентРФнаНачалоСобытия,
| ВыплачиватьПособиеДоТрехЛет, ИзменитьНачисления, ИзменитьЛьготы, ДатаОкончанияПособияДоПолутораЛет, ДатаОкончанияПособияДоТрехЛет, РазмерПособияДоТрехЛетФиксированнойСуммой,
| РаспределениеПоТерриториямУсловиямТруда, Показатели, ПериодРегистрации, РаспределениеРезультатовНачислений");
Возврат РеквизитыДляПроведенияПустаяСтруктура;
КонецФункции
Функция ОписаниеДокумента() Экспорт
ОписаниеДокумента = ЗарплатаКадрыРасширенныйКлиентСервер.СтруктураОписанияДокумента();
ОписаниеДокумента.КраткоеНазваниеИменительныйПадеж = НСтр("ru = 'отпуск'");
ОписаниеДокумента.КраткоеНазваниеРодительныйПадеж = НСтр("ru = 'отпуска'");
ОписаниеДокумента.ИмяРеквизитаСотрудник = "ОсновнойСотрудник";
ОписаниеДокумента.ИмяРеквизитаОтсутствующийСотрудник = "ОсновнойСотрудник";
ОписаниеДокумента.ИмяРеквизитаДатаНачалаСобытия = "ДатаНачала";
ОписаниеДокумента.ИмяРеквизитаДатаОкончанияСобытия = "ДатаОкончания";
Возврат ОписаниеДокумента;
КонецФункции
Процедура ЗаполнитьДатуЗапретаРедактирования(ОбъектДокумента) Экспорт
ЗарплатаКадры.ЗаполнитьДатуЗапретаРедактирования(ОбъектДокумента, "ДатаНачала");
КонецПроцедуры
Процедура ЗаполнитьДатыЗапрета(ПараметрыОбновления) Экспорт
ОбновлениеВыполнено = Истина;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 100
| ОтпускПоУходуЗаРебенком.Ссылка КАК Ссылка,
| ОтпускПоУходуЗаРебенком.Дата КАК Дата
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком КАК ОтпускПоУходуЗаРебенком
|ГДЕ
| ОтпускПоУходуЗаРебенком.ДатаЗапрета = ДАТАВРЕМЯ(1, 1, 1)
|
|УПОРЯДОЧИТЬ ПО
| ОтпускПоУходуЗаРебенком.Дата УБЫВ";
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
ОбновлениеВыполнено = Ложь;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Если Не ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ПодготовитьОбновлениеДанных(
ПараметрыОбновления, Выборка.Ссылка.Метаданные().ПолноеИмя(), "Ссылка", Выборка.Ссылка) Тогда
Продолжить;
КонецЕсли;
ОбъектДокумента = Выборка.Ссылка.ПолучитьОбъект();
МенеджерДокумента = ОбщегоНазначения.МенеджерОбъектаПоСсылке(Выборка.Ссылка);
МенеджерДокумента.ЗаполнитьДатуЗапретаРедактирования(ОбъектДокумента);
ОбъектДокумента.ДополнительныеСвойства.Вставить("ОтключитьПроверкуДатыЗапретаИзменения", Истина);
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ОбъектДокумента);
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ЗавершитьОбновлениеДанных(ПараметрыОбновления);
КонецЦикла;
КонецЕсли;
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.УстановитьПараметрОбновления(ПараметрыОбновления, "ОбработкаЗавершена", ОбновлениеВыполнено);
КонецПроцедуры
Процедура ЗаполнитьИсходныеДанныеПерерасчетов(ПараметрыОбновления) Экспорт
ПараметрыЗаполнения = ПерерасчетЗарплаты.ПараметрыЗаполненияИсходныхДанныхПерерасчетов();
ПараметрыЗаполнения.ТаблицыНачислений = "ОплатаТруда,ОплатаЛьгот";
ПерерасчетЗарплаты.ЗаполнитьИсходныеДанныеПерерасчетов(ПараметрыОбновления, Метаданные.Документы.ОтпускПоУходуЗаРебенком, ПараметрыЗаполнения);
КонецПроцедуры
Процедура ЗаполнитьДвиженияЗанятостьПозицийШтатногоРасписания(ПараметрыОбновления = Неопределено) Экспорт
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Если ПараметрыОбновления = Неопределено Тогда
МассивОбновленных = Новый Массив;
Иначе
Если ПараметрыОбновления.Свойство("МассивОбновленных") Тогда
МассивОбновленных = ПараметрыОбновления.МассивОбновленных;
Иначе
МассивОбновленных = Новый Массив;
ПараметрыОбновления.Вставить("МассивОбновленных", МассивОбновленных);
КонецЕсли;
КонецЕсли;
Запрос.УстановитьПараметр("МассивОбновленных", МассивОбновленных);
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 1000
| ТаблицаДокумента.Ссылка КАК Регистратор
|ПОМЕСТИТЬ ВТРегистраторыКОбновлению
|ИЗ
| Документ.ОтпускПоУходуЗаРебенком КАК ТаблицаДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников КАК КадроваяИсторияСотрудников
| ПО ТаблицаДокумента.ОсновнойСотрудник = КадроваяИсторияСотрудников.Сотрудник
| И (КОНЕЦПЕРИОДА(ТаблицаДокумента.ДатаНачала, ДЕНЬ) >= КадроваяИсторияСотрудников.Период)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗанятостьПозицийШтатногоРасписания КАК ЗанятостьПозицийШтатногоРасписания
| ПО ТаблицаДокумента.Ссылка = ЗанятостьПозицийШтатногоРасписания.Регистратор
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтпускПоУходуЗаРебенком КАК ТаблицаДокументаИсправления
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗанятостьПозицийШтатногоРасписанияИспр КАК ЗанятостьПозицийШтатногоРасписанияИспр
| ПО ТаблицаДокументаИсправления.Ссылка = ЗанятостьПозицийШтатногоРасписанияИспр.РегистраторИзмерение
| ПО ТаблицаДокумента.Ссылка = ТаблицаДокументаИсправления.ИсправленныйДокумент
| И (ТаблицаДокументаИсправления.Проведен)
|ГДЕ
| ТаблицаДокумента.Проведен
| И ТаблицаДокумента.ОсвобождатьСтавку
| И ЗанятостьПозицийШтатногоРасписания.Регистратор ЕСТЬ NULL
| И ЗанятостьПозицийШтатногоРасписанияИспр.РегистраторИзмерение ЕСТЬ NULL
| И НЕ КадроваяИсторияСотрудников.Сотрудник ЕСТЬ NULL
| И НЕ ТаблицаДокумента.Ссылка В (&МассивОбновленных)
|;
|
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистраторыКОбновлению.Регистратор КАК Регистратор
|ИЗ
| ВТРегистраторыКОбновлению КАК РегистраторыКОбновлению";
Если ПараметрыОбновления = Неопределено Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "ПЕРВЫЕ 1000", "");
КонецЕсли;
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ЗавершитьОбработчик(ПараметрыОбновления);
Возврат;
КонецЕсли;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаДокумента.Ссылка КАК Регистратор,
| ТаблицаДокумента.ДатаНачала КАК ДатаНачала,
| ТаблицаДокумента.ДатаОкончания КАК ДатаОкончания,
| ТаблицаДокумента.Сотрудник КАК ФизическоеЛицо,
| ТаблицаДокументаИсправления.Ссылка КАК РегистраторИзмерение,
| ТаблицаДокумента.Организация КАК Организация
|ИЗ
| ВТРегистраторыКОбновлению КАК РегистраторыКОбновлению
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтпускПоУходуЗаРебенком КАК ТаблицаДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтпускПоУходуЗаРебенком КАК ТаблицаДокументаИсправления
| ПО ТаблицаДокумента.Ссылка = ТаблицаДокументаИсправления.ИсправленныйДокумент
| И (ТаблицаДокументаИсправления.Проведен)
| ПО РегистраторыКОбновлению.Регистратор = ТаблицаДокумента.Ссылка
|
|УПОРЯДОЧИТЬ ПО
| ДатаНачала,
| Регистратор";
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Количество() = 0 Тогда
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ЗавершитьОбработчик(ПараметрыОбновления);
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ПродолжитьОбработчик(ПараметрыОбновления);
МассивРегистраторов = Новый Массив;
Пока Выборка.СледующийПоЗначениюПоля("ДатаНачала") Цикл
Пока Выборка.СледующийПоЗначениюПоля("Регистратор") Цикл
МассивОбновленных.Добавить(Выборка.Регистратор);
Если ЗначениеЗаполнено(Выборка.РегистраторИзмерение) Тогда
Если Не ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ПодготовитьОбновлениеДанных(ПараметрыОбновления, "РегистрСведений.ЗанятостьПозицийШтатногоРасписанияИспр", "РегистраторИзмерение", Выборка.РегистраторИзмерение) Тогда
Продолжить;
КонецЕсли;
Иначе
МассивРегистраторов.Добавить(Выборка.Регистратор);
Если Не ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ПодготовитьОбновлениеДанных(ПараметрыОбновления, "РегистрСведений.ЗанятостьПозицийШтатногоРасписания.НаборЗаписей", "Регистратор", Выборка.Регистратор) Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
ДанныеВыборки = Новый Структура("Регистратор,ДатаНачала,ДатаОкончания,РегистраторИзмерение");
ЗаполнитьЗначенияСвойств(ДанныеВыборки, Выборка);
Сотрудники = КадровыйУчетРасширенный.МассивСотрудников(Выборка.ФизическоеЛицо, Выборка.Организация, Выборка.ДатаНачала);
ДокументОбъект = ДанныеВыборки.Регистратор.ПолучитьОбъект();
ЗарплатаКадрыРасширенный.УстановитьВремяРегистрацииДокумента(
ДокументОбъект.Движения,
КадровыйУчетРасширенный.ТаблицаСотрудникиДатыСобытия(Сотрудники, ДанныеВыборки.ДатаНачала),
ДанныеВыборки.Регистратор);
РегистрыСведений.ЗанятостьПозицийШтатногоРасписания.СформироватьДвиженияЗанятостиВременноОсвобожденныхПозицииПоТаблицеЗначений(
ДокументОбъект.Движения,
КадровыйУчетРасширенный.ТаблицаЗначенийСотрудникиПериоды(Сотрудники, ДанныеВыборки.ДатаНачала, ДанныеВыборки.ДатаОкончания),
Истина);
ЗарплатаКадрыРасширенныйСобытия.УстановитьСдвигПериодаРегистраСПериодичностьюСекунда(
ДокументОбъект.Движения.ЗанятостьПозицийШтатногоРасписания, Ложь, Истина);
Если ЗначениеЗаполнено(ДанныеВыборки.РегистраторИзмерение) Тогда
НаборЗаписей = РегистрыСведений.ЗанятостьПозицийШтатногоРасписанияИспр.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.РегистраторИзмерение.Установить(ДанныеВыборки.РегистраторИзмерение);
Для Каждого Запись Из ДокументОбъект.Движения.ЗанятостьПозицийШтатногоРасписания Цикл
НоваяЗапись = НаборЗаписей.Добавить();
ЗаполнитьЗначенияСвойств(НоваяЗапись, Запись);
НоваяЗапись.ПериодИзмерение = Запись.Период;
НоваяЗапись.РегистраторИзмерение = ДанныеВыборки.РегистраторИзмерение;
КонецЦикла;
Иначе
НаборЗаписей = ДокументОбъект.Движения.ЗанятостьПозицийШтатногоРасписания;
КонецЕсли;
НаборЗаписей.ДополнительныеСвойства.Вставить("ОтключитьПроверкуДатыЗапретаИзменения", Истина);
ОбновлениеИнформационнойБазы.ЗаписатьНаборЗаписей(НаборЗаписей);
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ЗавершитьОбновлениеДанных(ПараметрыОбновления);
КонецЦикла;
КонецЦикла;
РегистрыСведений.ЗанятостьПозицийШтатногоРасписания.СформироватьДвиженияИнтервальногоРегистраПоМассивуРегистраторов(
МассивРегистраторов, ПараметрыОбновления);
КонецПроцедуры
#КонецОбласти
#КонецЕсли