#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Процедура ПровестиПоУчетам(ДокументСсылка, РежимПроведения, Отказ, ВидыУчетов = Неопределено, Движения = Неопределено, Объект = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
СтруктураВидовУчета = ПроведениеСервер.СтруктураВидовУчета();
РеквизитыДляПроведения = РеквизитыДляПроведения(ДокументСсылка);
ПеремещаемыеСовместители = Неопределено;
ИсключаемыеРегистраторы = Новый Массив;
ИсключаемыеРегистраторы.Добавить(РеквизитыДляПроведения.Ссылка);
Если ЗначениеЗаполнено(РеквизитыДляПроведения.ИсправленныйДокумент) Тогда
ИсключаемыеРегистраторы.Добавить(РеквизитыДляПроведения.ИсправленныйДокумент);
КонецЕсли;
Если Объект <> Неопределено И ВидыУчетов = Неопределено Тогда
ЗарплатаКадрыРасширенный.ИнициализироватьОтложеннуюРегистрациюВторичныхДанныхПоДвижениямДокумента(Движения);
КонецЕсли;
ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвиженийПоВидамУчета(РежимПроведения, ДокументСсылка, СтруктураВидовУчета, ВидыУчетов, Движения, Объект, Отказ);
ПроведениеСервер.ОтключитьПроверкуДатыЗапретаИзменения(Движения, ЗначениеЗаполнено(РеквизитыДляПроведения.ИсправленныйДокумент));
РезультатыИсправления = ИсправлениеДокументовЗарплатаКадры.ПриПроведенииИсправления(ДокументСсылка, Движения, РежимПроведения, Отказ, РеквизитыДляПроведения, СтруктураВидовУчета, Объект);
Если СтруктураВидовУчета.ОстальныеВидыУчета Тогда
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
СоздатьВТКадровыеДанныеУвольняемыхСотрудников(МенеджерВременныхТаблиц, РеквизитыДляПроведения.Ссылка);
ПеремещаемыеСовместители = КадровыйУчетРасширенный.ОсновныеСотрудникиВнутреннихСовместителей(
РеквизитыДляПроведения.Организация, ДатыУвольненияСотрудников(РеквизитыДляПроведения.Ссылка), ИсключаемыеРегистраторы);
КадровыеСобытия = КадровыеСобытияУвольнениеПоВременнойТаблице(МенеджерВременныхТаблиц);
КадровыйУчет.СформироватьДвиженияВидовЗанятостиСотрудников(Движения, ПеремещаемыеСовместители);
КадровыйУчет.СформироватьКадровыеДвижения(РеквизитыДляПроведения.Ссылка, Движения, КадровыеСобытия, , Истина);
Если ПолучитьФункциональнуюОпцию("ИспользоватьПодработки")
И ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.Подработки") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("Подработки");
Модуль.ПрекратитьПодработкиСотрудников(РеквизитыДляПроведения.Ссылка, Движения, КадровыеСобытия);
КонецЕсли;
КадровыйУчетРасширенный.СформироватьДвиженияОсвобожденияПозицииПриУвольнении(Движения, КадровыеСобытия, ИсключаемыеРегистраторы);
СотрудникиКОбновлению = СотрудникиСоСменойВидаЗанятости(МенеджерВременныхТаблиц);
Если ЗначениеЗаполнено(СотрудникиКОбновлению) Тогда
Движения.ВидыЗанятостиСотрудников.ДополнительныеСвойства.Вставить("НеСдвигатьПериодЗаписей");
КадровыйУчет.СформироватьДвиженияВидовЗанятостиСотрудников(Движения, СотрудникиКОбновлению);
КонецЕсли;
КонецЕсли;
Если РеквизитыДляПроведения.ДокументРассчитан Тогда
ДанныеДляПроведения = ДанныеДляПроведения(
РеквизитыДляПроведения, МенеджерВременныхТаблиц, РеквизитыДляПроведения.ПериодРегистрации, РеквизитыДляПроведения.Организация, ПеремещаемыеСовместители, СтруктураВидовУчета);
Если СтруктураВидовУчета.ОстальныеВидыУчета Тогда
РасчетЗарплатыРасширенный.ПрекратитьВсеПлановыеНачисленияПоТаблицеСотрудников(
Движения, ДанныеДляПроведения.ДанныеДляРегистрацииПрекращенияПлановыхНачислений);
ОтражениеЗарплатыВБухучетеРасширенный.СформироватьПрекращениеБухучетаНачисленийСотрудников(
ДокументСсылка, Движения, Движения.ПлановыеНачисления);
РасчетЗарплатыРасширенный.ПрекратитьВсеПлановыеУдержанияПоТаблицеСотрудников(
Движения, ДанныеДляПроведения.ДанныеДляРегистрацииПрекращенияПлановыхУдержаний);
Для Каждого СтрокаПериодовРегистрации Из РеквизитыДляПроведения.ПериодыРегистрации Цикл
ПериодРегистрации = СтрокаПериодовРегистрации.ПериодРегистрации;
ЭтоПервыйПериод = СтрокаПериодовРегистрации.ЭтоПервыйПериод;
Если РеквизитыДляПроведения.ПериодыРегистрации.Количество() = 1 Тогда
Начисления = ДанныеДляПроведения.Начисления;
ПоказателиНачислений = ДанныеДляПроведения.ПоказателиНачислений;
Удержания = ДанныеДляПроведения.Удержания;
ПоказателиУдержаний = ДанныеДляПроведения.ПоказателиУдержаний;
Иначе
Начисления = РасчетЗарплатыРасширенный.СтрокиТаблицыДокументаПоПериодуРегистрации(ДанныеДляПроведения.Начисления, РеквизитыДляПроведения.ПериодРегистрации, ПериодРегистрации, ЭтоПервыйПериод, СтрокаПериодовРегистрации.Сотрудники, "ПериодРегистрации");
ПоказателиНачислений = РасчетЗарплатыРасширенный.СтрокиПоказателейНачисленийУдержаний(ДанныеДляПроведения.ПоказателиНачислений, Начисления);
Удержания = РасчетЗарплатыРасширенный.СтрокиТаблицыДокументаПоПериодуРегистрации(ДанныеДляПроведения.Удержания, РеквизитыДляПроведения.ПериодРегистрации, ПериодРегистрации, ЭтоПервыйПериод, СтрокаПериодовРегистрации.ФизическиеЛица, , "ФизическоеЛицо");
ПоказателиУдержаний = РасчетЗарплатыРасширенный.СтрокиПоказателейНачисленийУдержаний(ДанныеДляПроведения.ПоказателиУдержаний, Удержания);
КонецЕсли;
Если РеквизитыДляПроведения.НачислитьЗарплату Тогда
Движения.Начисления.ДополнительныеСвойства.Вставить("ОтключитьРегистрациюПерерасчетов", Истина);
КонецЕсли;
РасчетЗарплатыРасширенный.СформироватьДвиженияНачислений(
Движения, Отказ, РеквизитыДляПроведения.Организация, КонецМесяца(ПериодРегистрации), Начисления, ПоказателиНачислений, Истина);
ПерерасчетЗарплаты.СформироватьДвиженияИсходныеДанныхПерерасчетов(Движения, РеквизитыДляПроведения.Организация, ПериодРегистрации, Начисления);
РасчетЗарплатыРасширенный.СформироватьДвиженияУдержаний(
Движения, Отказ, РеквизитыДляПроведения.Организация, КонецМесяца(ПериодРегистрации), Удержания, ПоказателиУдержаний);
КонецЦикла;
РасчетЗарплатыРасширенный.СформироватьДвиженияРаспределенияПоТерриториямУсловиямТруда(
Движения, Отказ, РеквизитыДляПроведения.Ссылка, РеквизитыДляПроведения.РаспределениеПоТерриториямУсловиямТруда);
РасчетЗарплатыРасширенный.СформироватьДвиженияРаспределенияРезультатовНачислений(
Движения, Отказ, РеквизитыДляПроведения.Ссылка, РеквизитыДляПроведения.РаспределениеРезультатовНачислений);
ИсполнительныеЛисты.СформироватьУдержанияПоИсполнительнымДокументам(
Движения, ДанныеДляПроведения.УдержанияПоИсполнительнымДокументам);
РасчетЗарплатыРасширенный.СформироватьЗадолженностьПоУдержаниямФизическихЛиц(
Движения, ДанныеДляПроведения.ЗадолженностьПоУдержаниям, Ложь, Ложь);
Для Каждого СтрокаПериодовРегистрации Из РеквизитыДляПроведения.ПериодыРегистрации Цикл
ПериодРегистрации = СтрокаПериодовРегистрации.ПериодРегистрации;
ЭтоПервыйПериод = СтрокаПериодовРегистрации.ЭтоПервыйПериод;
Если РеквизитыДляПроведения.ПериодыРегистрации.Количество() = 1 Тогда
УдержанияДоПределаПоСотрудникам = ДанныеДляПроведения.УдержанияДоПределаПоСотрудникам;
Иначе
УдержанияДоПределаПоСотрудникам = РасчетЗарплатыРасширенный.СтрокиТаблицыДокументаПоПериодуРегистрации(ДанныеДляПроведения.УдержанияДоПределаПоСотрудникам, РеквизитыДляПроведения.ПериодРегистрации, ПериодРегистрации, ЭтоПервыйПериод, СтрокаПериодовРегистрации.ФизическиеЛица, , "ФизическоеЛицо");
КонецЕсли;
РасчетЗарплатыРасширенный.СформироватьДвиженияУдержанийДоПределаПоСотрудникам(
Движения, Отказ, ПериодРегистрации, УдержанияДоПределаПоСотрудникам, Ложь);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
Если ПолучитьФункциональнуюОпцию("ИспользоватьУправленческуюЗарплату") Тогда
УправленческийУчет = ДанныеДляПроведения.УправленческийУчет;
Если РеквизитыДляПроведения.ПериодыРегистрации.Количество() = 1 Тогда
Начисления = УправленческийУчет.Начисления;
ПоказателиНачислений = УправленческийУчет.ПоказателиНачислений;
Иначе
Начисления = РасчетЗарплатыРасширенный.СтрокиТаблицыДокументаПоПериодуРегистрации(УправленческийУчет.Начисления, РеквизитыДляПроведения.ПериодРегистрации, ПериодРегистрации, ЭтоПервыйПериод, СтрокаПериодовРегистрации.Сотрудники);
ПоказателиНачислений = РасчетЗарплатыРасширенный.СтрокиПоказателейНачисленийУдержаний(УправленческийУчет.ПоказателиНачислений, Начисления);
КонецЕсли;
Модуль = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплата");
Модуль.СформироватьДвиженияНачисленийПериодаРегистрации(Движения, Отказ, Начисления, ПоказателиНачислений, ПериодРегистрации);
КонецЕсли;
КонецЕсли;
КонецЦикла;
ПроверитьПересечениеФактическогоПериодаДействия(ДокументСсылка, Отказ);
Если РеквизитыДляПроведения.ПериодыРегистрации.Количество() > 1 Тогда
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = ДанныеДляПроведения.МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("ПериодРегистрации", ПериодРегистрации);
Запрос.Текст =
"ВЫБРАТЬ
| *
|ПОМЕСТИТЬ ВТВсеНачисленияДокумента
|ИЗ
| ВТНачисления КАК ВсеНачисленияДокумента
|;
|
|
|ВЫБРАТЬ
| *
|ПОМЕСТИТЬ ВТВсеНачисленияДляУчетаДоходовНДФЛДокумента
|ИЗ
| ВТНачисленияДляУчетаДоходовНДФЛ КАК ВсеНачисленияДокумента
|;
|
|
|УНИЧТОЖИТЬ ВТНачисления
|;
|
|
|УНИЧТОЖИТЬ ВТНачисленияДляУчетаДоходовНДФЛ";
Запрос.Выполнить();
КонецЕсли;
Для Каждого СтрокаПериодовРегистрации Из РеквизитыДляПроведения.ПериодыРегистрации Цикл
ПериодРегистрации = СтрокаПериодовРегистрации.ПериодРегистрации;
ЭтоПервыйПериод = СтрокаПериодовРегистрации.ЭтоПервыйПериод;
Если РеквизитыДляПроведения.ПериодыРегистрации.Количество() = 1 Тогда
НачисленияПоСотрудникам = ДанныеДляПроведения.НачисленияПоСотрудникам;
УдержанияПоСотрудникам = ДанныеДляПроведения.УдержанияПоСотрудникам;
УдержанияЗаймов = ДанныеДляПроведения.УдержанияЗаймов;
МатериальнаяВыгода = ДанныеДляПроведения.МатериальнаяВыгода;
ОтработанноеВремяПоСотрудникам = ДанныеДляПроведения.ОтработанноеВремяПоСотрудникам;
НДФЛ = ДанныеДляПроведения.НДФЛ;
НДФЛПоСотрудникам = ДанныеДляПроведения.НДФЛПоСотрудникам;
ВзаиморасчетыПоЗаймам = ДанныеДляПроведения.ВзаиморасчетыПоЗаймам;
НалогНаМатериальнуюВыгоду = ДанныеДляПроведения.НалогНаМатериальнуюВыгоду;
Удержания = ДанныеДляПроведения.Удержания;
Иначе
Запрос = ЗапросВТНачисленияПоДокументу(ДанныеДляПроведения.МенеджерВременныхТаблиц, ПериодРегистрации, СтрокаПериодовРегистрации.ЭтоПервыйПериод);
Запрос.Выполнить();
НачисленияПоСотрудникам = РасчетЗарплатыРасширенный.СтрокиТаблицыДокументаПоПериодуРегистрации(ДанныеДляПроведения.НачисленияПоСотрудникам, РеквизитыДляПроведения.ПериодРегистрации, ПериодРегистрации, ЭтоПервыйПериод, СтрокаПериодовРегистрации.Сотрудники, "ПериодРегистрации");
УдержанияПоСотрудникам = РасчетЗарплатыРасширенный.СтрокиТаблицыДокументаПоПериодуРегистрации(ДанныеДляПроведения.УдержанияПоСотрудникам, РеквизитыДляПроведения.ПериодРегистрации, ПериодРегистрации, ЭтоПервыйПериод, СтрокаПериодовРегистрации.ФизическиеЛица, , "ФизическоеЛицо");
УдержанияЗаймов = РасчетЗарплатыРасширенный.СтрокиТаблицыДокументаПоПериодуРегистрации(ДанныеДляПроведения.УдержанияЗаймов, РеквизитыДляПроведения.ПериодРегистрации, ПериодРегистрации, ЭтоПервыйПериод, СтрокаПериодовРегистрации.ФизическиеЛица, "НачалоМесяцаДатаОкончания", "ФизическоеЛицо");
МатериальнаяВыгода = РасчетЗарплатыРасширенный.СтрокиТаблицыДокументаПоПериодуРегистрации(ДанныеДляПроведения.МатериальнаяВыгода, РеквизитыДляПроведения.ПериодРегистрации, ПериодРегистрации, ЭтоПервыйПериод, СтрокаПериодовРегистрации.ФизическиеЛица, "НачалоМесяцаДатаПолученияДохода", "ФизическоеЛицо");
ОтработанноеВремяПоСотрудникам = РасчетЗарплатыРасширенный.СтрокиТаблицыДокументаПоПериодуРегистрации(ДанныеДляПроведения.ОтработанноеВремяПоСотрудникам, РеквизитыДляПроведения.ПериодРегистрации, ПериодРегистрации, ЭтоПервыйПериод, СтрокаПериодовРегистрации.Сотрудники, "ПериодРегистрации");
НДФЛ = РасчетЗарплатыРасширенный.СтрокиТаблицыДокументаПоПериодуРегистрации(ДанныеДляПроведения.НДФЛ, РеквизитыДляПроведения.ПериодРегистрации, ПериодРегистрации, ЭтоПервыйПериод, СтрокаПериодовРегистрации.ФизическиеЛица, "НачалоМесяцаМесяцНалоговогоПериода", "ФизическоеЛицо");
НДФЛПоСотрудникам = РасчетЗарплатыРасширенный.СтрокиТаблицыДокументаПоПериодуРегистрации(ДанныеДляПроведения.НДФЛПоСотрудникам, РеквизитыДляПроведения.ПериодРегистрации, ПериодРегистрации, ЭтоПервыйПериод, СтрокаПериодовРегистрации.ФизическиеЛица, "НачалоМесяцаМесяцНалоговогоПериода", "ФизическоеЛицо");
ВзаиморасчетыПоЗаймам = РасчетЗарплатыРасширенный.СтрокиТаблицыДокументаПоПериодуРегистрации(ДанныеДляПроведения.ВзаиморасчетыПоЗаймам, РеквизитыДляПроведения.ПериодРегистрации, ПериодРегистрации, ЭтоПервыйПериод, СтрокаПериодовРегистрации.ФизическиеЛица, "НачалоМесяцаДатаПогашения", "ФизическоеЛицо");
НалогНаМатериальнуюВыгоду = РасчетЗарплатыРасширенный.СтрокиТаблицыДокументаПоПериодуРегистрации(ДанныеДляПроведения.НалогНаМатериальнуюВыгоду, РеквизитыДляПроведения.ПериодРегистрации, ПериодРегистрации, ЭтоПервыйПериод, СтрокаПериодовРегистрации.Сотрудники, "МесяцНалоговогоПериода");
Удержания = РасчетЗарплатыРасширенный.СтрокиТаблицыДокументаПоПериодуРегистрации(ДанныеДляПроведения.Удержания, РеквизитыДляПроведения.ПериодРегистрации, ПериодРегистрации, ЭтоПервыйПериод, СтрокаПериодовРегистрации.ФизическиеЛица, , "ФизическоеЛицо");
КонецЕсли;
ДанныеДляПроведенияУчетЗарплаты = ОтражениеЗарплатыВУчете.ОписаниеДанныеДляПроведения();
ДанныеДляПроведенияУчетЗарплаты.Движения = Движения;
ДанныеДляПроведенияУчетЗарплаты.Организация = РеквизитыДляПроведения.Организация;
ДанныеДляПроведенияУчетЗарплаты.ПериодРегистрации = ПериодРегистрации;
ДанныеДляПроведенияУчетЗарплаты.ПланируемаяДатаВыплаты = РеквизитыДляПроведения.ПланируемаяДатаВыплаты;
ДанныеДляПроведенияУчетЗарплаты.ПорядокВыплаты = РеквизитыДляПроведения.ПорядокВыплаты;
ДанныеДляПроведенияУчетЗарплаты.ОкончательныйРасчет = Истина;
ДанныеДляПроведенияУчетЗарплаты.МенеджерВременныхТаблиц = ДанныеДляПроведения.МенеджерВременныхТаблиц;
УчетНачисленнойЗарплаты.ЗарегистрироватьНачисления(ДанныеДляПроведенияУчетЗарплаты, Отказ, НачисленияПоСотрудникам, Неопределено);
УчетНачисленнойЗарплаты.ЗарегистрироватьОтработанноеВремя(ДанныеДляПроведенияУчетЗарплаты, Отказ, ОтработанноеВремяПоСотрудникам, Истина);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
Если ПолучитьФункциональнуюОпцию("ИспользоватьУправленческуюЗарплату") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплата");
УправленческийУчет = ДанныеДляПроведения.УправленческийУчет;
УправленческиеНачисленияПоСотрудникам = РасчетЗарплатыРасширенный.СтрокиТаблицыДокументаПоПериодуРегистрации(
УправленческийУчет.НачисленияПоСотрудникам, РеквизитыДляПроведения.ПериодРегистрации, ПериодРегистрации,
ЭтоПервыйПериод, СтрокаПериодовРегистрации.Сотрудники);
Модуль.ЗарегистрироватьНачисленияУдержанияПериодаРегистрации(Движения, Отказ, ПериодРегистрации,
УправленческиеНачисленияПоСотрудникам, РеквизитыДляПроведения.ПорядокВыплаты, ДанныеДляПроведенияУчетЗарплаты.ПланируемаяДатаВыплаты);
УправленческоеОтработанноеВремяПоСотрудникам = РасчетЗарплатыРасширенный.СтрокиТаблицыДокументаПоПериодуРегистрации(
УправленческийУчет.ОтработанноеВремяПоСотрудникам, РеквизитыДляПроведения.ПериодРегистрации, ПериодРегистрации,
ЭтоПервыйПериод, СтрокаПериодовРегистрации.Сотрудники);
Модуль.ЗарегистрироватьОтработанноеВремяПериодаРегистрации(Движения, Отказ, ПериодРегистрации,
УправленческоеОтработанноеВремяПоСотрудникам, РеквизитыДляПроведения.ПорядокВыплаты);
КонецЕсли;
КонецЕсли;
УчетНачисленнойЗарплаты.СоздатьВТРаспределениеНачисленийТекущегоДокумента(ДанныеДляПроведенияУчетЗарплаты);
ОтражениеЗарплатыВБухучетеРасширенный.ЗарегистрироватьНачисленияУдержания(ДанныеДляПроведенияУчетЗарплаты, Отказ,
НачисленияПоСотрудникам, УдержанияПоСотрудникам, Неопределено);
ОтражениеЗарплатыВБухучетеРасширенный.ЗарегистрироватьНачисленияУдержания(ДанныеДляПроведенияУчетЗарплаты, Отказ,
Неопределено, УдержанияЗаймов, Неопределено);
ПериодРегистрацииНалогов = ?(ПериодРегистрации > РеквизитыДляПроведения.ПериодРегистрации, РеквизитыДляПроведения.ПериодРегистрации, ПериодРегистрации);
ДатаОперацииПоНалогам = УчетНДФЛ.ДатаОперацииПоДокументу(РеквизитыДляПроведения.Дата, ПериодРегистрацииНалогов);
УчетНДФЛ.СформироватьДоходыНДФЛПоКодамДоходовИзТаблицыЗначений(
Движения, Отказ, РеквизитыДляПроведения.Организация, ДатаОперацииПоНалогам, МатериальнаяВыгода, Ложь, , ДокументСсылка);
ДанныеДляПроведенияПроведенияНДФЛ = Новый Структура;
ДанныеДляПроведенияПроведенияНДФЛ.Вставить("НДФЛ", НДФЛ);
ДанныеДляПроведенияПроведенияНДФЛ.Вставить("Удержания", Удержания);
ДанныеДляПроведенияПроведенияНДФЛ.Вставить("НДФЛПоСотрудникам", НДФЛПоСотрудникам);
ДанныеДляПроведенияПроведенияНДФЛ.Вставить("МенеджерВременныхТаблиц", ДанныеДляПроведения.МенеджерВременныхТаблиц);
ДанныеДляПроведенияПроведенияНДФЛ.Вставить("УчтенныеПриРасчетеДокументы", ДанныеДляПроведения.УчтенныеПриРасчетеДокументы);
ЗарегистрироватьДоходыИСуммыНДФЛПоВременнойТаблицеНачислений(РеквизитыДляПроведения, Движения, ДанныеДляПроведенияПроведенияНДФЛ,
ДатаОперацииПоНалогам, Отказ, ПериодРегистрацииНалогов, РеквизитыДляПроведения.ДоходПолученНаТерриторииРФ);
ЗаймыСотрудникам.ЗарегистрироватьВзаиморасчетыПоЗаймам(Движения, ВзаиморасчетыПоЗаймам, Отказ);
УчетНДФЛ.СформироватьНалогиВычеты(
Движения, Отказ, РеквизитыДляПроведения.Организация, ДатаОперацииПоНалогам, НалогНаМатериальнуюВыгоду);
УчетНачисленнойЗарплаты.ПодготовитьДанныеНДФЛКРегистрации(НалогНаМатериальнуюВыгоду, РеквизитыДляПроведения.Организация, ДатаОперацииПоНалогам);
УчетНачисленнойЗарплатыРасширенный.ЗарегистрироватьУдержания(ДанныеДляПроведенияУчетЗарплаты, Отказ, УдержанияПоСотрудникам);
УчетНачисленнойЗарплатыРасширенный.ЗарегистрироватьЗаймы(ДанныеДляПроведенияУчетЗарплаты, Отказ,
УдержанияЗаймов, НалогНаМатериальнуюВыгоду);
ОтражениеЗарплатыВБухучетеРасширенный.ЗарегистрироватьНачисленияУдержания(ДанныеДляПроведенияУчетЗарплаты, Отказ,
Неопределено, Неопределено, НалогНаМатериальнуюВыгоду);
Если РеквизитыДляПроведения.ПериодыРегистрации.Количество() > 1 Тогда
УдаляемыеТаблицы = Новый Массив;
УдаляемыеТаблицы.Добавить("ВТНачисления");
УдаляемыеТаблицы.Добавить("ВТНачисленияДляУчетаДоходовНДФЛ");
ЗарплатаКадры.УничтожитьВТ(ДанныеДляПроведения.МенеджерВременныхТаблиц, УдаляемыеТаблицы);
КонецЕсли;
КонецЦикла;
УчетНДФЛ.СформироватьДокументыУчтенныеПриРасчетеДляМежрасчетногоДокументаПоВременнойТаблице(Движения, Отказ, РеквизитыДляПроведения.Организация, ДанныеДляПроведенияПроведенияНДФЛ.МенеджерВременныхТаблиц, РеквизитыДляПроведения.Ссылка);
УчетНДФЛ.СформироватьДокументыУчтенныеПриРасчетеПриОкончательномРасчете(Движения, Отказ, РеквизитыДляПроведения.Организация, ДанныеДляПроведенияПроведенияНДФЛ.УчтенныеПриРасчетеДокументы);
Если РеквизитыДляПроведения.НачислитьЗарплату Тогда
УчетНДФЛРасширенный.ДополнитьДвиженияСписаниемАванса(РеквизитыДляПроведения.Ссылка, Движения, РеквизитыДляПроведения.Организация, ДатаОперацииПоНалогам, РеквизитыДляПроведения.ПериодыРегистрации);
УчетНачисленнойЗарплатыРасширенный.ЗаполнитьЗачетАвансаНДФЛВНаборахЗаписей(Движения, РеквизитыДляПроведения.ПериодРегистрации);
КонецЕсли;
Если РеквизитыДляПроведения.ФизическиеЛицаУвольняемыеВСвязиСоСмертью.Количество() > 0 И РеквизитыДляПроведения.НачислитьЗарплату Тогда
НДФЛБухучетНачисленийУдержаний = ДанныеДляПроведения.НДФЛПоСотрудникам.СкопироватьКолонки();
ДополнитьДвиженияПоПричинеСмертиСотрудников(РеквизитыДляПроведения, ДанныеДляПроведенияУчетЗарплаты, Движения, ДатаОперацииПоНалогам, НДФЛБухучетНачисленийУдержаний, Отказ);
КонецЕсли;
ОчиститьСведенияОДоходахУмершихСотрудников(Движения, РеквизитыДляПроведения.ФизическиеЛицаУвольняемыеВСвязиСоСмертью, СтруктураВидовУчета);
Если Движения.СведенияОДоходахНДФЛ.Записывать Тогда
Движения.СведенияОДоходахНДФЛ.Записать();
Движения.СведенияОДоходахНДФЛ.Записывать = Ложь;
КонецЕсли;
Для Каждого СтрокаПериодовРегистрации Из РеквизитыДляПроведения.ПериодыРегистрации Цикл
ПериодРегистрации = СтрокаПериодовРегистрации.ПериодРегистрации;
РасчетЗарплатыРасширенный.СформироватьДвиженияКорректировкиВыплатыПоВременнойТаблицеНачислений(
Движения, Отказ, РеквизитыДляПроведения.Организация, ПериодРегистрации, РеквизитыДляПроведения.ПорядокВыплаты, ДанныеДляПроведения, Истина, Истина);
КонецЦикла;
ПараметрыДвиженийОтпусков = ОстаткиОтпусков.ПараметрыДляСформироватьДвиженияФактическихОтпусков();
ПараметрыДвиженийОтпусков.ДатаРегистрации = РеквизитыДляПроведения.Дата;
ПараметрыДвиженийОтпусков.Начисления = ДанныеДляПроведения.Начисления;
ПараметрыДвиженийОтпусков.РабочиеПериоды = ДанныеДляПроведения.РабочиеПериодыКомпенсацийОтпусков;
ПараметрыДвиженийОтпусков.Основания = ДанныеДляПроведения.ОснованияКомпенсацийОтпусков;
ПараметрыДвиженийОтпусков.ПериодНачисления = РеквизитыДляПроведения.ПериодРегистрации;
ПараметрыДвиженийОтпусков.ДатыНачалаКомпенсаций = ДанныеДляПроведения.ДатыНачалаКомпенсаций;
ОстаткиОтпусков.СформироватьДвиженияФактическихОтпусков(Движения, Отказ, ПараметрыДвиженийОтпусков);
ПараметрыДвиженийОтпусков = ОстаткиОтпусков.ПараметрыДляСформироватьДвиженияФактическихОтпусков();
ПараметрыДвиженийОтпусков.Начисления = ДанныеДляПроведения.УдержанияОтпусков;
ПараметрыДвиженийОтпусков.РабочиеПериоды = ДанныеДляПроведения.РабочиеПериодыУдержанийОтпусков;
ПараметрыДвиженийОтпусков.Основания = ДанныеДляПроведения.ОснованияУдержанийОтпусков;
ПараметрыДвиженийОтпусков.ПериодНачисления = РеквизитыДляПроведения.ПериодРегистрации;
ОстаткиОтпусков.СформироватьДвиженияФактическихОтпусковПоУдержаниям(Движения, ПараметрыДвиженийОтпусков);
ОстаткиОтпусков.СформироватьДвиженияОснованийУвольненияСотрудников(Движения, ДанныеДляПроведения.ОснованияУвольнения);
УчетРабочегоВремениРасширенный.ЗарегистрироватьИПроверитьОстаткиДниЧасыОтгуловСотрудников(Движения, ДанныеДляПроведения.ДниЧасыОтгулов, Отказ);
УчетОтгулов.ЗарегистрироватьДанныеОбИспользованииОтгулов(Движения, ДанныеДляПроведения.ИспользованиеОтгулов);
Для каждого МесяцУвольнения Из ДанныеДляПроведения.ДанныеДляПрекращенияВычетов Цикл
КадровыйУчет.СформироватьПрекращениеВычетовСтандартныхИНаДетей(
Движения, МесяцУвольнения.Значение, РеквизитыДляПроведения.Организация, КонецМесяца(МесяцУвольнения.Ключ) + 1, Отказ, ИсключаемыеРегистраторы);
КонецЦикла;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба.РасчетДенежногоСодержания") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("РасчетДенежногоСодержания");
Модуль.ЗарегистрироватьКорректировкиДляРасчетаСохраняемогоДенежногоСодержанияСотрудников(ДанныеДляПроведения.КорректировкиДляРегистрацииДенежногоСодержания);
Модуль.ЗарегистрироватьНачисленияСоставМесячногоДенежногоСодержания(Движения, Отказ, РеквизитыДляПроведения.ПериодРегистрации, ДанныеДляПроведения.СоставМесячногоДенежногоСодержания);
КонецЕсли;
КонецЕсли;
Если СтруктураВидовУчета.СтраховыеВзносы Тогда
Если РезультатыИсправления.ИсправлениеВТекущемПериоде Тогда
Движения.СтраховыеВзносыПоФизическимЛицам.ДополнительныеСвойства.Вставить("ВычитатьСторноЗаписи", Истина);
КонецЕсли;
Для Каждого СтрокаПериодовРегистрации Из РеквизитыДляПроведения.ПериодыРегистрации Цикл
ПериодРегистрации = СтрокаПериодовРегистрации.ПериодРегистрации;
ЭтоПервыйПериод = СтрокаПериодовРегистрации.ЭтоПервыйПериод;
Если РеквизитыДляПроведения.ПериодыРегистрации.Количество() = 1 Тогда
СтраховыеВзносы = ДанныеДляПроведения.СтраховыеВзносы;
Пособия = ДанныеДляПроведения.Пособия;
ПособияПоУходу = ДанныеДляПроведения.ПособияПоУходу;
Иначе
Запрос = ЗапросВТНачисленияПоДокументу(ДанныеДляПроведения.МенеджерВременныхТаблиц, ПериодРегистрации, СтрокаПериодовРегистрации.ЭтоПервыйПериод);
Запрос.Выполнить();
СтраховыеВзносы = РасчетЗарплатыРасширенный.СтрокиТаблицыДокументаПоПериодуРегистрации(ДанныеДляПроведения.СтраховыеВзносы, РеквизитыДляПроведения.ПериодРегистрации, ПериодРегистрации, ЭтоПервыйПериод, СтрокаПериодовРегистрации.ФизическиеЛица, "ДатаПолученияДохода", "ФизическоеЛицо");
Пособия = РасчетЗарплатыРасширенный.СтрокиТаблицыДокументаПоПериодуРегистрации(ДанныеДляПроведения.Пособия, РеквизитыДляПроведения.ПериодРегистрации, ПериодРегистрации, ЭтоПервыйПериод, СтрокаПериодовРегистрации.Сотрудники);
ПособияПоУходу = РасчетЗарплатыРасширенный.СтрокиТаблицыДокументаПоПериодуРегистрации(ДанныеДляПроведения.ПособияПоУходу, РеквизитыДляПроведения.ПериодРегистрации, ПериодРегистрации, ЭтоПервыйПериод, СтрокаПериодовРегистрации.Сотрудники);
КонецЕсли;
УчетСтраховыхВзносов.СформироватьСведенияОДоходахСтраховыеВзносы(
Движения, Отказ, РеквизитыДляПроведения.Организация, ПериодРегистрации, ДанныеДляПроведения.МенеджерВременныхТаблиц, Ложь, Истина, РеквизитыДляПроведения.Ссылка);
УчетСтраховыхВзносов.СформироватьИсчисленныеВзносы(
Движения, Отказ, РеквизитыДляПроведения.Организация, ПериодРегистрации, СтраховыеВзносы);
Если Не СтруктураВидовУчета.ОстальныеВидыУчета Тогда
КлючиВспомогательныхДвижений = ПроведениеРасширенныйСервер.ДополнитьКоллекциюВспомогательнымиДвижениями(Движения, РеквизитыДляПроведения.Ссылка, СтруктураВидовУчета);
КонецЕсли;
УчетСтраховыхВзносов.СформироватьСтраховыеВзносыПоФизическимЛицам(
Движения, Отказ, РеквизитыДляПроведения.Организация, ПериодРегистрации, РеквизитыДляПроведения.Ссылка, СтраховыеВзносы);
УчетСтраховыхВзносов.СформироватьПособия(
Движения, Отказ, РеквизитыДляПроведения.Организация, ПериодРегистрации, Пособия, ПособияПоУходу);
Если РеквизитыДляПроведения.ПериодыРегистрации.Количество() > 1 Тогда
УдаляемыеТаблицы = Новый Массив;
УдаляемыеТаблицы.Добавить("ВТНачисления");
УдаляемыеТаблицы.Добавить("ВТНачисленияДляУчетаДоходовНДФЛ");
ЗарплатаКадры.УничтожитьВТ(ДанныеДляПроведения.МенеджерВременныхТаблиц, УдаляемыеТаблицы);
КонецЕсли;
КонецЦикла;
Если Не СтруктураВидовУчета.ОстальныеВидыУчета Тогда
КоллекцииБЗК.УдалитьКлючиСтруктуры(Движения, КлючиВспомогательныхДвижений);
КонецЕсли;
ОчиститьСведенияОДоходахУмершихСотрудников(Движения, РеквизитыДляПроведения.ФизическиеЛицаУвольняемыеВСвязиСоСмертью, СтруктураВидовУчета);
КонецЕсли;
Если СтруктураВидовУчета.ДанныеДляРасчетаСреднего Тогда
УчетСреднегоЗаработка.ЗарегистрироватьДанныеСреднегоЗаработка(
Движения, Отказ, ДанныеДляПроведения.НачисленияДляСреднегоЗаработка);
КонецЕсли;
УдалитьПерерасчетыТекущегоПериода = Неопределено;
Если ДополнительныеПараметры <> Неопределено Тогда
ДополнительныеПараметры.Свойство("УдалитьПерерасчетыТекущегоПериода", УдалитьПерерасчетыТекущегоПериода);
КонецЕсли;
УдалитьПерерасчетыТекущегоПериода = (УдалитьПерерасчетыТекущегоПериода = Истина);
ПерерасчетЗарплаты.УдалитьПерерасчеты(РеквизитыДляПроведения.Ссылка, УдалитьПерерасчетыТекущегоПериода);
Иначе
ДанныеДляПроведения = Новый Структура;
Если СтруктураВидовУчета.ОстальныеВидыУчета Тогда
ЗаполнитьПериодыОтпусков(РеквизитыДляПроведения, ДанныеДляПроведения);
ДобавитьДанныеДляРегистрацииСостоянийСотрудников(ДанныеДляПроведения, РеквизитыДляПроведения);
ДобавитьДанныеДляРегистрацииДокумента(ДанныеДляПроведения, РеквизитыДляПроведения, ПеремещаемыеСовместители, РеквизитыДляПроведения.Организация);
ДанныеДляПроведения.Вставить("МероприятияТрудовойДеятельности",
ДанныеДляПроведенияМероприятияТрудовойДеятельности(РеквизитыДляПроведения.Ссылка).Получить(РеквизитыДляПроведения.Ссылка));
КонецЕсли;
КонецЕсли;
Если СтруктураВидовУчета.ОстальныеВидыУчета Тогда
ОстаткиОтпусков.СформироватьДвиженияПериодовОтпусков(Движения, РеквизитыДляПроведения.Ссылка, ДанныеДляПроведения.ПериодыОтпусков);
СостоянияСотрудников.ЗарегистрироватьСостоянияСотрудников(
Движения, РеквизитыДляПроведения.Ссылка, ДанныеДляПроведения.ДанныеДляРегистрацииСостоянийСотрудников);
УчетСтажаПФР.ЗарегистрироватьПериодыВУчетеСтажаПФР(
Движения, ДанныеДляПроведения.ДанныеДляРегистрацииВУчетаСтажаПФР);
ЗаписатьЗначенияПоказателейРасчетаЗарплаты(Движения, ДанныеДляПоказателейСверхурочных(РеквизитыДляПроведения.Ссылка));
ОграничениеВзысканий.ЗарегистрироватьДанныеСохраняемогоЗаработка(Движения, Отказ, РеквизитыДляПроведения.ПериодРегистрации, РеквизитыДляПроведения.ПорядокВыплаты);
УчетСреднегоЗаработка.УдалитьПричиныПерерасчетов(РеквизитыДляПроведения.Ссылка, ДополнительныеПараметры);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.КадровыйРезерв") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("КадровыйРезерв");
Модуль.СформироватьДвиженияИсторииКадровогоРезерва(Движения, ДанныеДляПроведения, "ДанныеКадровогоРезерва");
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ТрудоустройствоПоКвотам") Тогда
МодульТрудоустройствоПоКвотам = ОбщегоНазначения.ОбщийМодуль("ТрудоустройствоПоКвотам");
МодульТрудоустройствоПоКвотам.СформироватьДвиженияПоТрудоустройствуСотрудниковПоКвотам(Движения, ДанныеДляПроведения);
КонецЕсли;
ПерерасчетЗарплаты.УдалитьПерерасчетыПоДополнительнымПараметрам(РеквизитыДляПроведения.Ссылка, ДополнительныеПараметры);
СформироватьДвиженияМероприятийТрудовойДеятельности(Движения.МероприятияТрудовойДеятельности,
ДанныеДляПроведения.МероприятияТрудовойДеятельности);
КонецЕсли;
ПроведениеРасширенныйСервер.ВыполнитьЗапланированныеКорректировкиДвижений(Движения);
ПроведениеСервер.ЗаписьДвиженийПоУчетам(Движения, СтруктураВидовУчета);
КонецПроцедуры
Функция СторнироватьПоУчетам(Движения, Регистратор, ИсправленныйДокумент, СтруктураВидовУчета, ДополнительныеПараметры) Экспорт
Если СтруктураВидовУчета.ОстальныеВидыУчета Тогда
УправлениеШтатнымРасписанием.СторнироватьДвиженияДокумента(Движения, ИсправленныйДокумент);
УчетРабочегоВремениРасширенный.СторнироватьДниЧасыОтгуловСотрудников(Движения, ИсправленныйДокумент);
УчетОтгулов.СторнироватьДанныеОбИспользованииОтгулов(Движения, ИсправленныйДокумент);
КонецЕсли;
Если (ДополнительныеПараметры.ОтменаДокумента Или ДополнительныеПараметры.ИсправлениеВТекущемПериоде)
И Не ДополнительныеПараметры.ИсправлениеДоначислением Тогда
ИсправлениеДокументовЗарплатаКадры.СторнироватьДвиженияПоВсемУчетам(
Движения, ИсправленныйДокумент, ДополнительныеПараметры, СтруктураВидовУчета);
КонецЕсли;
Возврат Истина;
КонецФункции
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(ФизическоеЛицо)";
КонецПроцедуры
Функция ОписаниеРазделовДанных() Экспорт
ВсеРазделы = МногофункциональныеДокументыБЗККлиентСервер.РазделыДанных();
ОписаниеРазделовДанных = Новый Соответствие();
ОписаниеРаздела = МногофункциональныеДокументыБЗККлиентСервер.НовыйОписаниеРазделаДанных();
ОписаниеРазделовДанных.Вставить(ВсеРазделы.КадровыеДанные, ОписаниеРаздела);
ОписаниеРаздела.РеквизитСостояние = "Проведен";
ОписаниеРаздела.РеквизитОтветсвенный = "Ответственный";
ОписаниеРаздела = МногофункциональныеДокументыБЗККлиентСервер.НовыйОписаниеРазделаДанных();
ОписаниеРазделовДанных.Вставить(ВсеРазделы.НачисленнаяЗарплата, ОписаниеРаздела);
ОписаниеРаздела.РеквизитСостояние = "ДокументРассчитан";
ОписаниеРаздела.РеквизитОтветсвенный = "Рассчитал";
ОписаниеРаздела.ТребуетсяУтверждениеПриПроведении = Истина;
ОписаниеРаздела.СообщениеДокументНеУтвержден = НСтр("ru = '%1 - документ не рассчитан.'");
Возврат ОписаниеРазделовДанных;
КонецФункции
Функция ЗначенияДоступа(ДокументОбъект) Экспорт
Возврат МногофункциональныеДокументыБЗК.ЗначенияДоступаПоСоставуДокумента(
ДокументОбъект,
ДокументОбъект.Организация);
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
#Область ОбработчикиПравилРегистрации
Процедура ПриЗаполненииНастроекОбработчиковПравилРегистрации(Настройки) Экспорт
ЗарплатаКадрыРасширенныйСинхронизацияДанных.ДляОграниченияПоРеквизиту(Настройки,
Метаданные.Документы.Увольнение.Реквизиты.Сотрудник, "РегламентированныеДанные");
ЗарплатаКадрыРасширенныйСинхронизацияДанных.ДляОбъектаСПрисоединеннымиФайлами(Настройки);
КонецПроцедуры
#КонецОбласти
Функция ОписаниеСоставаОбъекта() Экспорт
Возврат ЗарплатаКадрыСоставДокументов.ОписаниеСоставаОбъектаФизическоеЛицоВШапке();
КонецФункции
#Область УчетПособий
Процедура ЗаполнитьУведомлениеОПрекращенииОтпускаПоУходуЗаРебенкомПоОснованию(УвольнениеСсылка, РеквизитыУведомления) Экспорт
РеквизитыУвольнения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(УвольнениеСсылка, "Организация, Сотрудник, Номер, Дата, ДатаУвольнения");
РеквизитыУведомления.Вставить("ТипПриказа", Перечисления.ОснованияПрекращенияПособийПоУходу.ПриказОбУвольнении);
РеквизитыУведомления.Вставить("Организация", РеквизитыУвольнения.Организация);
РеквизитыУведомления.Вставить("Сотрудник", РеквизитыУвольнения.Сотрудник);
РеквизитыУведомления.Вставить("ДатаПриказа", РеквизитыУвольнения.Дата);
РеквизитыУведомления.Вставить("НомерПриказа", РеквизитыУвольнения.Номер);
РеквизитыУведомления.Вставить("ДатаПрекращенияОплаты", РеквизитыУвольнения.ДатаУвольнения);
КонецПроцедуры
#КонецОбласти
Функция ОписаниеРеквизитаКадровогоРешения() Экспорт
Возврат Метаданные.Документы.Увольнение.Реквизиты.Решение;
КонецФункции
Функция СвойстваИсправляемогоДокумента(ДокументСсылка) Экспорт
Реквизиты = ИсправлениеДокументовЗарплатаКадры.РеквизитыИсправляемогоРасчетногоДокумента();
Реквизиты.Вставить("ДокументРассчитан");
Возврат ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументСсылка, Реквизиты);
КонецФункции
Функция ПараметрыИсправляемогоДокумента(ДокументСсылка) Экспорт
Возврат ИсправлениеДокументовЗарплатаКадры.ПараметрыИсправляемогоДокумента(ДокументСсылка,
СвойстваИсправляемогоДокумента(ДокументСсылка));
КонецФункции
Функция ОбъектЗаблокирован(СсылкаНаОбъект) Экспорт
Возврат Ложь;
КонецФункции
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
Если ПравоДоступа("Чтение", Метаданные.Документы.УведомлениеОСпецрежимахНалогообложения) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Представление =
НСтр("ru = 'Уведомление о расторжении договора с иностранным гражданином'");
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.Обработчик =
"КадровыйУчетКлиент.ВвестиУведомлениеОРасторженииДоговораСИностранцем";
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Представление =
НСтр("ru = 'Уведомлениие об исполнении обязательств перед иностранным гражданином'");
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.Обработчик =
"КадровыйУчетКлиент.ВвестиУведомлениеОбИсполненииОбязательствПередИностраннымСпециалистом";
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.БизнесПроцессыИЗадачи") Тогда
МодульБизнесПроцессыЗадание = ОбщегоНазначения.ОбщийМодуль("БизнесПроцессы.Задание");
МодульБизнесПроцессыЗадание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
ИдентификаторыПФ = Новый Массив;
Если ПравоДоступа("Просмотр", Метаданные.Отчеты.ПечатнаяФормаТ8) Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
КомандаПечати.МенеджерПечати = "Отчет.ПечатнаяФормаТ8";
КомандаПечати.Идентификатор = "ПФ_MXL_Т8";
КомандаПечати.Представление = НСтр("ru = 'Приказ об увольнении (Т-8)'");
КомандаПечати.Порядок = 10;
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
ЗарплатаКадры.ДобавитьИдентификаторКомандыДляПечатиВПакетномРежиме(ИдентификаторыПФ, КомандаПечати);
КонецЕсли;
Обработки.ПечатьКадровыхПриказовРасширенная.ДобавитьКомандуПечатиЗапискаРасчетПриУвольненииТ61(КомандыПечати, ИдентификаторыПФ);
УчетСреднегоЗаработка.ДобавитьКомандуПечатиРасчетаСреднегоЗаработка(КомандыПечати, "Документ.Увольнение", , ИдентификаторыПФ);
УчетСреднегоЗаработка.ДобавитьКомандуПечатиРасчетаСреднегоЗаработкаВыходногоПособия(КомандыПечати, "Документ.Увольнение", ИдентификаторыПФ);
УчетСреднегоЗаработка.ДобавитьКомандуПечатиРасчетаСреднегоЗаработка0504425(КомандыПечати, "Документ.Увольнение", , ИдентификаторыПФ);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
МодульГосударственнаяСлужба = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужба");
МодульГосударственнаяСлужба.ДобавитьКомандыПечатиСохраняемогоДенежногоСодержания(КомандыПечати, , ИдентификаторыПФ);
КонецЕсли;
РасчетЗарплатыРасширенный.ДобавитьКомандуПечатиПодробногоРасчетаНачислений(КомандыПечати);
Отчеты.ПечатнаяФормаСправкаОСреднемЗаработке.ДобавитьКомандуПечати(КомандыПечати, ИдентификаторыПФ);
ДобавитьКомандыПечатиПакетаДокументов(КомандыПечати, ИдентификаторыПФ);
КонецПроцедуры
Функция ИдентификаторыПечатиПакетаДокументов() Экспорт
ИдентификаторыПечати = Новый Массив;
КомандыПечати = УправлениеПечатью.СоздатьКоллекциюКомандПечати();
ДобавитьКомандыПечатиПакетаДокументов(КомандыПечати, ИдентификаторыПечати);
Возврат ИдентификаторыПечати;
КонецФункции
Процедура ДобавитьКомандыПечатиПакетаДокументов(КомандыПечати, ИдентификаторыПФ) Экспорт
ИдентификаторыПФОсновногоМестаРаботы = Новый Массив;
ИдентификаторыПФОсновногоМестаРаботыЕФС = Новый Массив;
Если ПравоДоступа("Просмотр", Метаданные.Документы.ИсходящаяСправкаОЗаработкеДляРасчетаПособий) Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
КомандаПечати.МенеджерПечати = "Документ.Увольнение";
КомандаПечати.Идентификатор = Документы.ИсходящаяСправкаОЗаработкеДляРасчетаПособий.ИмяМакетаПечатнойФормыСправки();
КомандаПечати.Представление = НСтр("ru = 'Справка о заработке для расчета пособий'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.Порядок = 110;
КомандаПечати.Картинка = БиблиотекаКартинок.СторонняяПечатнаяФорма;
КомандаПечати.ДополнительныеПараметры.Вставить("СторонняяПечатнаяФорма", Истина);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "УвольнениеСОсновногоМестаРаботы", Истина);
ЗарплатаКадры.ДобавитьИдентификаторКомандыДляПечатиВПакетномРежиме(ИдентификаторыПФОсновногоМестаРаботы, КомандаПечати);
ЗарплатаКадры.ДобавитьИдентификаторКомандыДляПечатиВПакетномРежиме(ИдентификаторыПФОсновногоМестаРаботыЕФС, КомандаПечати);
КонецЕсли;
Если ПравоДоступа("Просмотр", Метаданные.Документы.СправкаНДФЛ) Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
КомандаПечати.МенеджерПечати = "Документ.Увольнение";
КомандаПечати.Идентификатор = "Форма2НДФЛ";
КомандаПечати.Представление = НСтр("ru = 'Справка о доходах (2-НДФЛ)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.Картинка = БиблиотекаКартинок.СторонняяПечатнаяФорма;
КомандаПечати.ДополнительныеПараметры.Вставить("СторонняяПечатнаяФорма", Истина);
КомандаПечати.Порядок = 120;
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "УвольнениеСОсновногоМестаРаботы", Истина);
ЗарплатаКадры.ДобавитьИдентификаторКомандыДляПечатиВПакетномРежиме(ИдентификаторыПФОсновногоМестаРаботы, КомандаПечати);
ЗарплатаКадры.ДобавитьИдентификаторКомандыДляПечатиВПакетномРежиме(ИдентификаторыПФОсновногоМестаРаботыЕФС, КомандаПечати);
КонецЕсли;
Если ПравоДоступа("Просмотр", Метаданные.Документы.СведенияОЗастрахованныхЛицахСЗВ_М) Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
КомандаПечати.МенеджерПечати = "Документ.Увольнение";
КомандаПечати.Идентификатор = ПерсонифицированныйУчет.ИдентификаторПечатнойФормыФормаСЗВМ();
КомандаПечати.Представление = НСтр("ru = 'СЗВ-М'");
КомандаПечати.Порядок = 130;
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("РеквизитыДетализации", "Сотрудник");
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "УвольнениеСОсновногоМестаРаботы", Истина);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "Дата",
ЗарплатаКадрыПовтИсп.ДатаВступленияВСилуНА("ДатаНачалаПриемаЕФС1"), ВидСравненияКомпоновкиДанных.Меньше);
ЗарплатаКадры.ДобавитьИдентификаторКомандыДляПечатиВПакетномРежиме(ИдентификаторыПФОсновногоМестаРаботы, КомандаПечати);
КонецЕсли;
Если ПравоДоступа("Просмотр", Метаданные.Документы.СведенияОСтраховомСтажеЗастрахованныхЛицСЗВ_СТАЖ) Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
КомандаПечати.МенеджерПечати = "Документ.Увольнение";
КомандаПечати.Идентификатор = ПерсонифицированныйУчет.ИдентификаторПечатнойФормыФормаСЗВСТАЖ();
КомандаПечати.Представление = НСтр("ru = 'СЗВ-СТАЖ'");
КомандаПечати.Порядок = 140;
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("РеквизитыДетализации", "Сотрудник");
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "УвольнениеСОсновногоМестаРаботы", Истина);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "Дата",
ЗарплатаКадрыПовтИсп.ДатаВступленияВСилуНА("ДатаНачалаПриемаЕФС1"), ВидСравненияКомпоновкиДанных.Меньше);
ЗарплатаКадры.ДобавитьИдентификаторКомандыДляПечатиВПакетномРежиме(ИдентификаторыПФОсновногоМестаРаботы, КомандаПечати);
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
КомандаПечати.МенеджерПечати = "Документ.Увольнение";
КомандаПечати.Идентификатор = ПерсонифицированныйУчет.ИдентификаторПечатнойФормыПодраздела_1_2_ФормыЕФС_1();
КомандаПечати.Представление = НСтр("ru = 'Подраздел 1.2 формы ЕФС-1'");
КомандаПечати.Порядок = 140;
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("РеквизитыДетализации", "Сотрудник");
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "УвольнениеСОсновногоМестаРаботы", Истина);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "Дата",
ЗарплатаКадрыПовтИсп.ДатаВступленияВСилуНА("ДатаНачалаПриемаЕФС1"), ВидСравненияКомпоновкиДанных.БольшеИлиРавно);
ЗарплатаКадры.ДобавитьИдентификаторКомандыДляПечатиВПакетномРежиме(ИдентификаторыПФОсновногоМестаРаботыЕФС, КомандаПечати);
Если ПравоДоступа("Просмотр", Метаданные.Документы.СправкаНДФЛ) Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
КомандаПечати.МенеджерПечати = "Документ.Увольнение";
КомандаПечати.Идентификатор = ПерсонифицированныйУчет.ИдентификаторПечатнойФормы_ФормаЕФС_1();
КомандаПечати.Представление = НСтр("ru = 'Подразделы 1.2 и 3 формы ЕФС-1'");
КомандаПечати.Порядок = 145;
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("РеквизитыДетализации", "Сотрудник");
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "УвольнениеСОсновногоМестаРаботы", Истина);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "Дата",
ЗарплатаКадрыПовтИсп.ДатаВступленияВСилуНА("ДатаНачалаПриемаЕФС1"), ВидСравненияКомпоновкиДанных.БольшеИлиРавно);
ЗарплатаКадры.ДобавитьИдентификаторКомандыДляПечатиВПакетномРежиме(ИдентификаторыПФОсновногоМестаРаботыЕФС, КомандаПечати);
КонецЕсли;
КонецЕсли;
Если ПравоДоступа("Просмотр", Метаданные.Документы.СведенияОТрудовойДеятельностиРаботникаСТД_Р) Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
КомандаПечати.МенеджерПечати = "Документ.Увольнение";
КомандаПечати.Идентификатор = "ПФ_MXL_СТД_Р";
КомандаПечати.Представление = НСтр("ru = 'Сведения о трудовой деятельности, СТД-Р'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.Порядок = 150;
КомандаПечати.Картинка = БиблиотекаКартинок.СторонняяПечатнаяФорма;
КомандаПечати.ДополнительныеПараметры.Вставить("СторонняяПечатнаяФорма", Истина);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "УвольнениеСОсновногоМестаРаботы", Истина);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "ПредоставлятьМероприятияТДВЭлектроннойФорме", Истина);
ЗарплатаКадры.ДобавитьИдентификаторКомандыДляПечатиВПакетномРежиме(ИдентификаторыПФОсновногоМестаРаботы, КомандаПечати);
ЗарплатаКадры.ДобавитьИдентификаторКомандыДляПечатиВПакетномРежиме(ИдентификаторыПФОсновногоМестаРаботыЕФС, КомандаПечати);
КонецЕсли;
Если ПравоДоступа("Просмотр", Метаданные.Отчеты.ЗаймыСотрудникам) Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
КомандаПечати.МенеджерПечати = "Документ.Увольнение";
КомандаПечати.Идентификатор = "ОтчетОПогашенииЗайма";
КомандаПечати.Представление = НСтр("ru = 'Отчет о погашении займа'");
КомандаПечати.Порядок = 160;
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.Картинка = БиблиотекаКартинок.СторонняяПечатнаяФорма;
КомандаПечати.ДополнительныеПараметры.Вставить("СторонняяПечатнаяФорма", Истина);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "УвольнениеСОсновногоМестаРаботы", Истина);
ЗарплатаКадры.ДобавитьИдентификаторКомандыДляПечатиВПакетномРежиме(ИдентификаторыПФОсновногоМестаРаботы, КомандаПечати);
ЗарплатаКадры.ДобавитьИдентификаторКомандыДляПечатиВПакетномРежиме(ИдентификаторыПФОсновногоМестаРаботыЕФС, КомандаПечати);
КонецЕсли;
Если ПравоДоступа("Просмотр", Метаданные.Документы.СправкаНДФЛ) Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
КомандаПечати.МенеджерПечати = "Документ.Увольнение";
КомандаПечати.Идентификатор = ИдентификаторПечатнойФормыРаздел3РСВ();
КомандаПечати.Представление = НСтр("ru = 'Раздел 3 РСВ'");
КомандаПечати.Порядок = 180;
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("РеквизитыДетализации", "ФизическоеЛицо");
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "УвольнениеСОсновногоМестаРаботы", Истина);
ЗарплатаКадры.ДобавитьИдентификаторКомандыДляПечатиВПакетномРежиме(ИдентификаторыПФОсновногоМестаРаботы, КомандаПечати);
ЗарплатаКадры.ДобавитьИдентификаторКомандыДляПечатиВПакетномРежиме(ИдентификаторыПФОсновногоМестаРаботыЕФС, КомандаПечати);
КонецЕсли;
Если ПравоДоступа("Просмотр", Метаданные.Документы.СправкаНДФЛ) Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
КомандаПечати.МенеджерПечати = "Документ.Увольнение";
КомандаПечати.Идентификатор = Документы.СведенияДляИсчисленияДоплатыКПенсииСЗВ_ДСО.ИдентификаторКомандыПечати_ФормаСЗВ_ДСО();
КомандаПечати.Представление = НСтр("ru = 'СЗВ-ДСО'");
КомандаПечати.Порядок = 190;
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ФункциональныеОпции = "ИспользуетсяТрудЧленовЛетныхЭкипажей,ИспользуетсяТрудШахтеров";
КомандаПечати.ДополнительныеПараметры.Вставить("РеквизитыДетализации", "Сотрудник");
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "УвольнениеСОсновногоМестаРаботы", Истина);
ЗарплатаКадры.ДобавитьИдентификаторКомандыДляПечатиВПакетномРежиме(ИдентификаторыПФОсновногоМестаРаботы, КомандаПечати);
ЗарплатаКадры.ДобавитьИдентификаторКомандыДляПечатиВПакетномРежиме(ИдентификаторыПФОсновногоМестаРаботыЕФС, КомандаПечати);
КонецЕсли;
Если ИдентификаторыПФ.Количество() > 1 Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
КомандаПечати.Идентификатор = СтрСоединить(ИдентификаторыПФ, ",");
КомандаПечати.Порядок = 997;
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнитьКомплектВнешнимиПечатнымиФормами = Истина;
КомандаПечати.Представление = НСтр("ru = 'Комплект документов при увольнении'");
КомандаПечати.ДополнительныеПараметры.Вставить("ТребуетсяЧтениеБезОграничений", Истина);
КомандаПечати.Картинка = БиблиотекаКартинок.ПечатьПакетаДокументов;
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "УвольнениеСОсновногоМестаРаботы", Ложь);
КопияИдентификаторыПФ = ОбщегоНазначения.СкопироватьРекурсивно(ИдентификаторыПФ);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(КопияИдентификаторыПФ, ИдентификаторыПФОсновногоМестаРаботы);
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
КомандаПечати.Идентификатор = СтрСоединить(КопияИдентификаторыПФ, ",");
КомандаПечати.Порядок = 998;
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнитьКомплектВнешнимиПечатнымиФормами = Истина;
КомандаПечати.Представление = НСтр("ru = 'Комплект документов при увольнении'");
КомандаПечати.ДополнительныеПараметры.Вставить("ТребуетсяЧтениеБезОграничений", Истина);
КомандаПечати.Картинка = БиблиотекаКартинок.ПечатьПакетаДокументов;
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "УвольнениеСОсновногоМестаРаботы", Истина);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "Дата",
ЗарплатаКадрыПовтИсп.ДатаВступленияВСилуНА("ДатаНачалаПриемаЕФС1"), ВидСравненияКомпоновкиДанных.Меньше);
КопияИдентификаторыПФ = ОбщегоНазначения.СкопироватьРекурсивно(ИдентификаторыПФ);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(КопияИдентификаторыПФ, ИдентификаторыПФОсновногоМестаРаботыЕФС);
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
КомандаПечати.Идентификатор = СтрСоединить(КопияИдентификаторыПФ, ",");
КомандаПечати.Порядок = 999;
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнитьКомплектВнешнимиПечатнымиФормами = Истина;
КомандаПечати.Представление = НСтр("ru = 'Комплект документов при увольнении'");
КомандаПечати.ДополнительныеПараметры.Вставить("ТребуетсяЧтениеБезОграничений", Истина);
КомандаПечати.Картинка = БиблиотекаКартинок.ПечатьПакетаДокументов;
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "УвольнениеСОсновногоМестаРаботы", Истина);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "Дата",
ЗарплатаКадрыПовтИсп.ДатаВступленияВСилуНА("ДатаНачалаПриемаЕФС1"), ВидСравненияКомпоновкиДанных.БольшеИлиРавно);
КонецЕсли;
КонецПроцедуры
Функция ДобавитьКомандыСозданияДокументов(КомандыСозданияДокументов, ДополнительныеПараметры) Экспорт
Если КадровыйУчетРасширенный.ПравоИнтерактивногоСозданияКадровыхПриказовСотрудника() Тогда
ЗарплатаКадрыРасширенный.ДобавитьВКоллекциюКомандуСозданияДокументаПоМетаданнымДокумента(
КомандыСозданияДокументов, Метаданные.Документы.Увольнение);
КонецЕсли;
КонецФункции
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода, СписокСотрудников = Неопределено) Экспорт
ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
Отчеты.ПечатнаяФормаТ8.Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода, СписокСотрудников);
Обработки.ПечатьКадровыхПриказовРасширенная.Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
Обработки.ПечатьРасчетаСреднегоЗаработка.Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
ПечатьПакетаДокументовПриУвольнении(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
КонецПроцедуры
Процедура ПечатьПакетаДокументовПриУвольнении(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода)
Отчеты.ПечатнаяФормаСправкаОСреднемЗаработке.Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, Документы.ИсходящаяСправкаОЗаработкеДляРасчетаПособий.ИмяМакетаПечатнойФормыСправки())
Или УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Форма2НДФЛ")
Или УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ОтчетОПогашенииЗайма")
Или УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПФ_MXL_СТД_Р") Тогда
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
СоздатьВТСотрудникиДокументов(Запрос.МенеджерВременныхТаблиц, МассивОбъектов);
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, Документы.ИсходящаяСправкаОЗаработкеДляРасчетаПособий.ИмяМакетаПечатнойФормыСправки())
Или УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Форма2НДФЛ")
Или УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПФ_MXL_СТД_Р") Тогда
ТаблицаСправок = СправкиСотрудников(Запрос.МенеджерВременныхТаблиц);
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, Документы.ИсходящаяСправкаОЗаработкеДляРасчетаПособий.ИмяМакетаПечатнойФормыСправки()) Тогда
МассивСправок = Новый Массив;
Для Каждого СтрокаСправки Из ТаблицаСправок Цикл
Если ЗначениеЗаполнено(СтрокаСправки.ИсходящаяСправкаОЗаработкеДляРасчетаПособий) Тогда
МассивСправок.Добавить(СтрокаСправки.ИсходящаяСправкаОЗаработкеДляРасчетаПособий);
Иначе
ОбщегоНазначения.СообщитьПользователю(
СтрШаблон(НСтр("ru='По сотрудники %1 не найдена исходящая справка для расчета пособий'"), СтрокаСправки.Сотрудник),
СтрокаСправки.СсылкаНаУвольнение);
КонецЕсли;
КонецЦикла;
Если МассивСправок.Количество() > 0 Тогда
ЭДОБЗК.ПечатьСтороннейПечатнойФормы(
Документы.ИсходящаяСправкаОЗаработкеДляРасчетаПособий,
МассивСправок, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
Иначе
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
Документы.ИсходящаяСправкаОЗаработкеДляРасчетаПособий.ИмяМакетаПечатнойФормыСправки(),
НСтр("ru = 'Справка о заработке для расчета пособий'"),
Новый ТабличныйДокумент);
КонецЕсли;
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Форма2НДФЛ") Тогда
МассивСправок = Новый Массив;
Для Каждого СтрокаСправки Из ТаблицаСправок Цикл
Если ЗначениеЗаполнено(СтрокаСправки.СправкаНДФЛ) Тогда
МассивСправок.Добавить(СтрокаСправки.СправкаНДФЛ);
Иначе
ОбщегоНазначения.СообщитьПользователю(
СтрШаблон(НСтр("ru='По сотрудники %1 не найдена справка 2-НДФЛ'"), СтрокаСправки.Сотрудник),
СтрокаСправки.СсылкаНаУвольнение);
КонецЕсли;
КонецЦикла;
Если МассивСправок.Количество() > 0 Тогда
ЭДОБЗК.ПечатьСтороннейПечатнойФормы(
Документы.СправкаНДФЛ,
МассивСправок, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
Иначе
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"Форма2НДФЛ",
НСтр("ru = 'Справка о доходах (2-НДФЛ)'"),
Новый ТабличныйДокумент);
КонецЕсли;
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПФ_MXL_СТД_Р") Тогда
МассивСправок = Новый Массив;
Для Каждого СтрокаСправки Из ТаблицаСправок Цикл
Если СтрокаСправки.ПредоставлятьМероприятияТДВЭлектроннойФорме Тогда
Если ЗначениеЗаполнено(СтрокаСправки.СведенияОТрудовойДеятельностиРаботникаСТД_Р) Тогда
МассивСправок.Добавить(СтрокаСправки.СведенияОТрудовойДеятельностиРаботникаСТД_Р);
Иначе
ОбщегоНазначения.СообщитьПользователю(
СтрШаблон(НСтр("ru='По сотрудники %1 не найдены сведения о трудовой деятельности, СТД-Р'"), СтрокаСправки.Сотрудник),
СтрокаСправки.СсылкаНаУвольнение);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если МассивСправок.Количество() > 0 Тогда
ЭДОБЗК.ПечатьСтороннейПечатнойФормы(
Документы.СведенияОТрудовойДеятельностиРаботникаСТД_Р,
МассивСправок, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
Иначе
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ПФ_MXL_СТД_Р",
НСтр("ru = 'Сведения о трудовой деятельности, СТД-Р'"),
Новый ТабличныйДокумент);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ОтчетОПогашенииЗайма") Тогда
МассивСправок = ДоговорыЗаймаФизическихЛиц(Запрос.МенеджерВременныхТаблиц);
Если МассивСправок.Количество() > 0 Тогда
ЭДОБЗК.ПечатьСтороннейПечатнойФормы(
Документы.ДоговорЗаймаСотруднику,
МассивСправок, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
Иначе
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru='Не найдено не погашенных договоров займа'"));
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ОтчетОПогашенииЗайма",
НСтр("ru = 'Отчет о погашении займа'"),
Новый ТабличныйДокумент);
КонецЕсли;
КонецЕсли;
КонецЕсли;
ПечатьСЗВМ(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
ПечатьСЗВСТАЖ(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
ПечатьРаздел3РСВ(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
ПечатьПодраздела_1_2_ФормыЕФС_1(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
ПечатьФормаСЗВ_ДСО(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба.РасчетДенежногоСодержания") Тогда
МодульГосударственнаяСлужба = ОбщегоНазначения.ОбщийМодуль("РасчетДенежногоСодержания");
МодульГосударственнаяСлужба.ПечатьСохраняемогоДенежногоСодержания(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
КонецЕсли;
КонецПроцедуры
Процедура СоздатьВТСотрудникиДокументов(МенеджерВременныхТаблиц, МассивОбъектов)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.Текст =
"ВЫБРАТЬ
| Увольнение.Ссылка КАК СсылкаНаУвольнение,
| Увольнение.Организация КАК Организация,
| Увольнение.Сотрудник КАК Сотрудник,
| Увольнение.ФизическоеЛицо КАК ФизическоеЛицо,
| 1 КАК НомерСтроки,
| Увольнение.ДатаУвольнения КАК ДатаУвольнения,
| Увольнение.ПредоставлятьМероприятияТДВЭлектроннойФорме КАК ПредоставлятьМероприятияТДВЭлектроннойФорме
|ПОМЕСТИТЬ ВТСотрудникиДокументов
|ИЗ
| Документ.Увольнение КАК Увольнение
|ГДЕ
| Увольнение.Ссылка В(&МассивОбъектов)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УвольнениеСпискомСотрудники.Ссылка,
| УвольнениеСпискомСотрудники.Ссылка.Организация,
| УвольнениеСпискомСотрудники.Сотрудник,
| УвольнениеСпискомСотрудники.ФизическоеЛицо,
| УвольнениеСпискомСотрудники.НомерСтроки,
| УвольнениеСпискомСотрудники.ДатаУвольнения,
| УвольнениеСпискомСотрудники.ПредоставлятьМероприятияТДВЭлектроннойФорме
|ИЗ
| Документ.УвольнениеСписком.Сотрудники КАК УвольнениеСпискомСотрудники
|ГДЕ
| УвольнениеСпискомСотрудники.Ссылка В(&МассивОбъектов)";
Запрос.Выполнить();
КонецПроцедуры
Функция СправкиСотрудников(МенеджерВременныхТаблиц) Экспорт
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
УстановитьПривилегированныйРежим(Истина);
Запрос.Текст =
"ВЫБРАТЬ
| Сотрудники.СсылкаНаУвольнение КАК СсылкаНаУвольнение,
| Сотрудники.Сотрудник КАК Сотрудник,
| Сотрудники.ФизическоеЛицо КАК ФизическоеЛицо,
| МАКСИМУМ(ВЫБОР
| КОГДА Сотрудники.Сотрудник = ЕСТЬNULL(ОсновныеСотрудникиФизическихЛиц.Сотрудник, НЕОПРЕДЕЛЕНО)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК ОсновнойВидЗанятости,
| МИНИМУМ(Сотрудники.НомерСтроки) КАК НомерСтроки,
| МАКСИМУМ(СправкаНДФЛ.Ссылка) КАК СправкаНДФЛ,
| МАКСИМУМ(ИсходящаяСправкаОЗаработкеДляРасчетаПособий.Ссылка) КАК ИсходящаяСправкаОЗаработкеДляРасчетаПособий,
| МАКСИМУМ(СведенияОТрудовойДеятельностиРаботникаСТД_РМероприятия.Ссылка) КАК СведенияОТрудовойДеятельностиРаботникаСТД_Р,
| Сотрудники.ПредоставлятьМероприятияТДВЭлектроннойФорме КАК ПредоставлятьМероприятияТДВЭлектроннойФорме
|ИЗ
| ВТСотрудникиДокументов КАК Сотрудники
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СправкаНДФЛ КАК СправкаНДФЛ
| ПО Сотрудники.ФизическоеЛицо = СправкаНДФЛ.Сотрудник
| И Сотрудники.Организация = СправкаНДФЛ.Организация
| И (ГОД(Сотрудники.ДатаУвольнения) = СправкаНДФЛ.НалоговыйПериод)
| И (ЕСТЬNULL(СправкаНДФЛ.Проведен, ИСТИНА))
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ИсходящаяСправкаОЗаработкеДляРасчетаПособий КАК ИсходящаяСправкаОЗаработкеДляРасчетаПособий
| ПО Сотрудники.Сотрудник = ИсходящаяСправкаОЗаработкеДляРасчетаПособий.Сотрудник
| И Сотрудники.Организация = ИсходящаяСправкаОЗаработкеДляРасчетаПособий.Организация
| И (ГОД(Сотрудники.ДатаУвольнения) = ИсходящаяСправкаОЗаработкеДляРасчетаПособий.ГодПо)
| И (ЕСТЬNULL(ИсходящаяСправкаОЗаработкеДляРасчетаПособий.Проведен, ИСТИНА))
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СведенияОТрудовойДеятельностиРаботникаСТД_Р.Мероприятия КАК СведенияОТрудовойДеятельностиРаботникаСТД_РМероприятия
| ПО Сотрудники.ФизическоеЛицо = СведенияОТрудовойДеятельностиРаботникаСТД_РМероприятия.Ссылка.ФизическоеЛицо
| И Сотрудники.Организация.ГоловнаяОрганизация = СведенияОТрудовойДеятельностиРаботникаСТД_РМероприятия.Ссылка.Организация
| И Сотрудники.ДатаУвольнения <= СведенияОТрудовойДеятельностиРаботникаСТД_РМероприятия.Ссылка.Дата
| И (ЕСТЬNULL(СведенияОТрудовойДеятельностиРаботникаСТД_РМероприятия.Ссылка.Проведен, ИСТИНА))
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОсновныеСотрудникиФизическихЛиц КАК ОсновныеСотрудникиФизическихЛиц
| ПО Сотрудники.ФизическоеЛицо = ОсновныеСотрудникиФизическихЛиц.ФизическоеЛицо
| И Сотрудники.Организация.ГоловнаяОрганизация = ОсновныеСотрудникиФизическихЛиц.ГоловнаяОрганизация
| И (Сотрудники.ДатаУвольнения МЕЖДУ ОсновныеСотрудникиФизическихЛиц.ДатаНачала И ОсновныеСотрудникиФизическихЛиц.ДатаОкончания)
|
|СГРУППИРОВАТЬ ПО
| Сотрудники.СсылкаНаУвольнение,
| Сотрудники.Сотрудник,
| Сотрудники.ФизическоеЛицо,
| Сотрудники.ПредоставлятьМероприятияТДВЭлектроннойФорме
|
|УПОРЯДОЧИТЬ ПО
| СсылкаНаУвольнение,
| НомерСтроки";
РезультатЗапроса = Запрос.Выполнить();
УстановитьПривилегированныйРежим(Ложь);
Возврат РезультатЗапроса.Выгрузить();
КонецФункции
Функция ДоговорыЗаймаФизическихЛиц(МенеджерВременныхТаблиц)
МассивДоговоров = Новый Массив;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| Сотрудники.СсылкаНаУвольнение КАК СсылкаНаУвольнение,
| МИНИМУМ(Сотрудники.НомерСтроки) КАК НомерСтроки,
| Сотрудники.ФизическоеЛицо КАК ФизическоеЛицо,
| ВзаиморасчетыПоЗаймамСотрудникамОстатки.ДоговорЗайма КАК ДоговорЗайма
|ИЗ
| ВТСотрудникиДокументов КАК Сотрудники
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыПоЗаймамСотрудникам КАК ВзаиморасчетыПоЗаймамСотрудникамОстатки
| ПО Сотрудники.ФизическоеЛицо = ВзаиморасчетыПоЗаймамСотрудникамОстатки.ФизическоеЛицо
|
|СГРУППИРОВАТЬ ПО
| Сотрудники.СсылкаНаУвольнение,
| Сотрудники.ФизическоеЛицо,
| ВзаиморасчетыПоЗаймамСотрудникамОстатки.ДоговорЗайма
|
|УПОРЯДОЧИТЬ ПО
| СсылкаНаУвольнение,
| НомерСтроки";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если ЗначениеЗаполнено(Выборка.ДоговорЗайма) Тогда
МассивДоговоров.Добавить(Выборка.ДоговорЗайма);
КонецЕсли;
КонецЦикла;
Возврат МассивДоговоров;
КонецФункции
Функция ОбъектыСтороннихПечатныхФорм(ОбъектыТипа, ИдентификаторыПечатныхФорм = Неопределено) Экспорт
ОбъектыПечатныхФорм = Новый Соответствие;
Если ИдентификаторыПечатныхФорм = Неопределено Тогда
Идентификаторы = ИдентификаторыСтороннихПечатныхФорм();
Иначе
Идентификаторы = Новый Массив;
ИдентификаторыДокумента = ИдентификаторыСтороннихПечатныхФорм();
Для Каждого Идентификатор Из ИдентификаторыПечатныхФорм Цикл
Если ИдентификаторыДокумента.Найти(Идентификатор) <> Неопределено Тогда
Идентификаторы.Добавить(Идентификатор);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если Идентификаторы.Количество() > 0 Тогда
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
СоздатьВТСотрудникиДокументов(Запрос.МенеджерВременныхТаблиц, ОбъектыТипа);
ТаблицаСправок = СправкиСотрудников(Запрос.МенеджерВременныхТаблиц);
Для Каждого СтрокаСправок Из ТаблицаСправок Цикл
Для Каждого Идентификатор Из Идентификаторы Цикл
Если Идентификатор = "Форма2НДФЛ" Тогда
ДобавитьДокументВКоллекцию(ОбъектыПечатныхФорм, Идентификатор, СтрокаСправок.СправкаНДФЛ);
ИначеЕсли Идентификатор = Документы.ИсходящаяСправкаОЗаработкеДляРасчетаПособий.ИмяМакетаПечатнойФормыСправки() Тогда
ДобавитьДокументВКоллекцию(ОбъектыПечатныхФорм, Идентификатор,
СтрокаСправок.ИсходящаяСправкаОЗаработкеДляРасчетаПособий);
ИначеЕсли Идентификатор = "ПФ_MXL_СТД_Р" Тогда
ДобавитьДокументВКоллекцию(ОбъектыПечатныхФорм, Идентификатор,
СтрокаСправок.СведенияОТрудовойДеятельностиРаботникаСТД_Р);
КонецЕсли;
КонецЦикла;
КонецЦикла;
Идентификатор = "ОтчетОПогашенииЗайма";
Если Идентификаторы.Найти(Идентификатор) <> Неопределено Тогда
МассивДоговоров = ДоговорыЗаймаФизическихЛиц(Запрос.МенеджерВременныхТаблиц);
Если МассивДоговоров.Количество() > 0 Тогда
ДобавитьДокументВКоллекцию(ОбъектыПечатныхФорм, Идентификатор, МассивДоговоров);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат ОбъектыПечатныхФорм;
КонецФункции
Процедура ДобавитьДокументВКоллекцию(ОбъектыПечатныхФорм, Идентификатор, СсылкаНаОбъект)
Если ЗначениеЗаполнено(СсылкаНаОбъект) Тогда
СписокОбъектов = ОбъектыПечатныхФорм.Получить(Идентификатор);
Если СписокОбъектов = Неопределено Тогда
СписокОбъектов = Новый Массив;
ОбъектыПечатныхФорм.Вставить(Идентификатор, СписокОбъектов);
КонецЕсли;
Если ТипЗнч(СсылкаНаОбъект) = Тип("Массив") Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(СписокОбъектов, СсылкаНаОбъект);
Иначе
СписокОбъектов.Добавить(СсылкаНаОбъект);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция ИдентификаторыСтороннихПечатныхФорм()
Идентификаторы = Новый Массив;
Идентификаторы.Добавить("Форма2НДФЛ");
Идентификаторы.Добавить(Документы.ИсходящаяСправкаОЗаработкеДляРасчетаПособий.ИмяМакетаПечатнойФормыСправки());
Идентификаторы.Добавить("ПФ_MXL_СТД_Р");
Идентификаторы.Добавить("ОтчетОПогашенииЗайма");
Возврат Идентификаторы
КонецФункции
#Область ПечатьСЗВМ
Процедура ПечатьСЗВМ(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода)
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, ПерсонифицированныйУчет.ИдентификаторПечатнойФормыФормаСЗВМ()) Тогда
ВыборкаПоШапкеДокумента = ВыборкаПоШапкеДокументаДляСЗВМ(МассивОбъектов);
ВыборкаПоРаботникиОрганизации = ВыборкаПоСотрудникамДляСЗВМ(МассивОбъектов);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
ПерсонифицированныйУчет.ИдентификаторПечатнойФормыФормаСЗВМ(),
НСтр("ru = 'СЗВ-М'"),
ПерсонифицированныйУчет.ПечатнаяФормаСЗВМПоДаннымДокументов(
ОбъектыПечати, ВыборкаПоШапкеДокумента, ВыборкаПоРаботникиОрганизации, ВыборкаПоРаботникиОрганизации.Количество() > 1, ПараметрыПечати));
КонецЕсли;
КонецПроцедуры
Функция ВыборкаПоШапкеДокументаДляСЗВМ(МассивСсылок)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ИсточникДанных.Организация КАК Организация,
| ИсточникДанных.ПериодРегистрации КАК Период
|ПОМЕСТИТЬ ВТОрганизации
|ИЗ
| Документ.Увольнение КАК ИсточникДанных
|ГДЕ
| ИсточникДанных.Ссылка В(&МассивСсылок)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ИсточникДанных.Организация,
| ИсточникДанных.ПериодРегистрации
|ИЗ
| Документ.УвольнениеСписком КАК ИсточникДанных
|ГДЕ
| ИсточникДанных.Ссылка В(&МассивСсылок)";
Запрос.Выполнить();
ПерсонифицированныйУчет.СоздатьВТСведенияОбОрганизацияхПоВременнойТаблице(Запрос.МенеджерВременныхТаблиц);
Запрос.Текст =
"ВЫБРАТЬ
| Увольнение.Ссылка КАК Ссылка,
| Увольнение.Номер КАК Номер,
| Увольнение.Дата КАК Дата,
| Увольнение.Организация КАК Организация,
| Увольнение.ПериодРегистрации КАК ОтчетныйПериод,
| Увольнение.Руководитель КАК Руководитель,
| Увольнение.ДолжностьРуководителя КАК ДолжностьРуководителя,
| Увольнение.Ответственный КАК Ответственный,
| Увольнение.ПериодРегистрации КАК ОкончаниеОтчетногоПериода,
| 1 КАК КоличествоСотрудников
|ПОМЕСТИТЬ ВТДанныеДокументов
|ИЗ
| Документ.Увольнение КАК Увольнение
|ГДЕ
| Увольнение.Ссылка В(&МассивСсылок)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УвольнениеСписком.Ссылка,
| УвольнениеСписком.Номер,
| УвольнениеСписком.Дата,
| УвольнениеСписком.Организация,
| УвольнениеСписком.ПериодРегистрации,
| УвольнениеСписком.Руководитель,
| УвольнениеСписком.ДолжностьРуководителя,
| УвольнениеСписком.Ответственный,
| УвольнениеСписком.ПериодРегистрации,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ УвольнениеСпискомСотрудники.НомерСтроки)
|ИЗ
| Документ.УвольнениеСписком КАК УвольнениеСписком
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.УвольнениеСписком.Сотрудники КАК УвольнениеСпискомСотрудники
| ПО (УвольнениеСпискомСотрудники.Ссылка = УвольнениеСписком.Ссылка)
|ГДЕ
| УвольнениеСпискомСотрудники.Ссылка В(&МассивСсылок)
|
|СГРУППИРОВАТЬ ПО
| УвольнениеСписком.Ссылка,
| УвольнениеСписком.Номер,
| УвольнениеСписком.Дата,
| УвольнениеСписком.Организация,
| УвольнениеСписком.ПериодРегистрации,
| УвольнениеСписком.Руководитель,
| УвольнениеСписком.ДолжностьРуководителя,
| УвольнениеСписком.Ответственный,
| УвольнениеСписком.ПериодРегистрации";
Запрос.Выполнить();
ЗарплатаКадры.СоздатьВТФИООтветственныхЛиц(Запрос.МенеджерВременныхТаблиц, Истина, "Руководитель", "ВТДанныеДокументов");
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокументов.Ссылка КАК Ссылка,
| ДанныеДокументов.Дата КАК Дата,
| ДанныеДокументов.Номер КАК Номер,
| ДанныеДокументов.Организация КАК Организация,
| СведенияОбОрганизациях.ЮридическоеФизическоеЛицо КАК ЮридическоеФизическоеЛицо,
| СведенияОбОрганизациях.КодПоОКПО КАК КодПоОКПО,
| СведенияОбОрганизациях.НаименованиеОКОПФ КАК НаименованиеОКОПФ,
| СведенияОбОрганизациях.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
| СведенияОбОрганизациях.Наименование КАК Наименование,
| СведенияОбОрганизациях.НаименованиеПолное КАК НаименованиеПолное,
| СведенияОбОрганизациях.НаименованиеСокращенное КАК НаименованиеСокращенное,
| СведенияОбОрганизациях.НаименованиеСокращенное КАК НаименованиеОрганизации,
| СведенияОбОрганизациях.ИНН КАК ИНН,
| СведенияОбОрганизациях.КПП КАК КПП,
| СведенияОбОрганизациях.ОГРН КАК ОГРН,
| СведенияОбОрганизациях.РегистрационныйНомерПФР КАК РегистрационныйНомерПФР,
| ЗНАЧЕНИЕ(Перечисление.ТипыСведенийСЗВ_М.Исходная) КАК ТипФормы,
| ДанныеДокументов.ОтчетныйПериод КАК ОтчетныйПериод,
| ДанныеДокументов.КоличествоСотрудников КАК КоличествоСотрудников,
| ДанныеДокументов.Ответственный КАК Ответственный,
| ЕСТЬNULL(ДанныеДокументов.ДолжностьРуководителя.Наименование, """") КАК РуководительДолжность,
| ЕСТЬNULL(ФИООтветственныхЛиц.ФИОПолные, """") КАК Руководитель
|ИЗ
| ВТДанныеДокументов КАК ДанныеДокументов
| ЛЕВОЕ СОЕДИНЕНИЕ ВТСведенияОбОрганизациях КАК СведенияОбОрганизациях
| ПО ДанныеДокументов.Организация = СведенияОбОрганизациях.Организация
| И ДанныеДокументов.ОкончаниеОтчетногоПериода = СведенияОбОрганизациях.Период
| ЛЕВОЕ СОЕДИНЕНИЕ ВТФИООтветственныхЛиц КАК ФИООтветственныхЛиц
| ПО ДанныеДокументов.Ссылка = ФИООтветственныхЛиц.Ссылка
| И ДанныеДокументов.Руководитель = ФИООтветственныхЛиц.ФизическоеЛицо
|ГДЕ
| ДанныеДокументов.Ссылка В(&МассивСсылок)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка";
Возврат Запрос.Выполнить().Выбрать();
КонецФункции
Функция ВыборкаПоСотрудникамДляСЗВМ(МассивСсылок)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
Запрос.Текст =
"ВЫБРАТЬ
| Увольнение.Ссылка КАК Ссылка,
| 1 КАК НомерСтроки,
| Увольнение.Сотрудник КАК Сотрудник,
| Увольнение.ФизическоеЛицо КАК ФизическоеЛицо,
| Увольнение.ДатаУвольнения КАК Период
|ПОМЕСТИТЬ ВТСотрудникиПериоды
|ИЗ
| Документ.Увольнение КАК Увольнение
|ГДЕ
| Увольнение.Ссылка В(&МассивСсылок)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УвольнениеСпискомСотрудники.Ссылка,
| УвольнениеСпискомСотрудники.НомерСтроки,
| УвольнениеСпискомСотрудники.Сотрудник,
| УвольнениеСпискомСотрудники.ФизическоеЛицо,
| УвольнениеСпискомСотрудники.ДатаУвольнения
|ИЗ
| Документ.УвольнениеСписком.Сотрудники КАК УвольнениеСпискомСотрудники
|ГДЕ
| УвольнениеСпискомСотрудники.Ссылка В(&МассивСсылок)";
Запрос.Выполнить();
Описатель = КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеФизическихЛиц(
Запрос.МенеджерВременныхТаблиц,
"ВТСотрудникиПериоды");
КадровыйУчет.СоздатьВТКадровыеДанныеФизическихЛиц(Описатель, Истина, "Фамилия,Имя,Отчество,ИНН,СтраховойНомерПФР");
Запрос.Текст =
"ВЫБРАТЬ
| СотрудникиПериоды.Ссылка КАК Ссылка,
| СотрудникиПериоды.НомерСтроки КАК НомерСтроки,
| СотрудникиПериоды.Сотрудник КАК Сотрудник,
| КадровыеДанные.Фамилия КАК Фамилия,
| КадровыеДанные.Имя КАК Имя,
| КадровыеДанные.Отчество КАК Отчество,
| КадровыеДанные.ИНН КАК ИНН,
| КадровыеДанные.СтраховойНомерПФР КАК СтраховойНомерПФР
|ИЗ
| ВТСотрудникиПериоды КАК СотрудникиПериоды
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеФизическихЛиц КАК КадровыеДанные
| ПО СотрудникиПериоды.Период = КадровыеДанные.Период
| И СотрудникиПериоды.ФизическоеЛицо = КадровыеДанные.ФизическоеЛицо
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки";
Возврат Запрос.Выполнить().Выбрать();
КонецФункции
#КонецОбласти
#Область ПечатьСЗВСТАЖ
Процедура ПечатьСЗВСТАЖ(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода)
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, ПерсонифицированныйУчет.ИдентификаторПечатнойФормыФормаСЗВСТАЖ()) Тогда
ВыборкаПоШапкеДокумента = ВыборкаПоШапкеДокументаДляСЗВСТАЖ(МассивОбъектов);
ВыборкаПоРаботникиОрганизации = РезультатЗапросаПоСотрудникамДляПечатиСЗВСТАЖ(МассивОбъектов).Выбрать();
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
ПерсонифицированныйУчет.ИдентификаторПечатнойФормыФормаСЗВСТАЖ(),
НСтр("ru = 'СЗВ-СТАЖ'"),
ПерсонифицированныйУчет.ПечатнаяФормаСЗВСТАЖПоДаннымДокументов(
ОбъектыПечати, ВыборкаПоШапкеДокумента, ВыборкаПоРаботникиОрганизации, ВыборкаПоРаботникиОрганизации.Количество() > 1, ПараметрыПечати));
КонецЕсли;
КонецПроцедуры
Функция ВыборкаПоШапкеДокументаДляСЗВСТАЖ(МассивСсылок)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
Запрос.Текст =
"ВЫБРАТЬ
| Увольнение.Ссылка КАК Ссылка,
| Увольнение.Номер КАК Номер,
| Увольнение.Дата КАК Дата,
| Увольнение.Организация КАК Организация,
| Увольнение.ПериодРегистрации КАК ОтчетныйПериод,
| Увольнение.Руководитель КАК Руководитель,
| Увольнение.ДолжностьРуководителя КАК ДолжностьРуководителя,
| Увольнение.Ответственный КАК Ответственный,
| Увольнение.ПериодРегистрации КАК ОкончаниеОтчетногоПериода
|ПОМЕСТИТЬ ВТДанныеДокументов
|ИЗ
| Документ.Увольнение КАК Увольнение
|ГДЕ
| Увольнение.Ссылка В(&МассивСсылок)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УвольнениеСписком.Ссылка,
| УвольнениеСписком.Номер,
| УвольнениеСписком.Дата,
| УвольнениеСписком.Организация,
| УвольнениеСписком.ПериодРегистрации,
| УвольнениеСписком.Руководитель,
| УвольнениеСписком.ДолжностьРуководителя,
| УвольнениеСписком.Ответственный,
| УвольнениеСписком.ПериодРегистрации
|ИЗ
| Документ.УвольнениеСписком КАК УвольнениеСписком
|ГДЕ
| УвольнениеСписком.Ссылка В(&МассивСсылок)
|
|СГРУППИРОВАТЬ ПО
| УвольнениеСписком.Ссылка,
| УвольнениеСписком.Номер,
| УвольнениеСписком.Дата,
| УвольнениеСписком.Организация,
| УвольнениеСписком.ПериодРегистрации,
| УвольнениеСписком.Руководитель,
| УвольнениеСписком.ДолжностьРуководителя,
| УвольнениеСписком.Ответственный,
| УвольнениеСписком.ПериодРегистрации
|;
|
|
|ВЫБРАТЬ
| ДанныеДокументов.Организация КАК Организация,
| ДанныеДокументов.ОтчетныйПериод КАК Период
|ПОМЕСТИТЬ ВТОрганизации
|ИЗ
| ВТДанныеДокументов КАК ДанныеДокументов";
Запрос.Выполнить();
ЗарплатаКадры.СоздатьВТФИООтветственныхЛиц(Запрос.МенеджерВременныхТаблиц, Истина, "Руководитель", "ВТДанныеДокументов");
ПерсонифицированныйУчет.СоздатьВТСведенияОбОрганизацияхПоВременнойТаблице(Запрос.МенеджерВременныхТаблиц);
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокументов.Ссылка КАК Ссылка,
| ДанныеДокументов.Дата КАК Дата,
| ДанныеДокументов.Номер КАК Номер,
| ДанныеДокументов.Организация КАК Организация,
| СведенияОбОрганизациях.ЮридическоеФизическоеЛицо КАК ЮридическоеФизическоеЛицо,
| СведенияОбОрганизациях.КодПоОКПО КАК КодПоОКПО,
| СведенияОбОрганизациях.НаименованиеОКОПФ КАК НаименованиеОКОПФ,
| СведенияОбОрганизациях.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
| СведенияОбОрганизациях.Наименование КАК Наименование,
| СведенияОбОрганизациях.НаименованиеПолное КАК НаименованиеПолное,
| СведенияОбОрганизациях.НаименованиеСокращенное КАК НаименованиеСокращенное,
| СведенияОбОрганизациях.НаименованиеСокращенное КАК НаименованиеОрганизации,
| СведенияОбОрганизациях.ИНН КАК ИНН,
| СведенияОбОрганизациях.КПП КАК КПП,
| СведенияОбОрганизациях.ОГРН КАК ОГРН,
| СведенияОбОрганизациях.РегистрационныйНомерПФР КАК РегистрационныйНомерПФР,
| ГОД(ДанныеДокументов.ОкончаниеОтчетногоПериода) КАК Год,
| ЗНАЧЕНИЕ(Перечисление.ТипыСведенийСЗВ_СТАЖ.Исходная) КАК ТипСведений,
| ДанныеДокументов.ОтчетныйПериод КАК ОтчетныйПериод,
| ДанныеДокументов.Ответственный КАК Ответственный,
| ЕСТЬNULL(ДанныеДокументов.ДолжностьРуководителя.Наименование, """") КАК ДолжностьРуководителя,
| ЕСТЬNULL(ФИООтветственныхЛиц.ФИОПолные, """") КАК Руководитель
|ИЗ
| ВТДанныеДокументов КАК ДанныеДокументов
| ЛЕВОЕ СОЕДИНЕНИЕ ВТСведенияОбОрганизациях КАК СведенияОбОрганизациях
| ПО ДанныеДокументов.Организация = СведенияОбОрганизациях.Организация
| И ДанныеДокументов.ОкончаниеОтчетногоПериода = СведенияОбОрганизациях.Период
| ЛЕВОЕ СОЕДИНЕНИЕ ВТФИООтветственныхЛиц КАК ФИООтветственныхЛиц
| ПО ДанныеДокументов.Ссылка = ФИООтветственныхЛиц.Ссылка
| И ДанныеДокументов.Руководитель = ФИООтветственныхЛиц.ФизическоеЛицо
|ГДЕ
| ДанныеДокументов.Ссылка В(&МассивСсылок)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка";
Возврат Запрос.Выполнить().Выбрать();
КонецФункции
Функция РезультатЗапросаПоСотрудникамДляПечатиСЗВСТАЖ(МассивСсылок)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
Запрос.Текст =
"ВЫБРАТЬ
| Увольнение.Ссылка КАК Ссылка,
| 1 КАК НомерСтроки,
| Увольнение.ФизическоеЛицо КАК Сотрудник,
| Увольнение.ДатаУвольнения КАК Период,
| Увольнение.Организация КАК Организация
|ПОМЕСТИТЬ ВТСотрудникиПериоды
|ИЗ
| Документ.Увольнение КАК Увольнение
|ГДЕ
| Увольнение.Ссылка В(&МассивСсылок)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УвольнениеСпискомСотрудники.Ссылка,
| УвольнениеСпискомСотрудники.НомерСтроки,
| УвольнениеСпискомСотрудники.ФизическоеЛицо,
| УвольнениеСпискомСотрудники.ДатаУвольнения,
| УвольнениеСпискомСотрудники.Ссылка.Организация
|ИЗ
| Документ.УвольнениеСписком.Сотрудники КАК УвольнениеСпискомСотрудники
|ГДЕ
| УвольнениеСпискомСотрудники.Ссылка В(&МассивСсылок)";
Запрос.Выполнить();
СоздатьВТЗаписиОСтаже(Запрос.МенеджерВременныхТаблиц);
Описатель = КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеФизическихЛиц(
Запрос.МенеджерВременныхТаблиц,
"ВТСотрудникиПериоды", "Сотрудник,Период");
КадровыйУчет.СоздатьВТКадровыеДанныеФизическихЛиц(Описатель, Истина, "Фамилия,Имя,Отчество,СтраховойНомерПФР");
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ГОД(СотрудникиПериоды.Период) КАК Год,
| ЗНАЧЕНИЕ(Перечисление.ТипыСведенийСЗВ_СТАЖ.Исходная) КАК ТипСведений,
| СотрудникиПериоды.Ссылка КАК Ссылка,
| СотрудникиПериоды.НомерСтроки КАК НомерСтроки,
| СотрудникиПериоды.Сотрудник КАК Сотрудник,
| КадровыеДанные.Фамилия КАК Фамилия,
| КадровыеДанные.Имя КАК Имя,
| КадровыеДанные.Отчество КАК Отчество,
| КадровыеДанные.СтраховойНомерПФР КАК СтраховойНомерПФР,
| ВЫБОР
| КОГДА КОНЕЦПЕРИОДА(СотрудникиПериоды.Период, ДЕНЬ) = КОНЕЦПЕРИОДА(СотрудникиПериоды.Период, ГОД)
| ТОГДА ""Х""
| ИНАЧЕ """"
| КОНЕЦ КАК СотрудникУволен
|ПОМЕСТИТЬ ВТСотрудникиДокумента
|ИЗ
| ВТСотрудникиПериоды КАК СотрудникиПериоды
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеФизическихЛиц КАК КадровыеДанные
| ПО СотрудникиПериоды.Период = КадровыеДанные.Период
| И СотрудникиПериоды.СОтрудник = КадровыеДанные.ФизическоеЛицо";
Запрос.Выполнить();
Возврат ПерсонифицированныйУчет.РезультатЗапросаПоСотрудникам(Запрос.МенеджерВременныхТаблиц, "ВТЗаписиОСтаже");
КонецФункции
Процедура ПечатьПодраздела_1_2_ФормыЕФС_1(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода)
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, ПерсонифицированныйУчет.ИдентификаторПечатнойФормы_ФормаЕФС_1())
Или УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, ПерсонифицированныйУчет.ИдентификаторПечатнойФормыПодраздела_1_2_ФормыЕФС_1()) Тогда
ПечатныеФормы = Новый ТабличныйДокумент;
ОбъектыПоТипам = ОбщегоНазначенияБЗК.ОбъектыПоТипам(МассивОбъектов);
Для Каждого ОбъектыТипа Из ОбъектыПоТипам Цикл
МассивОбъектовТипа = ОбъектыТипа.Значение;
Если ЗначениеЗаполнено(МассивОбъектовТипа) Тогда
ИмяДокумента = МассивОбъектовТипа[0].Метаданные().Имя;
Иначе
ИмяДокумента = "СведенияОСтраховомСтажеЗастрахованныхЛицСЗВ_СТАЖ";
КонецЕсли;
ВыборкаПоШапкеДокумента = ПерсонифицированныйУчет.ЗапросПоШапкеДляПечатиОДВ_1(МассивОбъектовТипа, ИмяДокумента).Выбрать();
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектовТипа);
Запрос.Текст =
"ВЫБРАТЬ
| Увольнение.Ссылка КАК Ссылка,
| 1 КАК НомерСтроки,
| Увольнение.ДатаУвольнения КАК Период,
| Увольнение.ФизическоеЛицо КАК Сотрудник,
| Увольнение.Сотрудник КАК СсылкаНаСотрудника,
| ЗНАЧЕНИЕ(Перечисление.ТипыСведенийСЗВ_СТАЖ.Исходная) КАК ТипСведений,
| Увольнение.ПериодРегистрации КАК ПериодРегистрации,
| ГОД(Увольнение.ПериодРегистрации) КАК Год,
| Увольнение.Организация КАК Организация
|ПОМЕСТИТЬ ВТСотрудникиПериоды
|ИЗ
| Документ.Увольнение КАК Увольнение
|ГДЕ
| Увольнение.Ссылка В(&МассивОбъектов)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УвольнениеСпискомСотрудники.Ссылка,
| УвольнениеСпискомСотрудники.НомерСтроки,
| УвольнениеСпискомСотрудники.ДатаУвольнения,
| УвольнениеСпискомСотрудники.ФизическоеЛицо,
| УвольнениеСпискомСотрудники.Сотрудник,
| ЗНАЧЕНИЕ(Перечисление.ТипыСведенийСЗВ_СТАЖ.Исходная),
| УвольнениеСпискомСотрудники.Ссылка.ПериодРегистрации,
| ГОД(УвольнениеСпискомСотрудники.Ссылка.ПериодРегистрации),
| УвольнениеСпискомСотрудники.Ссылка.Организация
|ИЗ
| Документ.УвольнениеСписком.Сотрудники КАК УвольнениеСпискомСотрудники
|ГДЕ
| УвольнениеСпискомСотрудники.Ссылка В(&МассивОбъектов)";
Запрос.Выполнить();
ОписательВТ = КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеФизическихЛиц(
Запрос.МенеджерВременныхТаблиц, "ВТСотрудникиПериоды", "Сотрудник,Период");
ОписательВТ.ИмяВТКадровыеДанныеФизическихЛиц = "ВТКадровыеДанныеУвольненийДляЕФС1";
КадровыеДанные = "Фамилия,Имя,Отчество,СтраховойНомерПФР,ДатаРождения,ИНН,Страна,ВидЗастрахованногоЛица";
КадровыйУчет.СоздатьВТКадровыеДанныеФизическихЛиц(ОписательВТ, Истина, КадровыеДанные);
КодПЖИГ = ПерсонифицированныйУчет.ВидыЗастрахованныхЛицПЖИГ();
КодВЖИГ = ПерсонифицированныйУчет.ВидыЗастрахованныхЛицВЖИГ();
КодВПИГ = ПерсонифицированныйУчет.ВидыЗастрахованныхЛицВПИГ();
КодВКС = ПерсонифицированныйУчет.ВидыЗастрахованныхЛицВКС();
Запрос.УстановитьПараметр("КодПЖИГ", КодПЖИГ);
Запрос.УстановитьПараметр("КодВЖИГ", КодВЖИГ);
Запрос.УстановитьПараметр("КодВПИГ", КодВПИГ);
Запрос.УстановитьПараметр("КодВКС", КодВКС);
Запрос.Текст =
"ВЫБРАТЬ
| СотрудникиПериоды.Ссылка КАК Ссылка,
| СотрудникиПериоды.НомерСтроки КАК НомерСтроки,
| СотрудникиПериоды.Сотрудник КАК Сотрудник,
| СотрудникиПериоды.ТипСведений КАК ТипСведений,
| СотрудникиПериоды.Год КАК Год,
| КадровыеДанные.СтраховойНомерПФР КАК СтраховойНомерПФР,
| КадровыеДанные.Фамилия КАК Фамилия,
| КадровыеДанные.Имя КАК Имя,
| КадровыеДанные.Отчество КАК Отчество,
| КадровыеДанные.ДатаРождения КАК ДатаРождения,
| КадровыеДанные.ИНН КАК ИНН,
| ВЫБОР
| КОГДА КадровыеДанные.ВидЗастрахованногоЛица В (&КодПЖИГ)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.КодКатегорииЗарегистрированногоЛицаЕФС1.ПЖИГ)
| КОГДА КадровыеДанные.ВидЗастрахованногоЛица В (&КодВЖИГ)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.КодКатегорииЗарегистрированногоЛицаЕФС1.ВЖИГ)
| КОГДА КадровыеДанные.ВидЗастрахованногоЛица В (&КодВПИГ)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.КодКатегорииЗарегистрированногоЛицаЕФС1.ВПИГ)
| КОГДА КадровыеДанные.ВидЗастрахованногоЛица В (&КодВКС)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.КодКатегорииЗарегистрированногоЛицаЕФС1.ВКС)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.КодКатегорииЗарегистрированногоЛицаЕФС1.ГРФ)
| КОНЕЦ КАК КодКатегории,
| ВЫБОР
| КОГДА КадровыеДанные.Страна = ЗНАЧЕНИЕ(Справочник.СтраныМира.ПустаяСсылка)
| ТОГДА ""000""
| ИНАЧЕ КадровыеДанные.Страна.Код
| КОНЕЦ КАК Гражданство,
| ""Х"" КАК СотрудникУволен
|ПОМЕСТИТЬ ВТСотрудникиДокумента
|ИЗ
| ВТСотрудникиПериоды КАК СотрудникиПериоды
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеУвольненийДляЕФС1 КАК КадровыеДанные
| ПО СотрудникиПериоды.Период = КадровыеДанные.Период
| И СотрудникиПериоды.Сотрудник = КадровыеДанные.ФизическоеЛицо";
Запрос.Выполнить();
СоздатьВТЗаписиОСтаже(Запрос.МенеджерВременныхТаблиц);
ВыборкаСТАЖ = Документы.СведенияОСтраховомСтажеЗастрахованныхЛицСЗВ_СТАЖ.ЗапросПоСотрудникамДляПечати(
МассивОбъектовТипа, , Запрос.МенеджерВременныхТаблиц).Выбрать();
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, ПерсонифицированныйУчет.ИдентификаторПечатнойФормы_ФормаЕФС_1()) Тогда
Запрос.Текст =
"ВЫБРАТЬ
| Удержания.Ссылка КАК Ссылка
|ИЗ
| ПланВидовРасчета.Удержания КАК Удержания
|ГДЕ
| Удержания.КатегорияУдержания = ЗНАЧЕНИЕ(Перечисление.КатегорииУдержаний.ДСВ)";
НачисленияУдержанияДСВ = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
НачисленияУдержанияДСВ.Добавить(Перечисления.ВидыОсобыхНачисленийИУдержаний.ДСВРаботодателя);
Запрос.УстановитьПараметр("НачисленияУдержанияДСВ", НачисленияУдержанияДСВ);
Запрос.Текст =
"ВЫБРАТЬ
| СотрудникиПериоды.Ссылка КАК Ссылка,
| СотрудникиПериоды.Организация КАК Организация,
| СотрудникиПериоды.НомерСтроки КАК НомерСтроки,
| СотрудникиПериоды.Сотрудник КАК Сотрудник,
| СотрудникиПериоды.СсылкаНаСотрудника КАК СсылкаНаСотрудника,
| МАКСИМУМ(ВЫБОР
| КОГДА НачисленияУдержанияПоСотрудникам.НачислениеУдержание = ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ДСВРаботодателя)
| ТОГДА ВЫРАЗИТЬ(НачисленияУдержанияПоСотрудникам.Регистратор КАК Документ.РеестрДСВ_3)
| ИНАЧЕ NULL
| КОНЕЦ) КАК РегистраторДСВРаботодателя,
| СУММА(ВЫБОР
| КОГДА НачисленияУдержанияПоСотрудникам.НачислениеУдержание <> ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ДСВРаботодателя)
| ТОГДА НачисленияУдержанияПоСотрудникам.Сумма
| ИНАЧЕ 0
| КОНЕЦ) КАК ВзносыРаботника,
| СУММА(ВЫБОР
| КОГДА НачисленияУдержанияПоСотрудникам.НачислениеУдержание = ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ДСВРаботодателя)
| ТОГДА НачисленияУдержанияПоСотрудникам.Сумма
| ИНАЧЕ 0
| КОНЕЦ) КАК ВзносыРаботодателя,
| НАЧАЛОПЕРИОДА(НачисленияУдержанияПоСотрудникам.Период, МЕСЯЦ) КАК ОтчетныйПериод
|ПОМЕСТИТЬ ВТДанныеДСВ
|ИЗ
| ВТСотрудникиПериоды КАК СотрудникиПериоды
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.НачисленияУдержанияПоСотрудникам КАК НачисленияУдержанияПоСотрудникам
| ПО СотрудникиПериоды.Сотрудник = НачисленияУдержанияПоСотрудникам.ФизическоеЛицо
| И СотрудникиПериоды.СсылкаНаСотрудника = НачисленияУдержанияПоСотрудникам.Сотрудник
| И СотрудникиПериоды.Организация = НачисленияУдержанияПоСотрудникам.Организация
| И (НачисленияУдержанияПоСотрудникам.НачислениеУдержание В (&НачисленияУдержанияДСВ))
| И (НачисленияУдержанияПоСотрудникам.Период МЕЖДУ НАЧАЛОПЕРИОДА(СотрудникиПериоды.ПериодРегистрации, ГОД) И КОНЕЦПЕРИОДА(СотрудникиПериоды.ПериодРегистрации, МЕСЯЦ))
|
|СГРУППИРОВАТЬ ПО
| СотрудникиПериоды.Ссылка,
| СотрудникиПериоды.Организация,
| СотрудникиПериоды.НомерСтроки,
| СотрудникиПериоды.Сотрудник,
| СотрудникиПериоды.СсылкаНаСотрудника,
| НАЧАЛОПЕРИОДА(НачисленияУдержанияПоСотрудникам.Период, МЕСЯЦ)";
Запрос.Выполнить();
Запрос.Текст =
"ВЫБРАТЬ
| СотрудникиПериоды.Ссылка КАК Ссылка,
| СотрудникиПериоды.НомерСтроки КАК НомерСтроки,
| СотрудникиПериоды.Сотрудник КАК Сотрудник,
| СотрудникиПериоды.Год КАК Год,
| КадровыеДанные.СтраховойНомерПФР КАК СтраховойНомерПФР,
| КадровыеДанные.Фамилия КАК Фамилия,
| КадровыеДанные.Имя КАК Имя,
| КадровыеДанные.Отчество КАК Отчество,
| ДанныеДСВ.РегистраторДСВРаботодателя КАК РегистраторДСВ,
| ДанныеДСВ.РегистраторДСВРаботодателя.НомерПлатежногоПоручения КАК НомерПоручения,
| ДанныеДСВ.РегистраторДСВРаботодателя.ДатаПлатежногоПоручения КАК ДатаПоручения,
| ДанныеДСВ.РегистраторДСВРаботодателя.ДатаИсполненияПлатежногоПоручения КАК ДатаИсполненияПоручения,
| ДанныеДСВ.ВзносыРаботника КАК ВзносыРаботника,
| ДанныеДСВ.ВзносыРаботодателя КАК ВзносыРаботодателя
|ИЗ
| ВТСотрудникиПериоды КАК СотрудникиПериоды
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеУвольненийДляЕФС1 КАК КадровыеДанные
| ПО СотрудникиПериоды.Период = КадровыеДанные.Период
| И СотрудникиПериоды.Сотрудник = КадровыеДанные.ФизическоеЛицо
| ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеДСВ КАК ДанныеДСВ
| ПО СотрудникиПериоды.Сотрудник = ДанныеДСВ.Сотрудник
| И СотрудникиПериоды.СсылкаНаСотрудника = ДанныеДСВ.СсылкаНаСотрудника
| И СотрудникиПериоды.Организация = ДанныеДСВ.Организация
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки,
| РегистраторДСВ";
ВыборкаДСВ = Запрос.Выполнить().Выбрать();
Иначе
ВыборкаДСВ = Неопределено;
КонецЕсли;
ПечатнаяФорма = ПерсонифицированныйУчет.ПечатьПодраздела_1_2_ФормыЕФС_1(
ОбъектыПечати, ВыборкаПоШапкеДокумента, ВыборкаСТАЖ, , ВыборкаДСВ, Истина, ПараметрыПечати);
Если ПечатныеФормы.ВысотаТаблицы > 0 Тогда
ПечатныеФормы.ВывестиГоризонтальныйРазделительСтраниц();
Иначе
ЗарплатаКадрыОтчеты.УстановитьПоОбразцуПараметрыСтраницы(ПечатныеФормы, ПечатнаяФорма);
КонецЕсли;
ПечатныеФормы.Вывести(ПечатнаяФорма);
КонецЦикла;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, ПерсонифицированныйУчет.ИдентификаторПечатнойФормы_ФормаЕФС_1()) Тогда
ИмяМакета = ПерсонифицированныйУчет.ИдентификаторПечатнойФормы_ФормаЕФС_1();
СинонимПечатнойФормы = НСтр("ru = 'Подразделы 1.2 и 3 формы ЕФС-1'");
Иначе
ИмяМакета = ПерсонифицированныйУчет.ИдентификаторПечатнойФормыПодраздела_1_2_ФормыЕФС_1();
СинонимПечатнойФормы = НСтр("ru = 'Подраздел 1.2 формы ЕФС-1'");
КонецЕсли;
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
ИмяМакета,
СинонимПечатнойФормы,
ПечатныеФормы);
КонецЕсли;
КонецПроцедуры
Процедура СоздатьВТЗаписиОСтаже(МенеджерВременныхТаблиц)
ЗаписиОСтаже = ОбщегоНазначенияБЗК.ТаблицаЗначенийПоИмениРегистраСведений("ЗаписиОСтажеСведенияОСтраховомСтажеЗастрахованныхЛицСЗВ_СТАЖ");
ЗаписиОСтаже.Колонки.Добавить("ТерриториальныеУсловияДополнительные", Новый ОписаниеТипов("СправочникСсылка.ТерриториальныеУсловияПФР"));
ЗаписиОСтаже.Колонки.Удалить("ДокументОснование");
ЗаписиОСтаже.Колонки.Добавить("ДокументОснование", Новый ОписаниеТипов("ДокументСсылка.Увольнение, ДокументСсылка.УвольнениеСписком"));
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ГОД(СотрудникиПериоды.Период) КАК Год,
| СотрудникиПериоды.Ссылка КАК Ссылка,
| СотрудникиПериоды.Сотрудник КАК ФизическоеЛицо,
| СотрудникиПериоды.Организация КАК Организация
|ИЗ
| ВТСотрудникиПериоды КАК СотрудникиПериоды
|
|УПОРЯДОЧИТЬ ПО
| Ссылка";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.СледующийПоЗначениюПоля("Ссылка") Цикл
СписокСотрудников = Новый Массив;
Пока Выборка.Следующий() Цикл
СписокСотрудников.Добавить(Выборка.ФизическоеЛицо);
КонецЦикла;
ЗаписиОСтажеСсылки = ЗаписиОСтаже.СкопироватьКолонки();
ПерсонифицированныйУчет.ЗаполнитьДанныеОСтажеСотрудников(
ЗаписиОСтажеСсылки, Выборка.Организация, СписокСотрудников, Выборка.Год, Выборка.Ссылка);
ЗаписиОСтажеСсылки.ЗаполнитьЗначения(Выборка.Ссылка, "ДокументОснование");
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ЗаписиОСтажеСсылки, ЗаписиОСтаже);
КонецЦикла;
Запрос.УстановитьПараметр("ЗаписиОСтаже", ЗаписиОСтаже);
Запрос.Текст =
"ВЫБРАТЬ
| ЗаписиОСтаже.ДокументОснование КАК ДокументОснование,
| ЗаписиОСтаже.Сотрудник КАК Сотрудник,
| ЗаписиОСтаже.НомерОсновнойЗаписи КАК НомерОсновнойЗаписи,
| ЗаписиОСтаже.НомерДополнительнойЗаписи КАК НомерДополнительнойЗаписи,
| ЗаписиОСтаже.ДатаНачалаПериода КАК ДатаНачалаПериода,
| ЗаписиОСтаже.ДатаОкончанияПериода КАК ДатаОкончанияПериода,
| ЗаписиОСтаже.ОсобыеУсловияТруда КАК ОсобыеУсловияТруда,
| ЗаписиОСтаже.КодПозицииСписка КАК КодПозицииСписка,
| ЗаписиОСтаже.ОснованиеИсчисляемогоСтажа КАК ОснованиеИсчисляемогоСтажа,
| ЗаписиОСтаже.ПервыйПараметрИсчисляемогоСтажа КАК ПервыйПараметрИсчисляемогоСтажа,
| ЗаписиОСтаже.ВторойПараметрИсчисляемогоСтажа КАК ВторойПараметрИсчисляемогоСтажа,
| ЗаписиОСтаже.ТретийПараметрИсчисляемогоСтажа КАК ТретийПараметрИсчисляемогоСтажа,
| ЗаписиОСтаже.ОснованиеВыслугиЛет КАК ОснованиеВыслугиЛет,
| ЗаписиОСтаже.ПервыйПараметрВыслугиЛет КАК ПервыйПараметрВыслугиЛет,
| ЗаписиОСтаже.ВторойПараметрВыслугиЛет КАК ВторойПараметрВыслугиЛет,
| ЗаписиОСтаже.ТретийПараметрВыслугиЛет КАК ТретийПараметрВыслугиЛет,
| ЗаписиОСтаже.ТерриториальныеУсловия КАК ТерриториальныеУсловия,
| ЗаписиОСтаже.ПараметрТерриториальныхУсловий КАК ПараметрТерриториальныхУсловий,
| ЗаписиОСтаже.ЗамещениеГосударственныхМуниципальныхДолжностей КАК ЗамещениеГосударственныхМуниципальныхДолжностей,
| ЗаписиОСтаже.НомерРабочегоМеста КАК НомерРабочегоМеста,
| ЗаписиОСтаже.КлассПодклассУсловийТруда КАК КлассПодклассУсловийТруда,
| ЗаписиОСтаже.РайонныйКоэффициент КАК РайонныйКоэффициент
|ПОМЕСТИТЬ ВТЗаписиОСтаже
|ИЗ
| &ЗаписиОСтаже КАК ЗаписиОСтаже";
Запрос.Выполнить();
КонецПроцедуры
#КонецОбласти
#Область ПечатьРасчетаСреднегоЗаработка
Функция ДанныеДокументовДляПечатиРасчетаСреднегоЗаработка(МассивСсылок, ПоСтатьямФинансирования = Ложь, ИмяМакета = "") Экспорт
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
СоздатьВТКадровыеДанныеСотрудниковДокумента(Запрос);
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаДокумента.Сотрудник КАК Сотрудник,
| ТаблицаДокумента.ДатаУвольнения КАК ДатаНачалаСобытия,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| ТаблицаДокумента.Организация КАК Организация,
| ВЫБОР
| КОГДА ТаблицаДокумента.ДатаПервичногоДокумента <> ДАТАВРЕМЯ(1,1,1)
| ТОГДА ТаблицаДокумента.ДатаПервичногоДокумента
| ИНАЧЕ ТаблицаДокумента.Дата
| КОНЕЦ КАК ДатаДокумента,
| ТаблицаДокумента.Номер КАК НомерДокумента,
| ТаблицаДокумента.НомерПриказа КАК НомерПриказа,
| ТаблицаДокумента.НаименованиеПервичногоДокумента КАК НаименованиеПервичногоДокумента,
| ТаблицаДокумента.ДатаУвольнения КАК ДатаНачалаОтсутствия,
| ТаблицаДокумента.ДатаУвольнения КАК ДатаОкончания,
| ТаблицаДокумента.ПериодРасчетаСреднегоЗаработкаНачало КАК НачалоРасчетногоПериода,
| ТаблицаДокумента.ПериодРасчетаСреднегоЗаработкаОкончание КАК ОкончаниеРасчетногоПериода,
| ТаблицаДокумента.ВидРасчетаКомпенсацииУдержанияОтпуска КАК Начисление,
| ТаблицаДокумента.СуммированныйУчет КАК СуммированныйУчет,
| ""Увольнение"" КАК НаименованиеСобытия,
| КадровыеДанныеСотрудников.ФизическоеЛицо КАК ФизическоеЛицо,
| КадровыеДанныеСотрудников.ФИОПолные КАК ФИОПолные,
| КадровыеДанныеСотрудников.ТабельныйНомер КАК ТабельныйНомер,
| КадровыеДанныеСотрудников.Подразделение КАК Подразделение,
| КадровыеДанныеСотрудников.Должность КАК Должность,
| КадровыеДанныеСотрудников.ВидЗанятости КАК ВидЗанятости,
| Организации.НаименованиеСокращенное КАК ОрганизацияНаименованиеСокращенное,
| Организации.КодПоОКПО КАК КодПоОКПО,
| Организации.НаименованиеПолное КАК ОрганизацияНаименованиеПолное,
| ТаблицаДокумента.ПериодРегистрации КАК НачалоПериодаРасчетаЗарплаты,
| ИСТИНА КАК РассчитатьЗарплату,
| ИСТИНА КАК УчитыватьДвиженияДругихРегистраторов
|ИЗ
| Документ.Увольнение КАК ТаблицаДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудников КАК КадровыеДанныеСотрудников
| ПО ТаблицаДокумента.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
| И ТаблицаДокумента.ДатаУвольнения = КадровыеДанныеСотрудников.Период
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
| ПО ТаблицаДокумента.Организация = Организации.Ссылка
|ГДЕ
| ТаблицаДокумента.Ссылка В(&МассивСсылок)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| Сотрудник";
Результат = Запрос.Выполнить();
ДанныеДокументов = Новый Массив;
Если Результат.Пустой() Тогда
Возврат ДанныеДокументов;
КонецЕсли;
ТаблицыДанныхОСреднем = УчетСреднегоЗаработка.ТаблицыДанныхОСреднемЗаработке("Увольнение", МассивСсылок);
Выборка = Результат.Выбрать();
Пока Выборка.СледующийПоЗначениюПоля("Ссылка") Цикл
Если ИмяМакета = "РасчетСреднегоЗаработкаВыходногоПособия" Тогда
СпособРасчета = Неопределено;
ИспользоватьСреднеЧасовойЗаработок = Выборка.СуммированныйУчет;
Иначе
ИспользоватьСреднеЧасовойЗаработок = Ложь;
МассивОтпусков = ВидыОтпусковОбъекта(Выборка.Ссылка.ПолучитьОбъект());
Если ОстаткиОтпусков.СодержатсяТолькоОтпускаПоРабочимДням(МассивОтпусков, Выборка.Сотрудник, Выборка.ДатаНачалаСобытия) Тогда
СпособРасчета = Перечисления.СпособыРасчетаНачислений.ОплатаОтпускаПоШестидневке;
Иначе
СпособРасчета = Перечисления.СпособыРасчетаНачислений.ОплатаОтпускаПоКалендарнымДням;
КонецЕсли;
КонецЕсли;
ДанныеДокумента = Обработки.ПечатьРасчетаСреднегоЗаработка.ПустаяСтруктураДанныхДляПечатиСреднегоЗаработка0504425();
ЗаполнитьЗначенияСвойств(ДанныеДокумента.РеквизитыДокумента, Выборка);
ЗаполнитьЗначенияСвойств(ДанныеДокумента.КадровыеДанныеСотрудника, Выборка);
ДанныеОНачислениях = УчетСреднегоЗаработка.ТаблицаОтобраннаяПоПолю(ТаблицыДанныхОСреднем["ДанныеОНачислениях"], "Ссылка", Выборка.Ссылка);
ДанныеОВремени = УчетСреднегоЗаработка.ТаблицаОтобраннаяПоПолю(ТаблицыДанныхОСреднем["ДанныеОВремени"], "Ссылка", Выборка.Ссылка);
ДанныеОбИндексации = УчетСреднегоЗаработка.ТаблицаОтобраннаяПоПолю(ТаблицыДанныхОСреднем["ДанныеОбИндексации"], "Ссылка", Выборка.Ссылка);
ДополнительныеПараметры = УчетСреднегоЗаработкаКлиентСервер.ДополнительныеПараметрыРасчетаСреднегоЗаработка();
ДополнительныеПараметры.Индексации = ДанныеОбИндексации;
ДополнительныеПараметры.ДатаНачалаСобытия = Выборка.ДатаНачалаСобытия;
ДополнительныеПараметры.НачалоПериода = Выборка.НачалоРасчетногоПериода;
ДополнительныеПараметры.ОкончаниеПериода = Выборка.ОкончаниеРасчетногоПериода;
ДополнительныеПараметры.ПоЧасам = ИспользоватьСреднеЧасовойЗаработок;
ДополнительныеПараметры.СпособРасчетаОтпуска = СпособРасчета;
ДополнительныеПараметры.ПоСтатьямФинансирования = ПоСтатьямФинансирования;
Если КонецДня(Выборка.ДатаНачалаСобытия) = КонецМесяца(Выборка.ДатаНачалаСобытия) Тогда
ДополнительныеПараметры.ДатаНачалаСобытия = НачалоМесяца(ДобавитьМесяц(Выборка.ДатаНачалаСобытия, 1));
КонецЕсли;
ДанныеДокумента.ДанныеРасчетаСреднего = УчетСреднегоЗаработкаКлиентСервер.ДанныеДляРасчетаСреднегоЗаработка(ДанныеОНачислениях, ДанныеОВремени, ДополнительныеПараметры);
ДанныеДокумента.ПараметрыРасчета.СпособРасчета = СпособРасчета;
ДанныеДокумента.ПараметрыРасчета.ИспользоватьСреднеЧасовойЗаработок = ИспользоватьСреднеЧасовойЗаработок;
ДанныеДокумента.ПараметрыРасчета.НачалоРасчетногоПериода = Выборка.НачалоРасчетногоПериода;
ДанныеДокумента.ПараметрыРасчета.ОкончаниеРасчетногоПериода = Выборка.ОкончаниеРасчетногоПериода;
ДанныеДокументов.Добавить(ДанныеДокумента);
КонецЦикла;
Возврат ДанныеДокументов;
КонецФункции
Процедура СоздатьВТКадровыеДанныеСотрудниковДокумента(Запрос)
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаДокумента.Сотрудник КАК Сотрудник,
| ТаблицаДокумента.ДатаУвольнения КАК Период
|ПОМЕСТИТЬ ВТСотрудники
|ИЗ
| Документ.Увольнение КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.Ссылка В(&МассивСсылок)";
Запрос.Выполнить();
Описатель = КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеСотрудников(Запрос.МенеджерВременныхТаблиц, "ВТСотрудники");
КадровыйУчет.СоздатьВТКадровыеДанныеСотрудников(Описатель, Истина, "ФизическоеЛицо,ФИОПолные,ТабельныйНомер,Подразделение,Должность,ВидЗанятости,ДатаПриема,ПриказОПриемеДатаЗавершенияТрудовогоДоговора");
Запрос.Текст = "УНИЧТОЖИТЬ ВТСотрудники";
Запрос.Выполнить();
КонецПроцедуры
Функция ДанныеДокументовДляПечатиРасчетаСреднегоЗаработка0504425(МассивСсылок) Экспорт
ЗапросПоОрганизациям = Новый Запрос;
ЗапросПоОрганизациям.УстановитьПараметр("МассивСсылок", МассивСсылок);
ЗапросПоОрганизациям.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаДокумента.Организация КАК Организация,
| ТаблицаДокумента.ДатаУвольнения КАК ДатаСобытия
|ИЗ
| Документ.Увольнение КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.Ссылка В(&МассивСсылок)";
ТаблицаРезультатовПоОрганизациям = ЗапросПоОрганизациям.Выполнить().Выгрузить();
ОрганизацииИСведенияОНих = ЗарплатаКадрыРасширенный.ПолучитьИННиКППОрганизаций(ТаблицаРезультатовПоОрганизациям);
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаДокумента.Ссылка КАК Ссылка,
| ТаблицаДокумента.ДатаУвольнения КАК Дата,
| ТаблицаДокумента.ГлавныйБухгалтер КАК ГлавныйБухгалтер,
| ТаблицаДокумента.Бухгалтер КАК Бухгалтер,
| ТаблицаДокумента.Исполнитель КАК Исполнитель,
| ТаблицаДокумента.ОтветственныйИсполнитель
|ПОМЕСТИТЬ ВТСотрудникиИПериод
|ИЗ
| Документ.Увольнение КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.Ссылка В(&МассивСсылок)";
Запрос.Выполнить();
ЗарплатаКадры.СоздатьВТФИООтветственныхЛиц(Запрос.МенеджерВременныхТаблиц, Истина, "ГлавныйБухгалтер,Бухгалтер,Исполнитель,ОтветственныйИсполнитель", "ВТСотрудникиИПериод");
Запрос.Текст =
"ВЫБРАТЬ
| СУММА(ВЫБОР
| КОГДА ДополнительныеОтпуска.ПризнакКомпенсацииУдержания = ЗНАЧЕНИЕ(Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.УдержатьЗаИспользованныеАвансом)
| ТОГДА -1
| ИНАЧЕ 1
| КОНЕЦ * ДополнительныеОтпуска.ДнейКомпенсацииУдержания) КАК КоличествоДней,
| ДополнительныеОтпуска.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ВТДополнительныеОтпуска
|ИЗ
| Документ.Увольнение.ДополнительныеОтпуска КАК ДополнительныеОтпуска
|ГДЕ
| ДополнительныеОтпуска.Ссылка В(&МассивСсылок)
|
|СГРУППИРОВАТЬ ПО
| ДополнительныеОтпуска.Ссылка
|;
|
|
|ВЫБРАТЬ
| ТаблицаДокумента.Ссылка КАК Ссылка,
| ТаблицаДокумента.ВидРасчетаКомпенсацииУдержанияОтпуска КАК Начисление,
| ТаблицаДокумента.ДатаУвольнения КАК ДатаНачалаОтсутствия,
| ВЫБОР
| КОГДА ТаблицаДокумента.ПризнакКомпенсацииУдержанияОтпуска = ЗНАЧЕНИЕ(Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.УдержатьЗаИспользованныеАвансом)
| ТОГДА -1
| ИНАЧЕ 1
| КОНЕЦ * ТаблицаДокумента.ДнейКомпенсацииУдержанияОтпуска КАК ДнейОсновногоОтпуска,
| ЕСТЬNULL(ВТДополнительныеОтпуска.КоличествоДней, 0) КАК ДнейДополнительногоОтпуска,
| ВЫБОР
| КОГДА ТаблицаДокумента.ПризнакКомпенсацииУдержанияОтпуска = ЗНАЧЕНИЕ(Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.УдержатьЗаИспользованныеАвансом)
| ТОГДА -1
| ИНАЧЕ 1
| КОНЕЦ * ТаблицаДокумента.ДнейКомпенсацииУдержанияОтпуска + ЕСТЬNULL(ВТДополнительныеОтпуска.КоличествоДней, 0) КАК ДнейОтпускаВсего,
| ТаблицаДокумента.РабочийГодС КАК НачалоПериодаЗаКоторыйПредоставляетсяОтпуск,
| ТаблицаДокумента.РабочийГодПо КАК КонецПериодаЗаКоторыйПредоставляетсяОтпуск,
| ФИОГлавногоБухгалтера.РасшифровкаПодписи КАК ГлавныйБухгалтерРасшифровкаПодписи,
| ФИОБухгалтера.РасшифровкаПодписи КАК БухгалтерРасшифровкаПодписи,
| ФИОИсполнителя.РасшифровкаПодписи КАК ИсполнительРасшифровкаПодписи,
| ФИООтветственногоИсполнителя.РасшифровкаПодписи КАК ОтветственныйИсполнительРасшифровкаПодписи,
| ТаблицаДокумента.ДолжностьИсполнителя КАК ДолжностьИсполнителя,
| ТаблицаДокумента.ДолжностьОтветственногоИсполнителя,
| ТаблицаДокумента.СтатьяТКРФ КАК СтатьяТКРФ,
| ТаблицаДокумента.ОснованиеУвольнения КАК ОснованиеУвольнения
|ИЗ
| Документ.Увольнение КАК ТаблицаДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ВТФИООтветственныхЛиц КАК ФИОГлавногоБухгалтера
| ПО ТаблицаДокумента.Ссылка = ФИОГлавногоБухгалтера.Ссылка
| И ТаблицаДокумента.ГлавныйБухгалтер = ФИОГлавногоБухгалтера.ФизическоеЛицо
| ЛЕВОЕ СОЕДИНЕНИЕ ВТФИООтветственныхЛиц КАК ФИОБухгалтера
| ПО ТаблицаДокумента.Ссылка = ФИОБухгалтера.Ссылка
| И ТаблицаДокумента.Бухгалтер = ФИОБухгалтера.ФизическоеЛицо
| ЛЕВОЕ СОЕДИНЕНИЕ ВТФИООтветственныхЛиц КАК ФИОИсполнителя
| ПО ТаблицаДокумента.Ссылка = ФИОИсполнителя.Ссылка
| И ТаблицаДокумента.Исполнитель = ФИОИсполнителя.ФизическоеЛицо
| ЛЕВОЕ СОЕДИНЕНИЕ ВТДополнительныеОтпуска КАК ВТДополнительныеОтпуска
| ПО ТаблицаДокумента.Ссылка = ВТДополнительныеОтпуска.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ ВТФИООтветственныхЛиц КАК ФИООтветственногоИсполнителя
| ПО ТаблицаДокумента.Ссылка = ФИОИсполнителя.Ссылка
| И ТаблицаДокумента.ОтветственныйИсполнитель = ФИООтветственногоИсполнителя.ФизическоеЛицо
|ГДЕ
| ТаблицаДокумента.Ссылка В(&МассивСсылок)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
ДанныеДокументов = Новый Массив;
БазовыеДанныеДокументов = ДанныеДокументовДляПечатиРасчетаСреднегоЗаработка(МассивСсылок, Истина);
Отбор = Новый Структура("Ссылка");
Для каждого БазовыеДанныеДокумента Из БазовыеДанныеДокументов Цикл
Выборка.Сбросить();
ДанныеДокумента = Обработки.ПечатьРасчетаСреднегоЗаработка.ПустаяСтруктураДанныхДляПечатиСреднегоЗаработка0504425();
ЗаполнитьЗначенияСвойств(ДанныеДокумента, БазовыеДанныеДокумента, , "РеквизитыДокумента");
ЗаполнитьЗначенияСвойств(ДанныеДокумента.РеквизитыДокумента, БазовыеДанныеДокумента.РеквизитыДокумента);
Отбор.Ссылка = БазовыеДанныеДокумента.РеквизитыДокумента.Ссылка;
ТекстыОснований = Новый Массив;
Если Выборка.НайтиСледующий(Отбор) Тогда
ЗаполнитьЗначенияСвойств(ДанныеДокумента.РеквизитыДокумента, Выборка);
Если ЗначениеЗаполнено(Выборка.ОснованиеУвольнения) Тогда
ТекстыОснований.Добавить(Выборка.ОснованиеУвольнения);
КонецЕсли;
Если ЗначениеЗаполнено(Выборка.СтатьяТКРФ) Тогда
ТекстыОснований.Добавить(Выборка.СтатьяТКРФ);
КонецЕсли;
КонецЕсли;
ЗаполнитьЗначенияСвойств(ДанныеДокумента.РеквизитыДокумента,
ОрганизацииИСведенияОНих.Получить(БазовыеДанныеДокумента.РеквизитыДокумента.Организация),
"ИНН, КПП");
Если ЗначениеЗаполнено(ТекстыОснований) Тогда
ДанныеДокумента.РеквизитыДокумента.Основание = СтрСоединить(ТекстыОснований, ", ");
КонецЕсли;
ДанныеДокументов.Добавить(ДанныеДокумента);
КонецЦикла;
Возврат ДанныеДокументов;
КонецФункции
#КонецОбласти
#Область ПечатьПодробногоРасчетаНачислений
Процедура ЗаполнитьОписаниеДокументаРасчетаНачислений(ОписаниеДокумента) Экспорт
КатегорииСпециализированногоНачисления = Новый Массив;
КатегорииСпециализированногоНачисления.Добавить(Перечисления.КатегорииНачисленийИНеоплаченногоВремени.КомпенсацияОтпуска);
КатегорииСпециализированногоНачисления.Добавить(Перечисления.КатегорииНачисленийИНеоплаченногоВремени.ВыходноеПособие);
КатегорииСпециализированногоНачисления.Добавить(Перечисления.КатегорииНачисленийИНеоплаченногоВремени.ОплатаДолиРайонногоКоэффициентаВСреднемЗаработке);
КатегорииСпециализированногоНачисления.Добавить(Перечисления.КатегорииНачисленийИНеоплаченногоВремени.ОплатаДолиСевернойНадбавкиВСреднемЗаработке);
КатегорииСпециализированногоНачисления.Добавить(Перечисления.КатегорииНачисленийИНеоплаченногоВремени.ОплатаДолиРайонногоКоэффициентаВСДС);
КатегорииСпециализированногоНачисления.Добавить(Перечисления.КатегорииНачисленийИНеоплаченногоВремени.ОплатаДолиСевернойНадбавкиВСДС);
МетаданныеДокумента = ПустаяСсылка().Метаданные();
ОписаниеДокумента.Вставить("ИмяДокумента", МетаданныеДокумента.Имя);
ОписаниеДокумента.Вставить("СинонимДокумента", МетаданныеДокумента.Синоним);
ОписаниеДокумента.Вставить("ЕстьРасчетСреднегоЗаработка", Истина);
ОписаниеДокумента.Вставить("ЕстьРасчетСпециализированныхНачислений", Истина);
ОписаниеДокумента.Вставить("ЕстьРасчетЗарплаты", Истина);
ОписаниеДокумента.Вставить("КатегорииСпециализированногоНачисления", КатегорииСпециализированногоНачисления);
ОписаниеДокумента.Вставить("НазваниеСпециализированногоНачисления", НСтр("ru='Расчет при увольнении'"));
КонецПроцедуры
Процедура ЗаполнитьДанныеДокументовДляПодробногоРасчетаНачислений(МассивСсылок, ДанныеДокументов) Экспорт
РасчетЗарплатыРасширенный.ЗаполнитьДанныеДокументовДляПодробногоРасчетаНачислений(МассивСсылок, ПустаяСсылка().Метаданные().Имя, ДанныеДокументов);
КонецПроцедуры
Функция НачисленияПоказателиДокументов(МассивСсылок) Экспорт
Возврат РасчетЗарплатыРасширенный.НачисленияПоказателиДокументов(МассивСсылок, ПустаяСсылка().Метаданные().Имя, , "Начисления,НачисленияПерерасчет");
КонецФункции
#КонецОбласти
#Область ПечатьФормаСЗВ_ДСО
Процедура ПечатьФормаСЗВ_ДСО(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода)
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, Документы.СведенияДляИсчисленияДоплатыКПенсииСЗВ_ДСО.ИдентификаторКомандыПечати_ФормаСЗВ_ДСО()) Тогда
ДокументРезультат = Новый ТабличныйДокумент;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.Текст =
"ВЫБРАТЬ
| Увольнение.Ссылка КАК Ссылка,
| Увольнение.Организация КАК Организация,
| НАЧАЛОПЕРИОДА(Увольнение.ДатаУвольнения, ГОД) КАК ОтчетныйПериод,
| КОНЕЦПЕРИОДА(Увольнение.ДатаУвольнения, ГОД) КАК ОкончаниеОтчетногоПериода,
| Увольнение.Дата КАК ДатаДокумента,
| Увольнение.Сотрудник КАК Сотрудник,
| Увольнение.ФизическоеЛицо КАК ФизическоеЛицо,
| 1 КАК НомерСтроки,
| Увольнение.ДатаУвольнения КАК Период,
| Увольнение.Руководитель КАК Руководитель,
| Увольнение.ДолжностьРуководителя КАК ДолжностьРуководителя
|ПОМЕСТИТЬ ВТДанныеДокументов
|ИЗ
| Документ.Увольнение КАК Увольнение
|ГДЕ
| Увольнение.Ссылка В(&МассивОбъектов)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УвольнениеСпискомСотрудники.Ссылка,
| УвольнениеСпискомСотрудники.Ссылка.Организация,
| НАЧАЛОПЕРИОДА(УвольнениеСпискомСотрудники.ДатаУвольнения, ГОД),
| КОНЕЦПЕРИОДА(УвольнениеСпискомСотрудники.ДатаУвольнения, ГОД),
| УвольнениеСпискомСотрудники.Ссылка.Дата,
| УвольнениеСпискомСотрудники.Сотрудник,
| УвольнениеСпискомСотрудники.ФизическоеЛицо,
| УвольнениеСпискомСотрудники.НомерСтроки,
| УвольнениеСпискомСотрудники.ДатаУвольнения,
| УвольнениеСпискомСотрудники.Ссылка.Руководитель,
| УвольнениеСпискомСотрудники.Ссылка.ДолжностьРуководителя
|ИЗ
| Документ.УвольнениеСписком.Сотрудники КАК УвольнениеСпискомСотрудники
|ГДЕ
| УвольнениеСпискомСотрудники.Ссылка В(&МассивОбъектов)";
Запрос.Выполнить();
ОписательТаблиц = КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеФизическихЛиц(
Запрос.МенеджерВременныхТаблиц,
"ВТДанныеДокументов");
ОписательТаблиц.ИмяВТКадровыеДанныеФизическихЛиц = "ВТКадровыеДанныеФизическихЛицУвольнений";
КадровыйУчет.СоздатьВТКадровыеДанныеФизическихЛиц(ОписательТаблиц, Истина, "СтраховойНомерПФР,Фамилия,Имя,Отчество");
ОписательТаблиц = КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеСотрудников(
Запрос.МенеджерВременныхТаблиц,
"ВТДанныеДокументов");
ОписательТаблиц.ИмяВТКадровыеДанныеСотрудников = "ВТКадровыеДанныеСотрудниковУвольнений";
КадровыйУчет.СоздатьВТКадровыеДанныеСотрудников(ОписательТаблиц, Истина, "ЯвляетсяШахтером,ЯвляетсяЧленомЛетногоЭкипажа");
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокументов.Ссылка КАК Ссылка,
| ДанныеДокументов.Организация КАК Организация,
| ДанныеДокументов.ОтчетныйПериод КАК ОтчетныйПериод,
| ДанныеДокументов.ОкончаниеОтчетногоПериода КАК ОкончаниеОтчетногоПериода,
| ДанныеДокументов.ДатаДокумента КАК ДатаДокумента,
| ДанныеДокументов.ФизическоеЛицо КАК Сотрудник,
| ДанныеДокументов.НомерСтроки КАК НомерСтроки,
| ДанныеДокументов.НомерСтроки КАК ИдентификаторСтрокиСотрудника,
| ДанныеДокументов.Период КАК Период,
| КадровыеДанныеФизическихЛиц.СтраховойНомерПФР КАК СтраховойНомерПФР,
| КадровыеДанныеФизическихЛиц.Фамилия КАК Фамилия,
| КадровыеДанныеФизическихЛиц.Имя КАК Имя,
| КадровыеДанныеФизическихЛиц.Отчество КАК Отчество,
| МАКСИМУМ(КадровыеДанныеСотрудников.ЯвляетсяШахтером) КАК ЯвляетсяШахтером,
| МАКСИМУМ(КадровыеДанныеСотрудников.ЯвляетсяЧленомЛетногоЭкипажа) КАК ЯвляетсяЧленомЛетногоЭкипажа,
| ДанныеДокументов.Руководитель КАК Руководитель,
| ДанныеДокументов.ДолжностьРуководителя КАК ДолжностьРуководителя
|ПОМЕСТИТЬ ВТПоШапкеИСотрудникам
|ИЗ
| ВТДанныеДокументов КАК ДанныеДокументов
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеФизическихЛицУвольнений КАК КадровыеДанныеФизическихЛиц
| ПО ДанныеДокументов.ФизическоеЛицо = КадровыеДанныеФизическихЛиц.ФизическоеЛицо
| И ДанныеДокументов.Период = КадровыеДанныеФизическихЛиц.Период
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудниковУвольнений КАК КадровыеДанныеСотрудников
| ПО ДанныеДокументов.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
| И ДанныеДокументов.Период = КадровыеДанныеСотрудников.Период
|
|СГРУППИРОВАТЬ ПО
| ДанныеДокументов.Ссылка,
| ДанныеДокументов.Организация,
| ДанныеДокументов.ОтчетныйПериод,
| ДанныеДокументов.ОкончаниеОтчетногоПериода,
| ДанныеДокументов.ДатаДокумента,
| ДанныеДокументов.ФизическоеЛицо,
| ДанныеДокументов.НомерСтроки,
| ДанныеДокументов.Период,
| КадровыеДанныеФизическихЛиц.СтраховойНомерПФР,
| КадровыеДанныеФизическихЛиц.Фамилия,
| КадровыеДанныеФизическихЛиц.Имя,
| КадровыеДанныеФизическихЛиц.Отчество,
| ДанныеДокументов.Руководитель,
| ДанныеДокументов.ДолжностьРуководителя,
| ДанныеДокументов.НомерСтроки
|;
|
|
|ВЫБРАТЬ
| ПоШапкеИСотрудникам.Ссылка КАК Ссылка,
| ПоШапкеИСотрудникам.Организация КАК Организация,
| ПоШапкеИСотрудникам.ОтчетныйПериод КАК ОтчетныйПериод,
| ПоШапкеИСотрудникам.ОкончаниеОтчетногоПериода КАК ОкончаниеОтчетногоПериода,
| ПоШапкеИСотрудникам.ДатаДокумента КАК ДатаДокумента,
| ПоШапкеИСотрудникам.Сотрудник КАК Сотрудник,
| ПоШапкеИСотрудникам.НомерСтроки КАК НомерСтроки,
| ПоШапкеИСотрудникам.ИдентификаторСтрокиСотрудника КАК ИдентификаторСтрокиСотрудника,
| ПоШапкеИСотрудникам.Период КАК Период,
| ПоШапкеИСотрудникам.СтраховойНомерПФР КАК СтраховойНомерПФР,
| ПоШапкеИСотрудникам.Фамилия КАК Фамилия,
| ПоШапкеИСотрудникам.Имя КАК Имя,
| ПоШапкеИСотрудникам.Отчество КАК Отчество,
| ПоШапкеИСотрудникам.ЯвляетсяШахтером КАК ЯвляетсяШахтером,
| ПоШапкеИСотрудникам.ЯвляетсяЧленомЛетногоЭкипажа КАК ЯвляетсяЧленомЛетногоЭкипажа,
| ПоШапкеИСотрудникам.Руководитель КАК Руководитель,
| ПоШапкеИСотрудникам.ДолжностьРуководителя КАК ДолжностьРуководителя
|ИЗ
| ВТПоШапкеИСотрудникам КАК ПоШапкеИСотрудникам
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| ИдентификаторСтрокиСотрудника";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.СледующийПоЗначениюПоля("Ссылка") Цикл
НачалоФормы = ДокументРезультат.ВысотаТаблицы + 1;
РеквизитыДокумента = Новый Структура(
"Организация,
|ОтчетныйПериод,
|ОкончаниеОтчетногоПериода,
|ИспользуетсяТрудШахтеров,
|ИспользуетсяТрудЧленовЛетныхЭкипажей,
|ДатаДокумента");
ЗаполнитьЗначенияСвойств(РеквизитыДокумента, Выборка);
РеквизитыДокумента.ИспользуетсяТрудШахтеров = ПолучитьФункциональнуюОпцию(
"ИспользуетсяТрудШахтеров", Новый Структура("Организация", РеквизитыДокумента.Организация));
РеквизитыДокумента.ИспользуетсяТрудЧленовЛетныхЭкипажей = ПолучитьФункциональнуюОпцию(
"ИспользуетсяТрудЧленовЛетныхЭкипажей", Новый Структура("Организация", РеквизитыДокумента.Организация));
ТаблицыОбъекта = Новый Структура;
ОбъектДокумента = Документы.СведенияДляИсчисленияДоплатыКПенсииСЗВ_ДСО.СоздатьДокумент();
ТаблицыОбъекта.Вставить("Сотрудники", ОбъектДокумента.Сотрудники.Выгрузить());
ТаблицыОбъекта.Вставить("ЧленыЛетныхЭкипажей", ОбъектДокумента.ЧленыЛетныхЭкипажей.Выгрузить());
ТаблицыОбъекта.Вставить("Шахтеры", ОбъектДокумента.Шахтеры.Выгрузить());
ТаблицыОбъекта.Вставить("СведенияОЗаработке", ОбъектДокумента.СведенияОЗаработке.Выгрузить());
ТаблицыОбъекта.Сотрудники.Колонки.Добавить("Ссылка", Новый ОписаниеТипов("ДокументСсылка.Увольнение,ДокументСсылка.УвольнениеСписком"));
ТаблицыОбъекта.Сотрудники.Колонки.Добавить("ОтчетныйПериод", Новый ОписаниеТипов("Дата"));
ТаблицыОбъекта.Сотрудники.Колонки.Добавить("ЯвляетсяШахтером", Новый ОписаниеТипов("Булево"));
ТаблицыОбъекта.Сотрудники.Колонки.Добавить("ЯвляетсяЧленомЛетногоЭкипажа", Новый ОписаниеТипов("Булево"));
ТаблицыОбъекта.Вставить("СотрудникиШахтеры", ТаблицыОбъекта.Сотрудники.СкопироватьКолонки());
ТаблицыОбъекта.Вставить("СотрудникиЧленыЛетныхЭкипажей", ТаблицыОбъекта.Сотрудники.СкопироватьКолонки());
ИдентификаторыСотрудников = Новый Соответствие;
ИдентификаторыСотрудниковШахтеров = Новый Соответствие;
ИдентификаторыСотрудниковЧленовЛетныхЭкипажей = Новый Соответствие;
Пока Выборка.СледующийПоЗначениюПоля("ИдентификаторСтрокиСотрудника") Цикл
Если Не Выборка.ЯвляетсяШахтером И Не Выборка.ЯвляетсяЧленомЛетногоЭкипажа Тогда
Продолжить;
КонецЕсли;
ИдентификаторыСотрудников.Вставить(Выборка.Сотрудник, Выборка.ИдентификаторСтрокиСотрудника);
ИдентификаторыСотрудниковШахтеров.Вставить(Выборка.Сотрудник, Выборка.ИдентификаторСтрокиСотрудника);
ИдентификаторыСотрудниковЧленовЛетныхЭкипажей.Вставить(Выборка.Сотрудник, Выборка.ИдентификаторСтрокиСотрудника);
СтрокаСотрудника = ТаблицыОбъекта.Сотрудники.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаСотрудника, Выборка);
Если Выборка.ЯвляетсяШахтером Тогда
ЗаполнитьЗначенияСвойств(ТаблицыОбъекта.СотрудникиШахтеры.Добавить(), СтрокаСотрудника);
КонецЕсли;
Если Выборка.ЯвляетсяЧленомЛетногоЭкипажа Тогда
ЗаполнитьЗначенияСвойств(ТаблицыОбъекта.СотрудникиЧленыЛетныхЭкипажей.Добавить(), СтрокаСотрудника);
КонецЕсли;
КонецЦикла;
Если Не ЗначениеЗаполнено(ИдентификаторыСотрудников) Тогда
Продолжить;
КонецЕсли;
Если ЗначениеЗаполнено(ТаблицыОбъекта.СотрудникиШахтеры) Тогда
Документы.СведенияДляИсчисленияДоплатыКПенсииСЗВ_ДСО.ЗаполнитьДанныеОСтажеСотрудников(
ИдентификаторыСотрудниковШахтеров, ТаблицыОбъекта.Шахтеры, РеквизитыДокумента);
КонецЕсли;
Если ЗначениеЗаполнено(ТаблицыОбъекта.СотрудникиЧленыЛетныхЭкипажей) Тогда
Документы.СведенияДляИсчисленияДоплатыКПенсииСЗВ_ДСО.ЗаполнитьДанныеОСтажеСотрудников(
ИдентификаторыСотрудниковЧленовЛетныхЭкипажей, ТаблицыОбъекта.ЧленыЛетныхЭкипажей, РеквизитыДокумента);
КонецЕсли;
Документы.СведенияДляИсчисленияДоплатыКПенсииСЗВ_ДСО.ЗаполнитьДанныеОЗаработкеСотрудников(
ИдентификаторыСотрудников, ТаблицыОбъекта.СведенияОЗаработке, ТаблицыОбъекта.Сотрудники, РеквизитыДокумента);
ТаблицыОбъекта.ЧленыЛетныхЭкипажей.Колонки.Добавить("Ссылка", Новый ОписаниеТипов("ДокументСсылка.Увольнение,ДокументСсылка.УвольнениеСписком"));
ТаблицыОбъекта.ЧленыЛетныхЭкипажей.Колонки.Добавить("ОтчетныйПериод", Новый ОписаниеТипов("Дата"));
ТаблицыОбъекта.Шахтеры.Колонки.Добавить("Ссылка", Новый ОписаниеТипов("ДокументСсылка.Увольнение,ДокументСсылка.УвольнениеСписком"));
ТаблицыОбъекта.Шахтеры.Колонки.Добавить("ОтчетныйПериод", Новый ОписаниеТипов("Дата"));
ТаблицыОбъекта.СведенияОЗаработке.Колонки.Добавить("Ссылка", Новый ОписаниеТипов("ДокументСсылка.Увольнение,ДокументСсылка.УвольнениеСписком"));
ТаблицыОбъекта.СведенияОЗаработке.Колонки.Добавить("ОтчетныйПериод", Новый ОписаниеТипов("Дата"));
ТаблицыОбъекта.ЧленыЛетныхЭкипажей.ЗаполнитьЗначения(Выборка.Ссылка, "Ссылка");
ТаблицыОбъекта.ЧленыЛетныхЭкипажей.ЗаполнитьЗначения(Выборка.ОтчетныйПериод, "ОтчетныйПериод");
ТаблицыОбъекта.Шахтеры.ЗаполнитьЗначения(Выборка.Ссылка, "Ссылка");
ТаблицыОбъекта.Шахтеры.ЗаполнитьЗначения(Выборка.ОтчетныйПериод, "ОтчетныйПериод");
ТаблицыОбъекта.СведенияОЗаработке.ЗаполнитьЗначения(Выборка.Ссылка, "Ссылка");
ТаблицыОбъекта.СведенияОЗаработке.ЗаполнитьЗначения(Выборка.ОтчетныйПериод, "ОтчетныйПериод");
ТабличныйДокументСсылки = Документы.СведенияДляИсчисленияДоплатыКПенсииСЗВ_ДСО.ПечатнаяФормаСЗВДСОПоВыборкамИзДокументов(
ПараметрыПечати,
ОбъектыПечати,
СЗВДСОВыборкаПоШапкеДокумента(Запрос.МенеджерВременныхТаблиц, Выборка.Ссылка),
СЗВДСОВыборкаПоРаботникам(ТаблицыОбъекта.Сотрудники),
СЗВДСОВыборкаПоСтажуЧленовЛетныхЭкипажей(ТаблицыОбъекта.ЧленыЛетныхЭкипажей),
СЗВДСОВыборкаПоСтажуШахтеров(ТаблицыОбъекта.Шахтеры),
СЗВДСОВыборкаПоЗаработку(ТаблицыОбъекта.СведенияОЗаработке));
Если ДокументРезультат.ВысотаТаблицы = 0 Тогда
ДокументРезультат = ТабличныйДокументСсылки;
Иначе
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
ДокументРезультат.Вывести(ТабличныйДокументСсылки);
КонецЕсли;
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ДокументРезультат, НачалоФормы, ОбъектыПечати, Выборка.Ссылка);
КонецЦикла;
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
Документы.СведенияДляИсчисленияДоплатыКПенсииСЗВ_ДСО.ИдентификаторКомандыПечати_ФормаСЗВ_ДСО(),
НСтр("ru = 'СЗВ-ДСО'"),
ДокументРезультат,,);
КонецЕсли;
КонецПроцедуры
Функция СЗВДСОВыборкаПоШапкеДокумента(МенеджерВременныхТаблиц, Ссылка)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Ссылка", Ссылка);
ОписаниеИсточникаДанных = ПерсонифицированныйУчет.ОписаниеИсточникаДанныхДляСоздатьВТСведенияОбОрганизациях();
ОписаниеИсточникаДанных.ИмяТаблицы = Ссылка.Метаданные().ПолноеИмя();
ОписаниеИсточникаДанных.ИмяПоляОрганизация = "Организация";
ОписаниеИсточникаДанных.ИмяПоляПериод = "Дата";
ОписаниеИсточникаДанных.СписокСсылок = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Ссылка);
ПерсонифицированныйУчет.СоздатьВТСведенияОбОрганизацияхПоОписаниюДокументаИсточникаДанных(
Запрос.МенеджерВременныхТаблиц, ОписаниеИсточникаДанных, Ложь);
Запрос.Текст =
"ВЫБРАТЬ
| ПоШапкеИСотрудникам.Ссылка КАК Ссылка,
| ПоШапкеИСотрудникам.Организация КАК Организация,
| ПоШапкеИСотрудникам.ОтчетныйПериод КАК ОтчетныйПериод,
| ПоШапкеИСотрудникам.ОкончаниеОтчетногоПериода КАК ОкончаниеОтчетногоПериода,
| ПоШапкеИСотрудникам.ДатаДокумента КАК ДатаДокумента,
| МАКСИМУМ(ПоШапкеИСотрудникам.ЯвляетсяШахтером) КАК ИспользуетсяТрудШахтеров,
| МАКСИМУМ(ПоШапкеИСотрудникам.ЯвляетсяЧленомЛетногоЭкипажа) КАК ИспользуетсяТрудЧленовЛетныхЭкипажей,
| ПоШапкеИСотрудникам.Руководитель КАК Руководитель,
| ПоШапкеИСотрудникам.ДолжностьРуководителя КАК ДолжностьРуководителя,
| ЗНАЧЕНИЕ(Перечисление.ТипыСведенийСЗВ_ДСО.Исходная) КАК ТипСведений,
| """" КАК ПрежнийСтраховательРегистрационныйНомерПФР,
| """" КАК ПрежнийСтраховательНаименованиеПолное,
| """" КАК ПрежнийСтраховательИНН,
| """" КАК ПрежнийСтраховательКПП
|ПОМЕСТИТЬ ВТПОШапке
|ИЗ
| ВТПоШапкеИСотрудникам КАК ПоШапкеИСотрудникам
|ГДЕ
| ПоШапкеИСотрудникам.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ПоШапкеИСотрудникам.Ссылка,
| ПоШапкеИСотрудникам.Организация,
| ПоШапкеИСотрудникам.ОтчетныйПериод,
| ПоШапкеИСотрудникам.ОкончаниеОтчетногоПериода,
| ПоШапкеИСотрудникам.ДатаДокумента,
| ПоШапкеИСотрудникам.Руководитель,
| ПоШапкеИСотрудникам.ДолжностьРуководителя
|;
|
|
|ВЫБРАТЬ
| ПоШапкеИСотрудникам.Ссылка КАК Ссылка,
| ПоШапкеИСотрудникам.ОтчетныйПериод КАК ОтчетныйПериод,
| ПоШапкеИСотрудникам.ОкончаниеОтчетногоПериода КАК ОкончаниеОтчетногоПериода,
| ПоШапкеИСотрудникам.ДатаДокумента КАК Дата,
| ПоШапкеИСотрудникам.ИспользуетсяТрудШахтеров КАК ИспользуетсяТрудШахтеров,
| ПоШапкеИСотрудникам.ИспользуетсяТрудЧленовЛетныхЭкипажей КАК ИспользуетсяТрудЧленовЛетныхЭкипажей,
| ПоШапкеИСотрудникам.Руководитель КАК Руководитель,
| ПоШапкеИСотрудникам.ДолжностьРуководителя КАК ДолжностьРуководителя,
| ЗНАЧЕНИЕ(Перечисление.ТипыСведенийСЗВ_ДСО.Исходная) КАК ТипСведений,
| """" КАК ПрежнийСтраховательРегистрационныйНомерПФР,
| """" КАК ПрежнийСтраховательНаименованиеПолное,
| """" КАК ПрежнийСтраховательИНН,
| """" КАК ПрежнийСтраховательКПП,
| ГОД(ПоШапкеИСотрудникам.ОтчетныйПериод) КАК Год,
| СведенияОбОрганизациях.Организация КАК Организация,
| СведенияОбОрганизациях.НаименованиеСокращенное КАК НаименованиеОрганизации,
| СведенияОбОрганизациях.ИНН КАК ИНН,
| СведенияОбОрганизациях.КПП КАК КПП,
| СведенияОбОрганизациях.ЮридическоеФизическоеЛицо КАК ЮридическоеФизическоеЛицо,
| СведенияОбОрганизациях.КодПоОКПО КАК КодПоОКПО,
| СведенияОбОрганизациях.ОГРН КАК ОГРН,
| СведенияОбОрганизациях.КодОКФС КАК КодОКФС,
| СведенияОбОрганизациях.КодОКВЭД КАК КодОКВЭД,
| СведенияОбОрганизациях.КодОКВЭД2 КАК КодОКВЭД2,
| СведенияОбОрганизациях.НаименованиеПолное КАК НаименованиеПолное,
| СведенияОбОрганизациях.НаименованиеСокращенное КАК НаименованиеСокращенное,
| СведенияОбОрганизациях.РегистрационныйНомерПФР КАК РегистрационныйНомерПФР
|ПОМЕСТИТЬ ВТДанныеДокументовСДаннымиОрганизации
|ИЗ
| ВТПОШапке КАК ПоШапкеИСотрудникам
| ЛЕВОЕ СОЕДИНЕНИЕ ВТСведенияОбОрганизациях КАК СведенияОбОрганизациях
| ПО ПоШапкеИСотрудникам.Организация = СведенияОбОрганизациях.Организация
| И ПоШапкеИСотрудникам.ДатаДокумента = СведенияОбОрганизациях.Период";
Запрос.Выполнить();
ИменаПолейОтветственныхЛиц = Новый Массив;
ИменаПолейОтветственныхЛиц.Добавить("Руководитель");
ЗарплатаКадры.СоздатьВТФИООтветственныхЛиц(Запрос.МенеджерВременныхТаблиц, Истина,
ИменаПолейОтветственныхЛиц, "ВТДанныеДокументовСДаннымиОрганизации");
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокументов.Ссылка КАК Ссылка,
| ДанныеДокументов.РегистрационныйНомерПФР КАК РегистрационныйНомерПФР,
| ДанныеДокументов.НаименованиеОрганизации КАК НаименованиеОрганизации,
| ДанныеДокументов.Организация КАК Организация,
| ДанныеДокументов.ЮридическоеФизическоеЛицо КАК ЮридическоеФизическоеЛицо,
| ДанныеДокументов.ИНН КАК ИНН,
| ДанныеДокументов.КПП КАК КПП,
| ДанныеДокументов.ОГРН КАК ОГРН,
| ДанныеДокументов.КодПоОКПО КАК ОКПО,
| ДанныеДокументов.КодОКФС КАК КодОКФС,
| ДанныеДокументов.КодОКВЭД КАК КодОКВЭД,
| ДанныеДокументов.КодОКВЭД2 КАК КодОКВЭД2,
| ДанныеДокументов.НаименованиеПолное КАК НаименованиеПолное,
| ДанныеДокументов.НаименованиеСокращенное КАК НаименованиеСокращенное,
| ДанныеДокументов.Год КАК Год,
| ДанныеДокументов.ОтчетныйПериод КАК ОтчетныйПериод,
| ДанныеДокументов.ОкончаниеОтчетногоПериода КАК ОкончаниеОтчетногоПериода,
| ДанныеДокументов.ТипСведений КАК ТипСведений,
| ЕСТЬNULL(ФИОПоследние.ФИОПолные, """") КАК Руководитель,
| ВЫБОР
| КОГДА ПОДСТРОКА(ЕСТЬNULL(ФИОПоследние.Фамилия, """"), 1, 10) = ""-""
| ТОГДА """"
| ИНАЧЕ ЕСТЬNULL(ФИОПоследние.Фамилия, """")
| КОНЕЦ КАК ФамилияРуководителя,
| ЕСТЬNULL(ФИОПоследние.Имя, """") КАК ИмяРуководителя,
| ЕСТЬNULL(ФИОПоследние.Отчество, """") КАК ОтчествоРуководителя,
| ДанныеДокументов.ДолжностьРуководителя КАК ДолжностьРуководителя,
| ДанныеДокументов.Дата КАК Дата,
| ДанныеДокументов.ПрежнийСтраховательРегистрационныйНомерПФР КАК ПрежнийСтраховательРегистрационныйНомерПФР,
| ДанныеДокументов.ПрежнийСтраховательНаименованиеПолное КАК ПрежнийСтраховательНаименованиеПолное,
| ДанныеДокументов.ПрежнийСтраховательИНН КАК ПрежнийСтраховательИНН,
| ДанныеДокументов.ПрежнийСтраховательКПП КАК ПрежнийСтраховательКПП,
| ДанныеДокументов.ИспользуетсяТрудЧленовЛетныхЭкипажей КАК ИспользуетсяТрудЧленовЛетныхЭкипажей,
| ДанныеДокументов.ИспользуетсяТрудШахтеров КАК ИспользуетсяТрудШахтеров
|ИЗ
| ВТДанныеДокументовСДаннымиОрганизации КАК ДанныеДокументов
| ЛЕВОЕ СОЕДИНЕНИЕ ВТФИООтветственныхЛиц КАК ФИОПоследние
| ПО ДанныеДокументов.Ссылка = ФИОПоследние.Ссылка
| И ДанныеДокументов.Руководитель = ФИОПоследние.ФизическоеЛицо
|
|УПОРЯДОЧИТЬ ПО
| ТипСведений,
| Ссылка";
Возврат Запрос.Выполнить().Выбрать();
КонецФункции
Функция СЗВДСОВыборкаПоРаботникам(Сотрудники)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Сотрудники", Сотрудники);
Запрос.Текст =
"ВЫБРАТЬ
| Сотрудники.ОтчетныйПериод КАК ОтчетныйПериод,
| Сотрудники.Ссылка КАК Ссылка,
| Сотрудники.НомерСтроки КАК НомерСтроки,
| Сотрудники.Сотрудник КАК Сотрудник,
| Сотрудники.СтраховойНомерПФР КАК СтраховойНомерПФР,
| Сотрудники.Фамилия КАК Фамилия,
| Сотрудники.Имя КАК Имя,
| Сотрудники.Отчество КАК Отчество,
| Сотрудники.Заработок КАК Заработок,
| Сотрудники.ИдентификаторСтрокиСотрудника КАК ИдентификаторСтрокиСотрудника
|ПОМЕСТИТЬ ВТСотрудникиУвольнений
|ИЗ
| &Сотрудники КАК Сотрудники
|;
|
|
|ВЫБРАТЬ
| Сотрудники.ОтчетныйПериод КАК ОтчетныйПериод,
| Сотрудники.Ссылка КАК Ссылка,
| Сотрудники.НомерСтроки КАК НомерСтроки,
| Сотрудники.Сотрудник КАК Сотрудник,
| Сотрудники.СтраховойНомерПФР КАК СтраховойНомерПФР,
| Сотрудники.Фамилия КАК Фамилия,
| Сотрудники.Имя КАК Имя,
| Сотрудники.Отчество КАК Отчество,
| Сотрудники.Заработок КАК Заработок,
| Сотрудники.ИдентификаторСтрокиСотрудника КАК ИдентификаторСтрокиСотрудника
|ИЗ
| ВТСотрудникиУвольнений КАК Сотрудники
|
|УПОРЯДОЧИТЬ ПО
| ОтчетныйПериод УБЫВ,
| Ссылка,
| НомерСтроки";
Возврат Запрос.Выполнить().Выбрать();
КонецФункции
Функция СЗВДСОВыборкаПоСтажуЧленовЛетныхЭкипажей(ЧленыЛетныхЭкипажей)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ЧленыЛетныхЭкипажей", ЧленыЛетныхЭкипажей);
Запрос.Текст =
"ВЫБРАТЬ
| ЧленыЛетныхЭкипажей.ОтчетныйПериод КАК ОтчетныйПериод,
| ЧленыЛетныхЭкипажей.Ссылка КАК Ссылка,
| ЧленыЛетныхЭкипажей.ИдентификаторСтрокиСотрудника КАК ИдентификаторСтрокиСотрудника,
| ЧленыЛетныхЭкипажей.ВидСтажа КАК ВидСтажа,
| ЧленыЛетныхЭкипажей.ДатаНачалаПериода КАК ДатаНачалаПериода,
| ЧленыЛетныхЭкипажей.ДатаОкончанияПериода КАК ДатаОкончанияПериода,
| ЧленыЛетныхЭкипажей.Часы КАК Часы,
| ЧленыЛетныхЭкипажей.Минуты КАК Минуты,
| ЧленыЛетныхЭкипажей.НомерСтроки КАК НомерСтроки
|ПОМЕСТИТЬ ВТЧленыЛетныхЭкипажей
|ИЗ
| &ЧленыЛетныхЭкипажей КАК ЧленыЛетныхЭкипажей
|;
|
|
|ВЫБРАТЬ
| ЧленыЛетныхЭкипажей.ОтчетныйПериод КАК ОтчетныйПериод,
| ЧленыЛетныхЭкипажей.Ссылка КАК Ссылка,
| ЧленыЛетныхЭкипажей.ИдентификаторСтрокиСотрудника КАК ИдентификаторСтрокиСотрудника,
| ЧленыЛетныхЭкипажей.ВидСтажа КАК ВидСтажа,
| ЧленыЛетныхЭкипажей.ДатаНачалаПериода КАК ДатаНачалаПериода,
| ЧленыЛетныхЭкипажей.ДатаОкончанияПериода КАК ДатаОкончанияПериода,
| ЧленыЛетныхЭкипажей.Часы КАК Часы,
| ЧленыЛетныхЭкипажей.Минуты КАК Минуты,
| ЧленыЛетныхЭкипажей.НомерСтроки КАК НомерСтроки
|ИЗ
| ВТЧленыЛетныхЭкипажей КАК ЧленыЛетныхЭкипажей
|
|УПОРЯДОЧИТЬ ПО
| ОтчетныйПериод УБЫВ,
| Ссылка,
| ИдентификаторСтрокиСотрудника,
| НомерСтроки";
Возврат Запрос.Выполнить().Выбрать();
КонецФункции
Функция СЗВДСОВыборкаПоСтажуШахтеров(Шахтеры)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Шахтеры", Шахтеры);
Запрос.Текст =
"ВЫБРАТЬ
| Шахтеры.ОтчетныйПериод КАК ОтчетныйПериод,
| Шахтеры.Ссылка КАК Ссылка,
| Шахтеры.ИдентификаторСтрокиСотрудника КАК ИдентификаторСтрокиСотрудника,
| Шахтеры.ВидСтажа КАК ВидСтажа,
| Шахтеры.ДатаНачалаПериода КАК ДатаНачалаПериода,
| Шахтеры.ДатаОкончанияПериода КАК ДатаОкончанияПериода,
| Шахтеры.НомерСтроки КАК НомерСтроки
|ПОМЕСТИТЬ ВТШахтеры
|ИЗ
| &Шахтеры КАК Шахтеры
|;
|
|
|ВЫБРАТЬ
| Шахтеры.ОтчетныйПериод КАК ОтчетныйПериод,
| Шахтеры.Ссылка КАК Ссылка,
| Шахтеры.ИдентификаторСтрокиСотрудника КАК ИдентификаторСтрокиСотрудника,
| Шахтеры.ВидСтажа КАК ВидСтажа,
| Шахтеры.ДатаНачалаПериода КАК ДатаНачалаПериода,
| Шахтеры.ДатаОкончанияПериода КАК ДатаОкончанияПериода,
| Шахтеры.НомерСтроки КАК НомерСтроки
|ИЗ
| ВТШахтеры КАК Шахтеры
|
|УПОРЯДОЧИТЬ ПО
| ОтчетныйПериод УБЫВ,
| Ссылка,
| ИдентификаторСтрокиСотрудника,
| НомерСтроки";
Возврат Запрос.Выполнить().Выбрать();
КонецФункции
Функция СЗВДСОВыборкаПоЗаработку(СведенияОЗаработке)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("СведенияОЗаработке", СведенияОЗаработке);
Запрос.Текст =
"ВЫБРАТЬ
| СведенияОЗаработке.ОтчетныйПериод КАК ОтчетныйПериод,
| СведенияОЗаработке.Ссылка КАК Ссылка,
| СведенияОЗаработке.ИдентификаторСтрокиСотрудника КАК ИдентификаторСтрокиСотрудника,
| СведенияОЗаработке.КодМесяца КАК КодМесяца,
| СведенияОЗаработке.Заработок КАК Заработок,
| СведенияОЗаработке.НомерСтроки КАК НомерСтроки
|ПОМЕСТИТЬ ВТСведенияОЗаработке
|ИЗ
| &СведенияОЗаработке КАК СведенияОЗаработке
|;
|
|
|ВЫБРАТЬ
| СведенияОЗаработке.ОтчетныйПериод КАК ОтчетныйПериод,
| СведенияОЗаработке.Ссылка КАК Ссылка,
| СведенияОЗаработке.ИдентификаторСтрокиСотрудника КАК ИдентификаторСтрокиСотрудника,
| СведенияОЗаработке.КодМесяца КАК КодМесяца,
| СведенияОЗаработке.Заработок КАК Заработок,
| СведенияОЗаработке.НомерСтроки КАК НомерСтроки
|ИЗ
| ВТСведенияОЗаработке КАК СведенияОЗаработке
|
|УПОРЯДОЧИТЬ ПО
| ОтчетныйПериод УБЫВ,
| Ссылка,
| ИдентификаторСтрокиСотрудника,
| НомерСтроки";
Возврат Запрос.Выполнить().Выбрать();
КонецФункции
#КонецОбласти
Процедура ПечатьРаздел3РСВ(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода)
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, ИдентификаторПечатнойФормыРаздел3РСВ()) Тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Увольнение.Ссылка КАК Ссылка,
| Увольнение.Организация КАК Организация,
| Увольнение.ДатаУвольнения КАК ДатаПодписи,
| КОНЕЦПЕРИОДА(Увольнение.ПериодРегистрации, КВАРТАЛ) КАК ДатаКонцаПериодаОтчета,
| Увольнение.ФизическоеЛицо КАК ФизическоеЛицо,
| 1 КАК НомерСтроки
|ПОМЕСТИТЬ ВТДанныеУвольнений
|ИЗ
| Документ.Увольнение КАК Увольнение
|ГДЕ
| Увольнение.Ссылка В(&МассивОбъектов)
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| УвольнениеСпискомСотрудники.Ссылка,
| УвольнениеСпискомСотрудники.Ссылка.Организация,
| УвольнениеСпискомСотрудники.ДатаУвольнения,
| КОНЕЦПЕРИОДА(УвольнениеСпискомСотрудники.Ссылка.ПериодРегистрации, КВАРТАЛ),
| УвольнениеСпискомСотрудники.ФизическоеЛицо,
| УвольнениеСпискомСотрудники.НомерСтроки
|ИЗ
| Документ.УвольнениеСписком.Сотрудники КАК УвольнениеСпискомСотрудники
|ГДЕ
| УвольнениеСпискомСотрудники.Ссылка В(&МассивОбъектов)
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеУвольнений.Организация КАК Организация,
| ДанныеУвольнений.ДатаПодписи КАК ДатаПодписи,
| ДанныеУвольнений.ДатаКонцаПериодаОтчета КАК ДатаКонцаПериодаОтчета,
| ДанныеУвольнений.ФизическоеЛицо КАК ФизическоеЛицо
|ИЗ
| ВТДанныеУвольнений КАК ДанныеУвольнений
|
|УПОРЯДОЧИТЬ ПО
| Организация,
| ДатаКонцаПериодаОтчета
|;
|
|
|ВЫБРАТЬ
| ДанныеУвольнений.Ссылка КАК Ссылка,
| ДанныеУвольнений.Организация КАК Организация,
| ДанныеУвольнений.ДатаКонцаПериодаОтчета КАК ДатаКонцаПериодаОтчета,
| ДанныеУвольнений.ФизическоеЛицо КАК ФизическоеЛицо,
| МИНИМУМ(ДанныеУвольнений.НомерСтроки) КАК НомерСтроки
|ИЗ
| ВТДанныеУвольнений КАК ДанныеУвольнений
|
|СГРУППИРОВАТЬ ПО
| ДанныеУвольнений.Ссылка,
| ДанныеУвольнений.ФизическоеЛицо,
| ДанныеУвольнений.Организация,
| ДанныеУвольнений.ДатаКонцаПериодаОтчета
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки";
РезультатЗапроса = Запрос.ВыполнитьПакет();
ВсеМакеты = Новый Соответствие;
Выборка = РезультатЗапроса[1].Выбрать();
Пока Выборка.СледующийПоЗначениюПоля("Организация") Цикл
Пока Выборка.СледующийПоЗначениюПоля("ДатаКонцаПериодаОтчета") Цикл
МассивФизическихЛиц = Новый Массив;
Пока Выборка.Следующий() Цикл
МассивФизическихЛиц.Добавить(Выборка.ФизическоеЛицо);
КонецЦикла;
ПараметрыПечатиРСВ = Новый Структура;
ПараметрыПечатиРСВ.Вставить("Организация", УчетСтраховыхВзносов.ОтчитывающаясяПоВзносамОрганизация(
Выборка.Организация, Выборка.ДатаКонцаПериодаОтчета));
ПараметрыПечатиРСВ.Вставить("ДатаПодписи", Выборка.ДатаПодписи);
ПараметрыПечатиРСВ.Вставить("ДатаКонцаПериодаОтчета", Выборка.ДатаКонцаПериодаОтчета);
ПараметрыПечатиРСВ.Вставить("МассивФизическихЛиц", МассивФизическихЛиц);
МакетыРСВ = ИнтерфейсыВзаимодействияБРО.ПерсонифицированныеСведенияОЗастрахованныхЛицахДляПечати(ПараметрыПечатиРСВ);
ДатыКонцаПериодаОрганизаций = ВсеМакеты.Получить(Выборка.Организация);
Если ДатыКонцаПериодаОрганизаций = Неопределено Тогда
ДатыКонцаПериодаОрганизаций = Новый Соответствие;
КонецЕсли;
ДатыКонцаПериодаОрганизаций.Вставить(Выборка.ДатаКонцаПериодаОтчета, МакетыРСВ);
ВсеМакеты.Вставить(Выборка.Организация, ДатыКонцаПериодаОрганизаций);
КонецЦикла;
КонецЦикла;
ДокументРезультат = Новый ТабличныйДокумент;
УстановитьПараметры = Истина;
Выборка = РезультатЗапроса[2].Выбрать();
Пока Выборка.СледующийПоЗначениюПоля("Ссылка") Цикл
ПерваяСтрокаПечатнойФормы = ДокументРезультат.ВысотаТаблицы + 1;
НачалоВыводаМакета = ДокументРезультат.ВысотаТаблицы + 1;
Пока Выборка.СледующийПоЗначениюПоля("НомерСтроки") Цикл
НачалоВыводаБланка = ДокументРезультат.ВысотаТаблицы + 1;
ДатыКонцаПериодаОрганизаций = ВсеМакеты.Получить(Выборка.Организация);
Если ДатыКонцаПериодаОрганизаций <> Неопределено Тогда
МакетыРСВ = ДатыКонцаПериодаОрганизаций.Получить(Выборка.ДатаКонцаПериодаОтчета);
Если МакетыРСВ <> Неопределено Тогда
Макеты = МакетыРСВ.Получить(Выборка.ФизическоеЛицо);
Если Макеты <> Неопределено Тогда
Для Каждого СтраницаТабличногоДокумента Из Макеты Цикл
Если ДокументРезультат.ВысотаТаблицы > 0 Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ДокументРезультат.Вывести(СтраницаТабличногоДокумента);
Если УстановитьПараметры Тогда
ЗаполнитьЗначенияСвойств(ДокументРезультат, СтраницаТабличногоДокумента, "АвтоМасштаб,ПолеСверху,ПолеСнизу,ПолеСлева,ПолеСправа");
УстановитьПараметры = Ложь;
КонецЕсли;
КонецЦикла;
Если НачалоВыводаБланка < ДокументРезультат.ВысотаТаблицы + 1 Тогда
ЭДОБЗК.ЗадатьДетальнуюОбластьПечати(ПараметрыПечати, ДокументРезультат, ИдентификаторПечатнойФормыРаздел3РСВ(),
НачалоВыводаБланка, Выборка, Выборка.Ссылка);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ПерваяСтрокаПечатнойФормы < ДокументРезультат.ВысотаТаблицы + 1 Тогда
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(
ДокументРезультат, ПерваяСтрокаПечатнойФормы, ОбъектыПечати, Выборка.Ссылка);
КонецЕсли;
КонецЦикла;
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
ИдентификаторПечатнойФормыРаздел3РСВ(),
НСтр("ru = 'Раздел 3 РСВ'"),
ДокументРезультат,,);
КонецЕсли;
КонецПроцедуры
Функция ДанныеДляРегистрацииВУчетаСтажаПФР(МассивСсылок, ПоСпискуСотрудников = Ложь, ПеремещаемыеСовместители = Неопределено, Организация = Неопределено) Экспорт
ДанныеДляРегистрацииВУчете = Новый Соответствие;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
Запрос.Текст =
"ВЫБРАТЬ
| Увольнение.Ссылка КАК Ссылка,
| Увольнение.Сотрудник КАК Сотрудник,
| Увольнение.ДатаУвольнения,
| Увольнение.Ссылка.Организация КАК Организация
|ИЗ
| Документ.Увольнение КАК Увольнение
|ГДЕ
| Увольнение.Ссылка В(&МассивСсылок)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| Сотрудник";
Если ПоСпискуСотрудников Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст,"Документ.Увольнение", "Документ.УвольнениеСписком.Сотрудники");
КонецЕсли;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.СледующийПоЗначениюПоля("Ссылка") Цикл
ДанныеДляРегистрацииВУчетеПоДокументу = УчетСтажаПФР.ДанныеДляРегистрацииВУчетеСтажаПФР();
ДанныеДляРегистрацииВУчете.Вставить(Выборка.Ссылка, ДанныеДляРегистрацииВУчетеПоДокументу);
Пока Выборка.Следующий() Цикл
ОписаниеПериода = УчетСтажаПФР.ОписаниеРегистрируемогоПериода();
ОписаниеПериода.Сотрудник = Выборка.Сотрудник;
ОписаниеПериода.ДатаНачалаПериода = КонецДня(Выборка.ДатаУвольнения) + 1;
ОписаниеПериода.Состояние = Перечисления.СостоянияСотрудника.Увольнение;
РегистрируемыйПериод = УчетСтажаПФР.ДобавитьЗаписьВДанныеДляРегистрацииВУчета(ДанныеДляРегистрацииВУчетеПоДокументу, ОписаниеПериода);
УчетСтажаПФР.УстановитьЗначениеРегистрируемогоРесурса(РегистрируемыйПериод, "Организация", Выборка.Организация);
УчетСтажаПФР.УстановитьЗначениеРегистрируемогоРесурса(РегистрируемыйПериод, "Подразделение", Справочники.ПодразделенияОрганизаций.ПустаяСсылка());
УчетСтажаПФР.УстановитьЗначениеРегистрируемогоРесурса(РегистрируемыйПериод, "Должность", Справочники.Должности.ПустаяСсылка());
УчетСтажаПФР.УстановитьЗначениеРегистрируемогоРесурса(РегистрируемыйПериод, "ДолжностьПоШтатномуРасписанию", Справочники.ШтатноеРасписание.ПустаяСсылка());
УчетСтажаПФР.УстановитьЗначениеРегистрируемогоРесурса(РегистрируемыйПериод, "ГрафикРаботы", Справочники.ГрафикиРаботыСотрудников.ПустаяСсылка());
УчетСтажаПФР.УстановитьЗначениеРегистрируемогоРесурса(РегистрируемыйПериод, "КоличествоСтавок", 0);
УчетСтажаПФР.УстановитьЗначениеРегистрируемогоРесурса(РегистрируемыйПериод, "ВидСтажаПФР", Перечисления.ВидыСтажаПФР2014.НеВключаетсяВСтраховойСтаж);
КонецЦикла;
Если ПеремещаемыеСовместители <> Неопределено Тогда
Для каждого ДанныеПеремещаемогоСовместителя Из ПеремещаемыеСовместители Цикл
ОписаниеПериода = УчетСтажаПФР.ОписаниеРегистрируемогоПериода();
ОписаниеПериода.Сотрудник = ДанныеПеремещаемогоСовместителя.Сотрудник;
ОписаниеПериода.ДатаНачалаПериода = ДанныеПеремещаемогоСовместителя.ДатаСобытия;
ОписаниеПериода.Состояние = Перечисления.СостоянияСотрудника.Работа;
ОписаниеПериода.ВидЗанятости = ДанныеПеремещаемогоСовместителя.ВидЗанятости;
РегистрируемыйПериод = УчетСтажаПФР.ДобавитьЗаписьВДанныеДляРегистрацииВУчета(ДанныеДляРегистрацииВУчетеПоДокументу, ОписаниеПериода);
УчетСтажаПФР.УстановитьЗначениеРегистрируемогоРесурса(РегистрируемыйПериод, "Организация", Организация);
КонецЦикла;
КонецЕсли;
КонецЦикла;
Возврат ДанныеДляРегистрацииВУчете;
КонецФункции
#Область ОбработкаПроверкиЗаполнения
Функция ДатыУвольненияСотрудников(Ссылка)
ПроверяемыеДаты = Новый Соответствие;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаДокумента.Сотрудник КАК Сотрудник,
| ТаблицаДокумента.ДатаУвольнения КАК ДатаУвольнения
|ИЗ
| Документ.Увольнение КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.Ссылка = &Ссылка
|
|УПОРЯДОЧИТЬ ПО
| ДатаУвольнения,
| Сотрудник";
Если ТипЗнч(Ссылка) <> Тип("ДокументСсылка.Увольнение") Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Документ.Увольнение", "Документ.УвольнениеСписком.Сотрудники");
КонецЕсли;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.СледующийПоЗначениюПоля("ДатаУвольнения") Цикл
СписокСотрудников = Новый Массив;
Пока Выборка.Следующий() Цикл
СписокСотрудников.Добавить(Выборка.Сотрудник);
КонецЦикла;
ПроверяемыеДаты.Вставить(Выборка.ДатаУвольнения, СписокСотрудников);;
КонецЦикла;
Возврат ПроверяемыеДаты;
КонецФункции
Процедура ПроверитьЗаполнениеКомпенсацииДополнительныхОтпусков(ДокументОбъект, Отказ, ВыводитьСообщения = Истина, ПраваНаДокумент = Неопределено) Экспорт
ТекстСообщения = "";
СтруктураСообщений = Новый Соответствие;
Если ПраваНаДокумент = Неопределено Тогда
ПраваНаДокумент = ЗарплатаКадрыРасширенный.ПраваНаМногофункциональныйДокумент(ДокументОбъект);
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ЭтоСписочныйДокумент = ТипЗнч(ДокументОбъект.Ссылка) <> Тип("ДокументСсылка.Увольнение");
НомерСтрокиСотрудника = 0;
НомерСтрокиОтпускаСотрудника = 0;
Сотрудник = Неопределено;
Для каждого ДополнительныйОтпуск Из ДокументОбъект.ДополнительныеОтпуска Цикл
Если ЭтоСписочныйДокумент Тогда
СтрокиСотрудников = ДокументОбъект.Сотрудники.НайтиСтроки(Новый Структура("ИдентификаторСтрокиСотрудника", ДополнительныйОтпуск.ИдентификаторСтрокиСотрудника));
Если СтрокиСотрудников.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
СтрокаСотрудника = СтрокиСотрудников[0];
НомерСтрокиСотрудника = СтрокаСотрудника.НомерСтроки;
Если Сотрудник <> СтрокаСотрудника.Сотрудник Тогда
Сотрудник = СтрокаСотрудника.Сотрудник;
НомерСтрокиОтпускаСотрудника = 1;
Иначе
НомерСтрокиОтпускаСотрудника = НомерСтрокиОтпускаСотрудника + 1;
КонецЕсли;
Иначе
Сотрудник = ДокументОбъект.Сотрудник;
НомерСтрокиОтпускаСотрудника = ДополнительныйОтпуск.НомерСтроки;
КонецЕсли;
Если ДополнительныйОтпуск.ПризнакКомпенсацииУдержания = Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.НеИспользовать Тогда
Продолжить;
КонецЕсли;
Если ПраваНаДокумент.ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений Тогда
Если Документы.Увольнение.НеобходимоЗаполнитьВидРасчетаКомпенсацииУдержания(
ДополнительныйОтпуск.ПризнакКомпенсацииУдержания, ПолучитьФункциональнуюОпцию("СпособУдержанияИзлишнеНачисленныхОтпускных"), ДополнительныйОтпуск.ВидРасчетаКомпенсацииУдержания) Тогда
Если ЭтоСписочныйДокумент Тогда
ТекстСообщения = НСтр("ru = 'По сотруднику %2, в строке %1 не заполнен вид расчета компенсации (удержания).'");
Иначе
ТекстСообщения = НСтр("ru = 'В строке %1 не заполнен вид расчета компенсации (удержания).'");
КонецЕсли;
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, НомерСтрокиОтпускаСотрудника, Сотрудник);
Если ЭтоСписочныйДокумент Тогда
НомерСтрокиДанных = НомерСтрокиСотрудника - 1;
ПутьКДанным = "Сотрудники[" + НомерСтрокиДанных + "]";
Иначе
НомерСтрокиДанных = ДополнительныйОтпуск.НомерСтроки - 1;
ПутьКДанным = "ДополнительныеОтпуска[" + НомерСтрокиДанных + "]";
КонецЕсли;
СтруктураСообщений.Вставить(ПутьКДанным, ТекстСообщения);
КонецЕсли;
КонецЕсли;
Если Не ЗначениеЗаполнено(ДополнительныйОтпуск.ДнейКомпенсацииУдержания) Тогда
Если ЭтоСписочныйДокумент Тогда
ТекстСообщения = НСтр("ru = 'По сотруднику %2, в строке %1 не заполнено количество дней компенсации (удержания).'");
Иначе
ТекстСообщения = НСтр("ru = 'В строке %1 не заполнено количество дней компенсации (удержания).'");
КонецЕсли;
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, НомерСтрокиОтпускаСотрудника, Сотрудник);
НомерСтрокиДанных = ДополнительныйОтпуск.НомерСтроки - 1;
СтруктураСообщений.Вставить("ДополнительныеОтпуска[" + НомерСтрокиДанных + "]", ТекстСообщения);
КонецЕсли;
КонецЦикла;
Если ВыводитьСообщения Тогда
Для каждого Сообщение Из СтруктураСообщений Цикл
ОбщегоНазначения.СообщитьПользователю(Сообщение.Значение, , "Объект" + ?(Сообщение.Ключ = "", "", ".") + Сообщение.Ключ);
КонецЦикла;
КонецЕсли;
Если СтруктураСообщений.Количество() > 0 Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Процедура ПроверитьПериодДействияНачислений(ДокументОбъект, Отказ)
Если Не ДокументОбъект.ДокументРассчитан Тогда
Возврат;
КонецЕсли;
ПараметрыПроверкиПериодаДействия = РасчетЗарплатыРасширенный.ПараметрыПроверкиПериодаДействия();
ПараметрыПроверкиПериодаДействия.Ссылка = ДокументОбъект.Ссылка;
ПроверяемыеКоллекции = Новый Массив;
ПроверяемыеКоллекции.Добавить(РасчетЗарплатыРасширенный.ОписаниеКоллекцииДляПроверкиПериодаДействия("Начисления", НСтр("ru='Начисления'")));
ПроверяемыеКоллекции.Добавить(РасчетЗарплатыРасширенный.ОписаниеКоллекцииДляПроверкиПериодаДействия("Пособия", НСтр("ru='Пособия'")));
ПроверяемыеКоллекции.Добавить(РасчетЗарплатыРасширенный.ОписаниеКоллекцииДляПроверкиПериодаДействия("Удержания", НСтр("ru='Удержания'"), "Удержание"));
ПроверяемыеКоллекции.Добавить(РасчетЗарплатыРасширенный.ОписаниеКоллекцииДляПроверкиПериодаДействия("НачисленияПерерасчет", НСтр("ru='Перерасчет прошлого периода'")));
РасчетЗарплатыРасширенный.ПроверитьПериодДействияВКоллекцияхНачислений(ДокументОбъект, ПараметрыПроверкиПериодаДействия, ПроверяемыеКоллекции, Отказ);
КонецПроцедуры
Процедура ПроверитьЗаполненностьРеквизитовКомпенсацииУдержанияОтпусков(ДокументОбъект, ПроверяемыеРеквизиты, Отказ, ПраваНаДокумент)
Если ТипЗнч(ДокументОбъект.Ссылка) <> Тип("ДокументСсылка.Увольнение") Тогда
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "Сотрудники.ДнейКомпенсацииУдержанияОтпуска");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "Сотрудники.ВидРасчетаКомпенсацииУдержанияОтпуска");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "Сотрудники.ВыходноеПособие");
ПроверяемаяКоллекция = ДокументОбъект.Сотрудники;
Иначе
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "ДнейКомпенсацииУдержанияОтпуска");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "ВидРасчетаКомпенсацииУдержанияОтпуска");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "ВыходноеПособие");
ПроверяемаяКоллекция = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ДокументОбъект);
КонецЕсли;
МетаданныеДокумента = Метаданные.Документы.Увольнение;
СинонимДнейКомпенсацииУдержанияОтпуска = МетаданныеДокумента.Реквизиты.ДнейКомпенсацииУдержанияОтпуска.Синоним;
СинонимВидРасчетаКомпенсацииУдержанияОтпуска = МетаданныеДокумента.Реквизиты.ВидРасчетаКомпенсацииУдержанияОтпуска.Синоним;
СинонимВыходноеПособие = МетаданныеДокумента.Реквизиты.ВыходноеПособие.Синоним;
НомерСтроки = 0;
Для каждого ЭлементКоллекции Из ПроверяемаяКоллекция Цикл
Если ЭлементКоллекции.ПризнакКомпенсацииУдержанияОтпуска <> Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.НеИспользовать
И Не ЗначениеЗаполнено(ЭлементКоллекции.ДнейКомпенсацииУдержанияОтпуска) Тогда
Если ПроверяемаяКоллекция.Количество() = 1 Тогда
ТекстСообщения = НСтр("ru='Поле ""%1"" не заполнено'");
ПутьКПолю = "Объект.ДнейКомпенсацииУдержанияОтпуска";
Иначе
ТекстСообщения = НСтр("ru='Для сотрудника %2 не заполнено поле ""%1""'");
ПутьКПолю = "Объект.Сотрудники[" + НомерСтроки + "].ДнейКомпенсацииУдержанияОтпуска";
КонецЕсли;
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения,
СинонимДнейКомпенсацииУдержанияОтпуска,
ЭлементКоллекции.Сотрудник);
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , ПутьКПолю, , Отказ);
КонецЕсли;
Если ДокументОбъект.ДокументРассчитан И ПраваНаДокумент.ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений
И ЭлементКоллекции.ПризнакКомпенсацииУдержанияОтпуска <> Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.НеИспользовать Тогда
Если Не ДокументОбъект.ДополнительныеСвойства.Свойство("РасчетНеобходимоВыполнить")
Или ДокументОбъект.ДополнительныеСвойства.РасчетНеобходимоВыполнить = Ложь Тогда
Если Не ЗначениеЗаполнено(ЭлементКоллекции.ВидРасчетаКомпенсацииУдержанияОтпуска)
И Не (ПолучитьФункциональнуюОпцию("СпособУдержанияИзлишнеНачисленныхОтпускных") = ПредопределенноеЗначение("Перечисление.СпособыУдержанияИзлишнеНачисленныхОтпускных.СторнированиеРанееНачисленныхСумм")
И ЭлементКоллекции.ПризнакКомпенсацииУдержанияОтпуска = ПредопределенноеЗначение("Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.УдержатьЗаИспользованныеАвансом")) Тогда
Если ПроверяемаяКоллекция.Количество() = 1 Тогда
ТекстСообщения = НСтр("ru='Поле ""%1"" не заполнено'");
ПутьКПолю = "Объект.ВидРасчетаКомпенсацииУдержанияОтпуска";
Иначе
ТекстСообщения = НСтр("ru='Для сотрудника %2 не заполнено поле ""%1""'");
ПутьКПолю = "Объект.Сотрудники[" + НомерСтроки + "].ВидРасчетаКомпенсацииУдержанияОтпуска";
КонецЕсли;
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения,
СинонимВидРасчетаКомпенсацииУдержанияОтпуска,
ЭлементКоллекции.Сотрудник);
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , ПутьКПолю, , Отказ);
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(ЭлементКоллекции.ДнейЧасовВыходногоПособия)
И Не ЗначениеЗаполнено(ЭлементКоллекции.ВыходноеПособие) Тогда
Если ПроверяемаяКоллекция.Количество() = 1 Тогда
ТекстСообщения = НСтр("ru='Поле ""%1"" не заполнено'");
ПутьКПолю = "Объект.ВыходноеПособие";
Иначе
ТекстСообщения = НСтр("ru='Для сотрудника %2 не заполнено поле ""%1""'");
ПутьКПолю = "Объект.Сотрудники[" + НомерСтроки + "].ВыходноеПособие";
КонецЕсли;
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения,
СинонимВыходноеПособие,
ЭлементКоллекции.Сотрудник);
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , ПутьКПолю, , Отказ);
КонецЕсли;
КонецЕсли;
НомерСтроки = НомерСтроки + 1;
КонецЦикла;
КонецПроцедуры
Процедура УточнитьНеобходимостьПроверкиДатыВыплаты(ДокументОбъект, ПроверяемыеРеквизиты, ПраваНаДокумент)
Если Не ПраваНаДокумент.ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений Тогда
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "ПланируемаяДатаВыплаты");
Возврат;
КонецЕсли;
МассивНачисленийДокумента = Новый Массив;
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивНачисленийДокумента, ДокументОбъект.Начисления.ВыгрузитьКолонку("Начисление"), Истина);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивНачисленийДокумента, ДокументОбъект.НачисленияПерерасчет.ВыгрузитьКолонку("Начисление"), Истина);
Если НЕ УчетНДФЛРасширенный.ДатаВыплатыОбязательнаКЗаполнению(ДокументОбъект.ПорядокВыплаты, МассивНачисленийДокумента) Тогда
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "ПланируемаяДатаВыплаты");
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ПодготовкаДанныхДляПроведенияДокумента
Процедура СоздатьВТКадровыеДанныеУвольняемыхСотрудников(МенеджерВременныхТаблиц, ДокументСсылка) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаДокумента.ДатаУвольнения КАК Период,
| ТаблицаДокумента.Сотрудник
|ПОМЕСТИТЬ ВТСотрудникиПериоды
|ИЗ
| Документ.Увольнение КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.Ссылка = &Ссылка";
Если ТипЗнч(ДокументСсылка) <> Тип("ДокументСсылка.Увольнение") Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Документ.Увольнение", "Документ.УвольнениеСписком.Сотрудники");
КонецЕсли;
Запрос.Выполнить();
ОписательТаблиц = КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеСотрудников(
Запрос.МенеджерВременныхТаблиц, "ВТСотрудникиПериоды");
КадровыйУчет.СоздатьВТКадровыеДанныеСотрудников(ОписательТаблиц, Истина, "ВидДоговора,ДолжностьПоШтатномуРасписанию,КоличествоСтавок,ВидЗанятости,ГоловнаяОрганизация");
КонецПроцедуры
Функция КадровыеСобытияУвольнение(Сотрудник, ДатаУвольнения, ФизическоеЛицо = Неопределено, Позиция = Неопределено, КоличествоСтавок = Неопределено, ВидДоговора = Неопределено) Экспорт
Если ВидДоговора = Неопределено Тогда
ВидДоговора = Перечисления.ВидыДоговоровССотрудниками.ТрудовойДоговор;
КонецЕсли;
КадровыеСобытия = КадровыйУчетРасширенный.ПустаяТаблицаКадровыхСобытийПриУвольнении();
НовоеСобытие = КадровыеСобытия.Добавить();
НовоеСобытие.Сотрудник = Сотрудник;
НовоеСобытие.ДатаСобытия = КонецДня(ДатаУвольнения) + 1;
НовоеСобытие.ВидСобытия = Перечисления.ВидыКадровыхСобытий.Увольнение;
Если Не ЗначениеЗаполнено(ФизическоеЛицо) Тогда
ФизическоеЛицо = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Сотрудник, "ФизическоеЛицо");
КонецЕсли;
НовоеСобытие.ФизическоеЛицо = ФизическоеЛицо;
Возврат КадровыеСобытия;
КонецФункции
Функция КадровыеСобытияУвольнениеПоВременнойТаблице(МенеджерВременныхТаблиц)
КадровыеСобытия = КадровыйУчетРасширенный.ПустаяТаблицаКадровыхСобытийПриУвольнении();
КадровыеСобытия.Колонки.Добавить("ДатаУвольнения", Новый ОписаниеТипов("Дата"));
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| КадровыеДанныеСотрудников.Период КАК ДатаУвольнения,
| ДОБАВИТЬКДАТЕ(КадровыеДанныеСотрудников.Период, ДЕНЬ, 1) КАК ДатаСобытия,
| КадровыеДанныеСотрудников.Сотрудник,
| КадровыеДанныеСотрудников.ФизическоеЛицо,
| ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Увольнение) КАК ВидСобытия,
| КадровыеДанныеСотрудников.ВидДоговора КАК ВидДоговора,
| КадровыеДанныеСотрудников.ДолжностьПоШтатномуРасписанию КАК Позиция,
| КадровыеДанныеСотрудников.ВидЗанятости КАК ВидЗанятости,
| КадровыеДанныеСотрудников.КоличествоСтавок КАК КоличествоСтавок
|ИЗ
| ВТКадровыеДанныеСотрудников КАК КадровыеДанныеСотрудников";
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(КадровыеСобытия.Добавить(), Выборка);
КонецЦикла;
КонецЕсли;
Возврат КадровыеСобытия;
КонецФункции
Функция ДанныеДляПроведения(РеквизитыДляПроведения, МенеджерВременныхТаблиц, ПериодРегистрации, Организация, ПеремещаемыеСовместители = Неопределено, СтруктураВидовУчета = Неопределено) Экспорт
Если СтруктураВидовУчета = Неопределено Тогда
СтруктураВидовУчета = ПроведениеСервер.СтруктураВидовУчета();
Для Каждого ВидУчета Из СтруктураВидовУчета Цикл
СтруктураВидовУчета[ВидУчета.Ключ] = Истина;
КонецЦикла;
КонецЕсли;
ДанныеДляПроведения = РасчетЗарплатыРасширенный.СоздатьДанныеДляПроведенияНачисленияЗарплаты();
Если СтруктураВидовУчета.ОстальныеВидыУчета Или СтруктураВидовУчета.СтраховыеВзносы Тогда
РасчетЗарплатыРасширенный.ЗаполнитьНачисления(ДанныеДляПроведения, РеквизитыДляПроведения.Ссылка, "Начисления,НачисленияПерерасчет,Пособия,ПособияПерерасчет,Льготы", "Ссылка.ПериодРегистрации", , , "ПериодРегистрации", Истина);
ОтражениеЗарплатыВБухучете.СоздатьВТНачисленияСДаннымиЕНВД(РеквизитыДляПроведения.Организация, РеквизитыДляПроведения.ПериодРегистрации, ДанныеДляПроведения.МенеджерВременныхТаблиц, ДанныеДляПроведения.НачисленияПоСотрудникам);
РасчетЗарплаты.ЗаполнитьДанныеСтраховыхВзносов(ДанныеДляПроведения, РеквизитыДляПроведения.Ссылка, РеквизитыДляПроведения.ФизическиеЛицаКРасчетуНДФЛиВзносов);
ПособиеПлатитУчастникПилотногоПроекта = ПрямыеВыплатыПособийСоциальногоСтрахования.ПособиеПлатитУчастникПилотногоПроекта(РеквизитыДляПроведения.Организация, РеквизитыДляПроведения.ПериодРегистрации);
УчетПособийСоциальногоСтрахованияРасширенный.ЗаполнитьСведенияОПособияхПоУходуЗаРебенком(РеквизитыДляПроведения.Ссылка, ПособиеПлатитУчастникПилотногоПроекта, ДанныеДляПроведения, , "ПособияПерерасчет");
КонецЕсли;
Если СтруктураВидовУчета.ОстальныеВидыУчета Тогда
ДобавитьДанныеДляРегистрацииПрекращенияПлановыхНачислений(ДанныеДляПроведения, МенеджерВременныхТаблиц);
ДобавитьДанныеДляРегистрацииПрекращенияПлановыхУдержаний(ДанныеДляПроведения, МенеджерВременныхТаблиц, ПеремещаемыеСовместители);
ДобавитьДанныеДляРегистрацииСостоянийСотрудников(ДанныеДляПроведения, РеквизитыДляПроведения);
Если ПолучитьФункциональнуюОпцию("ИспользоватьПодработки")
И ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.Подработки") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("Подработки");
Модуль.ДобавитьДанныеДляРегистрацииПрекращенияПодработок(ДанныеДляПроведения, РеквизитыДляПроведения.Ссылка);
КонецЕсли;
РасчетЗарплатыРасширенный.ЗаполнитьУдержания(ДанныеДляПроведения, РеквизитыДляПроведения.Ссылка);
РасчетЗарплаты.ЗаполнитьСписокФизическихЛиц(ДанныеДляПроведения, РеквизитыДляПроведения.Ссылка, РеквизитыДляПроведения.ИсправленныйДокумент);
ДобавитьДанныеДляПогашенияЗадолженности(ДанныеДляПроведения, РеквизитыДляПроведения, МенеджерВременныхТаблиц);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплата");
ПараметрыУправленческаяЗарплата = Модуль.ДополнительныеПараметрыПодготовкиДанныхДляПроведения();
ПараметрыУправленческаяЗарплата.ПолеДатыДействия = "Ссылка.ПериодРегистрации";
ПараметрыУправленческаяЗарплата.ПолеВидаНачисления = "Начисление";
Модуль.ПриПодготовкеДанныхДляПроведенияДокументаРасчетаЗарплаты(ДанныеДляПроведения, РеквизитыДляПроведения.Ссылка, ПараметрыУправленческаяЗарплата);
КонецЕсли;
РасчетЗарплаты.ЗаполнитьДанныеНДФЛ(ДанныеДляПроведения, РеквизитыДляПроведения.Ссылка, РеквизитыДляПроведения.ФизическиеЛицаКРасчетуНДФЛиВзносов);
ДобавитьКолонкуНачалоМесяца(ДанныеДляПроведения.НДФЛ, "МесяцНалоговогоПериода");
ДобавитьКолонкуНачалоМесяца(ДанныеДляПроведения.НДФЛПоСотрудникам, "МесяцНалоговогоПериода");
РасчетЗарплатыРасширенный.ЗаполнитьДанныеКорректировкиВыплаты(ДанныеДляПроведения, РеквизитыДляПроведения.Ссылка);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба.РасчетДенежногоСодержания") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("РасчетДенежногоСодержания");
КорректировкиДляРегистрацииДенежногоСодержания = Модуль.СведенияОКорректировкахСотрудниковДляРегистрацииДенежногоСодержанияДокумента(
РеквизитыДляПроведения.Ссылка, ?(ТипЗнч(РеквизитыДляПроведения.Ссылка) = Тип("ДокументСсылка.Увольнение"), "", "Сотрудники"));
ДанныеДляПроведения.Вставить("КорректировкиДляРегистрацииДенежногоСодержания", КорректировкиДляРегистрацииДенежногоСодержания);
СоставМесячногоДенежногоСодержания = Модуль.СведенияОСоставеМесячногоДенежногоСодержания(РеквизитыДляПроведения.Ссылка, "ДенежноеСодержание,ДенежноеСодержаниеФактическиеНачисления");
ДанныеДляПроведения.Вставить("СоставМесячногоДенежногоСодержания", СоставМесячногоДенежногоСодержания);
КонецЕсли;
ДополнитьДанныеДляПроведенияОтпусков(ДанныеДляПроведения, РеквизитыДляПроведения);
ДобавитьДанныеДляРегистрацииДокумента(ДанныеДляПроведения, РеквизитыДляПроведения, ПеремещаемыеСовместители, РеквизитыДляПроведения.Организация);
ДобавитьДанныеДляПроведенияПоЗаймам(ДанныеДляПроведения, РеквизитыДляПроведения);
ДобавитьКолонкуНачалоМесяца(ДанныеДляПроведения.УдержанияЗаймов, "ДатаОкончания");
ДобавитьКолонкуНачалоМесяца(ДанныеДляПроведения.МатериальнаяВыгода, "ДатаПолученияДохода");
ДобавитьКолонкуНачалоМесяца(ДанныеДляПроведения.ВзаиморасчетыПоЗаймам, "ДатаПогашения");
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.КадровыйРезерв") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("КадровыйРезерв");
ДанныеКадровогоРезерва = Модуль.ДанныеУвольненияДляКадровогоРезерва(РеквизитыДляПроведения.Ссылка);
ДанныеДляПроведения.Вставить("ДанныеКадровогоРезерва", ДанныеКадровогоРезерва);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ТрудоустройствоПоКвотам") Тогда
МодульТрудоустройствоПоКвотам = ОбщегоНазначения.ОбщийМодуль("ТрудоустройствоПоКвотам");
ТрудоустройствоСотрудниковПоКвотам = МодульТрудоустройствоПоКвотам.ДанныеУвольнения(РеквизитыДляПроведения.Ссылка);
ДанныеДляПроведения.Вставить("ТрудоустройствоСотрудниковПоКвотам", ТрудоустройствоСотрудниковПоКвотам);
КонецЕсли;
ЗаполнитьПериодыОтпусков(РеквизитыДляПроведения, ДанныеДляПроведения);
ЗаполнитьДанныеОбИспользованииОтгулов(РеквизитыДляПроведения, ДанныеДляПроведения);
ЗаполнитьОснованияУвольненияСотрудников(РеквизитыДляПроведения, ДанныеДляПроведения);
ДанныеДляПрекращенияВычетов = Новый Соответствие;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Ссылка", РеквизитыДляПроведения.Ссылка);
Отборы = Новый Массив;
ЗарплатаКадрыОбщиеНаборыДанных.ДобавитьВКоллекциюОтбор(
Отборы, "ГоловнаяОрганизация", "=", ЗарплатаКадры.ГоловнаяОрганизация(РеквизитыДляПроведения.Организация));
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаДокумента.ФизическоеЛицо КАК ФизическоеЛицо
|ИЗ
| Документ.Увольнение КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.Ссылка = &Ссылка";
Если ТипЗнч(РеквизитыДляПроведения.Ссылка) <> Тип("ДокументСсылка.Увольнение") Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Документ.Увольнение", "Документ.УвольнениеСписком.Сотрудники");
КонецЕсли;
ФизическиеЛица = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ФизическоеЛицо");
ЗарплатаКадрыОбщиеНаборыДанных.ДобавитьВКоллекциюОтбор(
Отборы, "ФизическоеЛицо", "В", ФизическиеЛица);
КадровыйУчет.СоздатьВТТекущиеКадровыеДанныеСотрудников(
Запрос.МенеджерВременныхТаблиц, Ложь, Отборы, "ГоловнаяОрганизация,ДатаПриема,ДатаУвольнения");
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаДокумента.ФизическоеЛицо КАК ФизическоеЛицо,
| НАЧАЛОПЕРИОДА(ТаблицаДокумента.ДатаУвольнения, МЕСЯЦ) КАК МесяцУвольнения
|ИЗ
| Документ.Увольнение КАК ТаблицаДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ВидыЗанятостиСотрудниковИнтервальный КАК ВидыЗанятостиСотрудниковИнтервальный
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
| ПО ВидыЗанятостиСотрудниковИнтервальный.ФизическоеЛицо = ТекущиеКадровыеДанныеСотрудников.ФизическоеЛицо
| И ВидыЗанятостиСотрудниковИнтервальный.ГоловнаяОрганизация = ТекущиеКадровыеДанныеСотрудников.ГоловнаяОрганизация
| ПО ТаблицаДокумента.ФизическоеЛицо = ВидыЗанятостиСотрудниковИнтервальный.ФизическоеЛицо
| И (ТаблицаДокумента.ДатаУвольнения МЕЖДУ ВидыЗанятостиСотрудниковИнтервальный.ДатаНачала И ВидыЗанятостиСотрудниковИнтервальный.ДатаОкончания)
|ГДЕ
| ТаблицаДокумента.Ссылка = &Ссылка
| И ТекущиеКадровыеДанныеСотрудников.ДатаПриема > ДАТАВРЕМЯ(1, 1, 1)
| И ТекущиеКадровыеДанныеСотрудников.ДатаПриема < ТаблицаДокумента.ДатаУвольнения
| И НЕ ТаблицаДокумента.ПрименятьВычетыПослеУвольнения
|
|СГРУППИРОВАТЬ ПО
| ТаблицаДокумента.ФизическоеЛицо,
| НАЧАЛОПЕРИОДА(ТаблицаДокумента.ДатаУвольнения, МЕСЯЦ)
|
|ИМЕЮЩИЕ
| МАКСИМУМ(ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
| ИЛИ ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения > ТаблицаДокумента.ДатаУвольнения) = ЛОЖЬ
|
|УПОРЯДОЧИТЬ ПО
| МесяцУвольнения";
Если ТипЗнч(РеквизитыДляПроведения.Ссылка) <> Тип("ДокументСсылка.Увольнение") Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Документ.Увольнение", "Документ.УвольнениеСписком.Сотрудники");
КонецЕсли;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.СледующийПоЗначениюПоля("МесяцУвольнения") Цикл
СписокФизическихЛиц = Новый Массив;
Пока Выборка.Следующий() Цикл
СписокФизическихЛиц.Добавить(Выборка.ФизическоеЛицо);
КонецЦикла;
ДанныеДляПрекращенияВычетов.Вставить(Выборка.МесяцУвольнения, СписокФизическихЛиц);
КонецЦикла;
ДанныеДляПроведения.Вставить("ДанныеДляПрекращенияВычетов", ДанныеДляПрекращенияВычетов);
КонецЕсли;
Если СтруктураВидовУчета.ДанныеДляРасчетаСреднего Тогда
ДополнительныеПараметры = УчетСреднегоЗаработка.ДополнительныеПараметрыРегистрацииДанныхСреднегоЗаработка("Начисления,НачисленияПерерасчет,Пособия");
ДополнительныеПараметры.МесяцНачисления = "Ссылка.ПериодРегистрации";
УчетСреднегоЗаработка.ЗаполнитьТаблицыДляРегистрацииДанныхСреднегоЗаработка(ДанныеДляПроведения, РеквизитыДляПроведения.Ссылка, ДополнительныеПараметры);
КонецЕсли;
Если ДанныеДляПроведения.Начисления <> Неопределено Тогда
ПерерассчитанныеПериоды = ДанныеДляПроведения.Начисления.Скопировать(Новый Структура("Перерасчет", Истина), "ПериодРегистрации");
ПерерассчитанныеПериоды.Свернуть("ПериодРегистрации");
Для Каждого СтрокаПериодаРегистрации Из ПерерассчитанныеПериоды Цикл
СтрокиСотрудников = ДанныеДляПроведения.Начисления.НайтиСТроки(Новый Структура("ПериодРегистрации,Перерасчет", СтрокаПериодаРегистрации.ПериодРегистрации, Ложь));
Для Каждого СтрокаСотрудника Из СтрокиСотрудников Цикл
СтрокаСотрудника.Перерасчет = Истина;
КонецЦикла;
СтрокиСотрудников = ДанныеДляПроведения.НачисленияПоСотрудникам.НайтиСТроки(Новый Структура("ПериодРегистрации,Перерасчет", СтрокаПериодаРегистрации.ПериодРегистрации, Ложь));
Для Каждого СтрокаСотрудника Из СтрокиСотрудников Цикл
СтрокаСотрудника.Перерасчет = Истина;
КонецЦикла;
СтрокиСотрудников = ДанныеДляПроведения.ОтработанноеВремяПоСотрудникам.НайтиСТроки(Новый Структура("ПериодРегистрации,Перерасчет", СтрокаПериодаРегистрации.ПериодРегистрации, Ложь));
Для Каждого СтрокаСотрудника Из СтрокиСотрудников Цикл
СтрокаСотрудника.Перерасчет = Истина;
КонецЦикла;
КонецЦикла;
КонецЕсли;
ДанныеДляПроведения.Вставить("МероприятияТрудовойДеятельности",
ДанныеДляПроведенияМероприятияТрудовойДеятельности(РеквизитыДляПроведения.Ссылка).Получить(РеквизитыДляПроведения.Ссылка));
ДобавитьДанныеДляПроведенияОтгулов(ДанныеДляПроведения, РеквизитыДляПроведения);
Возврат ДанныеДляПроведения;
КонецФункции
Процедура ДобавитьКолонкуНачалоМесяца(Таблица, ИмяКолонкиСДатой)
Таблица.Колонки.Добавить("НачалоМесяца" + ИмяКолонкиСДатой, Новый ОписаниеТипов("Дата"));
Для Каждого СтрокаТаблицы Из Таблица Цикл
СтрокаТаблицы["НачалоМесяца" + ИмяКолонкиСДатой] = НачалоМесяца(СтрокаТаблицы[ИмяКолонкиСДатой]);
КонецЦикла;
КонецПроцедуры
Функция РеквизитыДляПроведения(ДокументСсылка) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Увольнение.Ссылка КАК Ссылка,
| Увольнение.Организация КАК Организация,
| Увольнение.ИсправленныйДокумент КАК ИсправленныйДокумент,
| Увольнение.ДокументРассчитан КАК ДокументРассчитан,
| Увольнение.ПериодРегистрации КАК ПериодРегистрации,
| Увольнение.Дата КАК Дата,
| Увольнение.ПорядокВыплаты КАК ПорядокВыплаты,
| Увольнение.Номер КАК Номер,
| Увольнение.НачислитьЗарплату КАК НачислитьЗарплату,
| Увольнение.ПланируемаяДатаВыплаты КАК ПланируемаяДатаВыплаты,
| Увольнение.НомерПриказа КАК НомерПриказа,
| Увольнение.ДоходПолученНаТерриторииРФ КАК ДоходПолученНаТерриторииРФ
|ИЗ
| Документ.Увольнение КАК Увольнение
|ГДЕ
| Увольнение.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УвольнениеСписком.Ссылка,
| УвольнениеСписком.Организация,
| УвольнениеСписком.ИсправленныйДокумент,
| УвольнениеСписком.ДокументРассчитан,
| УвольнениеСписком.ПериодРегистрации,
| УвольнениеСписком.Дата,
| УвольнениеСписком.ПорядокВыплаты,
| УвольнениеСписком.Номер,
| МАКСИМУМ(УвольнениеСпискомСотрудники.НачислитьЗарплату),
| УвольнениеСписком.ПланируемаяДатаВыплаты,
| УвольнениеСписком.НомерПриказа,
| УвольнениеСписком.ДоходПолученНаТерриторииРФ
|ИЗ
| Документ.УвольнениеСписком.Сотрудники КАК УвольнениеСпискомСотрудники
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.УвольнениеСписком КАК УвольнениеСписком
| ПО УвольнениеСпискомСотрудники.Ссылка = УвольнениеСписком.Ссылка
|ГДЕ
| УвольнениеСписком.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| УвольнениеСписком.Ссылка,
| УвольнениеСписком.Организация,
| УвольнениеСписком.ИсправленныйДокумент,
| УвольнениеСписком.ДокументРассчитан,
| УвольнениеСписком.ПериодРегистрации,
| УвольнениеСписком.Дата,
| УвольнениеСписком.ПорядокВыплаты,
| УвольнениеСписком.Номер,
| УвольнениеСписком.ПланируемаяДатаВыплаты,
| УвольнениеСписком.НомерПриказа
|;
|
|
|ВЫБРАТЬ
| УвольнениеРаспределениеПоТерриториямУсловиямТруда.НомерСтроки КАК НомерСтроки,
| УвольнениеРаспределениеПоТерриториямУсловиямТруда.ИдентификаторСтроки КАК ИдентификаторСтроки,
| УвольнениеРаспределениеПоТерриториямУсловиямТруда.Территория КАК Территория,
| УвольнениеРаспределениеПоТерриториямУсловиямТруда.УсловияТруда КАК УсловияТруда,
| УвольнениеРаспределениеПоТерриториямУсловиямТруда.ДоляРаспределения КАК ДоляРаспределения,
| УвольнениеРаспределениеПоТерриториямУсловиямТруда.Результат КАК Результат,
| УвольнениеРаспределениеПоТерриториямУсловиямТруда.ИдентификаторСтрокиПоказателей КАК ИдентификаторСтрокиПоказателей,
| УвольнениеРаспределениеПоТерриториямУсловиямТруда.СуммаВычета КАК СуммаВычета,
| УвольнениеРаспределениеПоТерриториямУсловиямТруда.СкидкаПоВзносам КАК СкидкаПоВзносам,
| УвольнениеРаспределениеПоТерриториямУсловиямТруда.РанееНачислено КАК РанееНачислено,
| УвольнениеРаспределениеПоТерриториямУсловиямТруда.СуммаДоходаНеОблагаемаяНДФЛ КАК СуммаДоходаНеОблагаемаяНДФЛ
|ИЗ
| Документ.Увольнение.РаспределениеПоТерриториямУсловиямТруда КАК УвольнениеРаспределениеПоТерриториямУсловиямТруда
|ГДЕ
| УвольнениеРаспределениеПоТерриториямУсловиямТруда.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УвольнениеСпискомРаспределениеПоТерриториямУсловиямТруда.НомерСтроки,
| УвольнениеСпискомРаспределениеПоТерриториямУсловиямТруда.ИдентификаторСтроки,
| УвольнениеСпискомРаспределениеПоТерриториямУсловиямТруда.Территория,
| УвольнениеСпискомРаспределениеПоТерриториямУсловиямТруда.УсловияТруда,
| УвольнениеСпискомРаспределениеПоТерриториямУсловиямТруда.ДоляРаспределения,
| УвольнениеСпискомРаспределениеПоТерриториямУсловиямТруда.Результат,
| УвольнениеСпискомРаспределениеПоТерриториямУсловиямТруда.ИдентификаторСтрокиПоказателей,
| УвольнениеСпискомРаспределениеПоТерриториямУсловиямТруда.СуммаВычета,
| УвольнениеСпискомРаспределениеПоТерриториямУсловиямТруда.СкидкаПоВзносам,
| УвольнениеСпискомРаспределениеПоТерриториямУсловиямТруда.РанееНачислено,
| УвольнениеСпискомРаспределениеПоТерриториямУсловиямТруда.СуммаДоходаНеОблагаемаяНДФЛ
|ИЗ
| Документ.УвольнениеСписком.РаспределениеПоТерриториямУсловиямТруда КАК УвольнениеСпискомРаспределениеПоТерриториямУсловиямТруда
|ГДЕ
| УвольнениеСпискомРаспределениеПоТерриториямУсловиямТруда.Ссылка = &Ссылка
|;
|
|
|ВЫБРАТЬ
| УвольнениеРаспределениеРезультатовНачислений.ИдентификаторСтроки КАК ИдентификаторСтроки,
| УвольнениеРаспределениеРезультатовНачислений.Территория КАК Территория,
| СУММА(УвольнениеРаспределениеРезультатовНачислений.Результат) КАК Результат,
| УвольнениеРаспределениеРезультатовНачислений.СтатьяФинансирования КАК СтатьяФинансирования,
| УвольнениеРаспределениеРезультатовНачислений.СтатьяРасходов КАК СтатьяРасходов,
| УвольнениеРаспределениеРезультатовНачислений.СпособОтраженияЗарплатыВБухучете КАК СпособОтраженияЗарплатыВБухучете,
| УвольнениеРаспределениеРезультатовНачислений.ОблагаетсяЕНВД КАК ОблагаетсяЕНВД,
| УвольнениеРаспределениеРезультатовНачислений.ПодразделениеУчетаЗатрат КАК ПодразделениеУчетаЗатрат
|ИЗ
| Документ.Увольнение.РаспределениеРезультатовНачислений КАК УвольнениеРаспределениеРезультатовНачислений
|ГДЕ
| УвольнениеРаспределениеРезультатовНачислений.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| УвольнениеРаспределениеРезультатовНачислений.ПодразделениеУчетаЗатрат,
| УвольнениеРаспределениеРезультатовНачислений.Территория,
| УвольнениеРаспределениеРезультатовНачислений.СтатьяФинансирования,
| УвольнениеРаспределениеРезультатовНачислений.ОблагаетсяЕНВД,
| УвольнениеРаспределениеРезультатовНачислений.СпособОтраженияЗарплатыВБухучете,
| УвольнениеРаспределениеРезультатовНачислений.СтатьяРасходов,
| УвольнениеРаспределениеРезультатовНачислений.ИдентификаторСтроки
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УвольнениеСпискомРаспределениеРезультатовНачислений.ИдентификаторСтроки,
| УвольнениеСпискомРаспределениеРезультатовНачислений.Территория,
| СУММА(УвольнениеСпискомРаспределениеРезультатовНачислений.Результат),
| УвольнениеСпискомРаспределениеРезультатовНачислений.СтатьяФинансирования,
| УвольнениеСпискомРаспределениеРезультатовНачислений.СтатьяРасходов,
| УвольнениеСпискомРаспределениеРезультатовНачислений.СпособОтраженияЗарплатыВБухучете,
| УвольнениеСпискомРаспределениеРезультатовНачислений.ОблагаетсяЕНВД,
| УвольнениеСпискомРаспределениеРезультатовНачислений.ПодразделениеУчетаЗатрат
|ИЗ
| Документ.УвольнениеСписком.РаспределениеРезультатовНачислений КАК УвольнениеСпискомРаспределениеРезультатовНачислений
|ГДЕ
| УвольнениеСпискомРаспределениеРезультатовНачислений.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| УвольнениеСпискомРаспределениеРезультатовНачислений.ОблагаетсяЕНВД,
| УвольнениеСпискомРаспределениеРезультатовНачислений.Территория,
| УвольнениеСпискомРаспределениеРезультатовНачислений.СтатьяФинансирования,
| УвольнениеСпискомРаспределениеРезультатовНачислений.ПодразделениеУчетаЗатрат,
| УвольнениеСпискомРаспределениеРезультатовНачислений.СпособОтраженияЗарплатыВБухучете,
| УвольнениеСпискомРаспределениеРезультатовНачислений.СтатьяРасходов,
| УвольнениеСпискомРаспределениеРезультатовНачислений.ИдентификаторСтроки
|;
|
|
|ВЫБРАТЬ
| Увольнение.Сотрудник КАК Сотрудник,
| Увольнение.ФизическоеЛицо КАК ФизическоеЛицо,
| ВЫБОР
| КОГДА Увольнение.ИсправленныйДокумент <> ЗНАЧЕНИЕ(Документ.Увольнение.ПустаяСсылка)
| ИЛИ Увольнение.МесяцНачалаРасчетов = НАЧАЛОПЕРИОДА(Увольнение.ДатаУвольнения, МЕСЯЦ)
| ТОГДА Увольнение.ПериодРегистрации
| КОГДА НЕ Увольнение.НачислитьЗарплату
| ИЛИ Увольнение.МесяцНачалаРасчетов = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ВЫБОР
| КОГДА Увольнение.ПериодРегистрации < НАЧАЛОПЕРИОДА(Увольнение.ДатаУвольнения, МЕСЯЦ)
| ТОГДА Увольнение.ПериодРегистрации
| ИНАЧЕ НАЧАЛОПЕРИОДА(Увольнение.ДатаУвольнения, МЕСЯЦ)
| КОНЕЦ
| ИНАЧЕ Увольнение.МесяцНачалаРасчетов
| КОНЕЦ КАК МесяцНачалаРасчетов,
| Увольнение.ПериодРегистрации КАК ПериодРегистрации,
| Увольнение.ДатаУвольнения КАК ДатаОкончания,
| Увольнение.СтатьяТКРФ КАК ОснованиеУвольнения
|ПОМЕСТИТЬ ВТСотрудникиДокумента
|ИЗ
| Документ.Увольнение КАК Увольнение
|ГДЕ
| Увольнение.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УвольнениеНачисления.Сотрудник,
| УвольнениеНачисления.Ссылка.ФизическоеЛицо,
| ВЫБОР
| КОГДА УвольнениеНачисления.Ссылка.ИсправленныйДокумент <> ЗНАЧЕНИЕ(Документ.Увольнение.ПустаяСсылка)
| ИЛИ УвольнениеНачисления.Ссылка.МесяцНачалаРасчетов = НАЧАЛОПЕРИОДА(УвольнениеНачисления.Ссылка.ДатаУвольнения, МЕСЯЦ)
| ТОГДА УвольнениеНачисления.Ссылка.ПериодРегистрации
| КОГДА НЕ УвольнениеНачисления.Ссылка.НачислитьЗарплату
| ИЛИ УвольнениеНачисления.Ссылка.МесяцНачалаРасчетов = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ВЫБОР
| КОГДА УвольнениеНачисления.Ссылка.ПериодРегистрации < НАЧАЛОПЕРИОДА(УвольнениеНачисления.Ссылка.ДатаУвольнения, МЕСЯЦ)
| ТОГДА УвольнениеНачисления.Ссылка.ПериодРегистрации
| ИНАЧЕ НАЧАЛОПЕРИОДА(УвольнениеНачисления.Ссылка.ДатаУвольнения, МЕСЯЦ)
| КОНЕЦ
| ИНАЧЕ УвольнениеНачисления.Ссылка.МесяцНачалаРасчетов
| КОНЕЦ,
| УвольнениеНачисления.Ссылка.ПериодРегистрации,
| УвольнениеНачисления.Ссылка.ДатаУвольнения,
| УвольнениеНачисления.Ссылка.СтатьяТКРФ
|ИЗ
| Документ.Увольнение.Начисления КАК УвольнениеНачисления
|ГДЕ
| УвольнениеНачисления.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УвольнениеСпискомСотрудники.Сотрудник,
| УвольнениеСпискомСотрудники.ФизическоеЛицо,
| ВЫБОР
| КОГДА УвольнениеСпискомСотрудники.Ссылка.ИсправленныйДокумент <> ЗНАЧЕНИЕ(Документ.УвольнениеСписком.ПустаяСсылка)
| ИЛИ УвольнениеСпискомСотрудники.МесяцНачалаРасчетов = НАЧАЛОПЕРИОДА(УвольнениеСпискомСотрудники.ДатаУвольнения, МЕСЯЦ)
| ТОГДА УвольнениеСпискомСотрудники.Ссылка.ПериодРегистрации
| КОГДА НЕ УвольнениеСпискомСотрудники.НачислитьЗарплату
| ИЛИ УвольнениеСпискомСотрудники.МесяцНачалаРасчетов = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ВЫБОР
| КОГДА УвольнениеСпискомСотрудники.Ссылка.ПериодРегистрации < НАЧАЛОПЕРИОДА(УвольнениеСпискомСотрудники.ДатаУвольнения, МЕСЯЦ)
| ТОГДА УвольнениеСпискомСотрудники.Ссылка.ПериодРегистрации
| ИНАЧЕ НАЧАЛОПЕРИОДА(УвольнениеСпискомСотрудники.ДатаУвольнения, МЕСЯЦ)
| КОНЕЦ
| ИНАЧЕ УвольнениеСпискомСотрудники.МесяцНачалаРасчетов
| КОНЕЦ,
| УвольнениеСпискомСотрудники.Ссылка.ПериодРегистрации,
| УвольнениеСпискомСотрудники.ДатаУвольнения,
| УвольнениеСпискомСотрудники.СтатьяТКРФ
|ИЗ
| Документ.УвольнениеСписком.Сотрудники КАК УвольнениеСпискомСотрудники
|ГДЕ
| УвольнениеСпискомСотрудники.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УвольнениеСпискомНачисления.Сотрудник,
| УвольнениеСпискомСотрудники.ФизическоеЛицо,
| ВЫБОР
| КОГДА УвольнениеСпискомСотрудники.Ссылка.ИсправленныйДокумент <> ЗНАЧЕНИЕ(Документ.УвольнениеСписком.ПустаяСсылка)
| ИЛИ УвольнениеСпискомСотрудники.МесяцНачалаРасчетов = НАЧАЛОПЕРИОДА(УвольнениеСпискомСотрудники.ДатаУвольнения, МЕСЯЦ)
| ТОГДА УвольнениеСпискомСотрудники.Ссылка.ПериодРегистрации
| КОГДА НЕ УвольнениеСпискомСотрудники.НачислитьЗарплату
| ИЛИ УвольнениеСпискомСотрудники.МесяцНачалаРасчетов = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ВЫБОР
| КОГДА УвольнениеСпискомСотрудники.Ссылка.ПериодРегистрации < НАЧАЛОПЕРИОДА(УвольнениеСпискомСотрудники.ДатаУвольнения, МЕСЯЦ)
| ТОГДА УвольнениеСпискомСотрудники.Ссылка.ПериодРегистрации
| ИНАЧЕ НАЧАЛОПЕРИОДА(УвольнениеСпискомСотрудники.ДатаУвольнения, МЕСЯЦ)
| КОНЕЦ
| ИНАЧЕ УвольнениеСпискомСотрудники.МесяцНачалаРасчетов
| КОНЕЦ,
| УвольнениеСпискомСотрудники.Ссылка.ПериодРегистрации,
| УвольнениеСпискомСотрудники.ДатаУвольнения,
| УвольнениеСпискомСотрудники.СтатьяТКРФ
|ИЗ
| Документ.УвольнениеСписком.Сотрудники КАК УвольнениеСпискомСотрудники
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.УвольнениеСписком.Начисления КАК УвольнениеСпискомНачисления
| ПО УвольнениеСпискомСотрудники.Ссылка = УвольнениеСпискомНачисления.Ссылка
| И УвольнениеСпискомСотрудники.Сотрудник = УвольнениеСпискомНачисления.Сотрудник.ГоловнойСотрудник
|ГДЕ
| УвольнениеСпискомСотрудники.Ссылка = &Ссылка
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| СотрудникиДокумента.Сотрудник КАК Сотрудник,
| СотрудникиДокумента.ФизическоеЛицо КАК ФизическоеЛицо,
| СотрудникиДокумента.МесяцНачалаРасчетов КАК МесяцНачалаРасчетов,
| СотрудникиДокумента.ПериодРегистрации КАК ПериодРегистрации,
| СотрудникиДокумента.ДатаОкончания КАК ДатаОкончания,
| СотрудникиДокумента.ОснованиеУвольнения КАК ОснованиеУвольнения
|ИЗ
| ВТСотрудникиДокумента КАК СотрудникиДокумента
|
|УПОРЯДОЧИТЬ ПО
| МесяцНачалаРасчетов,
| Сотрудник";
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Результаты = Запрос.ВыполнитьПакет();
РеквизитыДляПроведения = РеквизитыДляПроведенияПустаяСтруктура();
ВыборкаРеквизиты = Результаты[0].Выбрать();
Пока ВыборкаРеквизиты.Следующий() Цикл
ЗаполнитьЗначенияСвойств(РеквизитыДляПроведения, ВыборкаРеквизиты);
КонецЦикла;
РаспределениеПоТерриториямУсловиямТруда = Результаты[1].Выгрузить();
РаспределениеРезультатовНачислений = Результаты[2].Выгрузить();
РеквизитыДляПроведения.РаспределениеПоТерриториямУсловиямТруда = РаспределениеПоТерриториямУсловиямТруда;
РеквизитыДляПроведения.РаспределениеРезультатовНачислений = РаспределениеРезультатовНачислений;
ВыборкаПоМесяцамНачалаУчета = Результаты[4].Выбрать();
ФизическиеЛицаКРасчетуНДФЛиВзносов = Новый Массив;
ФизическиеЛицаУвольняемыеВСвязиСоСмертью = Новый Массив;
СотрудникиУвольняемыеВСвязиСоСмертью = Новый Массив;
Пока ВыборкаПоМесяцамНачалаУчета.Следующий() Цикл
Если КадровыйУчетРасширенный.ЭтоОснованиеУвольненияВСвязиСоСмертьюСотрудника(ВыборкаПоМесяцамНачалаУчета.ОснованиеУвольнения) Тогда
ФизическиеЛицаУвольняемыеВСвязиСоСмертью.Добавить(ВыборкаПоМесяцамНачалаУчета.ФизическоеЛицо);
СотрудникиУвольняемыеВСвязиСоСмертью.Добавить(ВыборкаПоМесяцамНачалаУчета.Сотрудник);
Иначе
ФизическиеЛицаКРасчетуНДФЛиВзносов.Добавить(ВыборкаПоМесяцамНачалаУчета.ФизическоеЛицо);
КонецЕсли;
КонецЦикла;
РеквизитыДляПроведения.ФизическиеЛицаКРасчетуНДФЛиВзносов = ОбщегоНазначенияКлиентСервер.СвернутьМассив(ФизическиеЛицаКРасчетуНДФЛиВзносов);
РеквизитыДляПроведения.ФизическиеЛицаУвольняемыеВСвязиСоСмертью = ОбщегоНазначенияКлиентСервер.СвернутьМассив(ФизическиеЛицаУвольняемыеВСвязиСоСмертью);
РеквизитыДляПроведения.СотрудникиУвольняемыеВСвязиСоСмертью = ОбщегоНазначенияКлиентСервер.СвернутьМассив(СотрудникиУвольняемыеВСвязиСоСмертью);
ВыборкаПоМесяцамНачалаУчета.Сбросить();
РасчетЗарплатыРасширенный.ЗаполнитьПериодыРегистрацииПоПериодамДокумента(РеквизитыДляПроведения, ВыборкаПоМесяцамНачалаУчета);
Возврат РеквизитыДляПроведения;
КонецФункции
Функция РеквизитыДляПроведенияПустаяСтруктура()
РеквизитыДляПроведенияПустаяСтруктура = Новый Структура(
"Ссылка,
|Организация,
|ИсправленныйДокумент,
|ДокументРассчитан,
|ПериодРегистрации,
|Дата,
|ПорядокВыплаты,
|Номер,
|НомерПриказа,
|НачислитьЗарплату,
|РаспределениеПоТерриториямУсловиямТруда,
|РаспределениеРезультатовНачислений,
|ПланируемаяДатаВыплаты,
|ПериодыРегистрации,
|ФизическиеЛицаКРасчетуНДФЛиВзносов,
|ФизическиеЛицаУвольняемыеВСвязиСоСмертью,
|СотрудникиУвольняемыеВСвязиСоСмертью,
|ДоходПолученНаТерриторииРФ");
Возврат РеквизитыДляПроведенияПустаяСтруктура;
КонецФункции
Процедура ДобавитьДанныеДляРегистрацииДокумента(ДанныеДляПроведения, РеквизитыДляПроведения, ПеремещаемыеСовместители, Организация)
ДанныеДляРегистрацииВУчете = ДанныеДляРегистрацииВУчетаСтажаПФР(
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(РеквизитыДляПроведения.Ссылка), ТипЗнч(РеквизитыДляПроведения.Ссылка) <> Тип("ДокументСсылка.Увольнение"), ПеремещаемыеСовместители, Организация);
ДанныеДляПроведения.Вставить("ДанныеДляРегистрацииВУчетаСтажаПФР", ДанныеДляРегистрацииВУчете[РеквизитыДляПроведения.Ссылка]);
КонецПроцедуры
Процедура ДобавитьДанныеДляРегистрацииПрекращенияПлановыхНачислений(ДанныеДляПроведения, МенеджерВременныхТаблиц)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДОБАВИТЬКДАТЕ(КадровыеДанныеСотрудников.Период, ДЕНЬ, 1) КАК Период,
| КадровыеДанныеСотрудников.Сотрудник
|ИЗ
| ВТКадровыеДанныеСотрудников КАК КадровыеДанныеСотрудников";
ДанныеДляПроведения.Вставить("ДанныеДляРегистрацииПрекращенияПлановыхНачислений", Запрос.Выполнить().Выгрузить());
КонецПроцедуры
Процедура ДобавитьДанныеДляРегистрацииПрекращенияПлановыхУдержаний(ДанныеДляПроведения, МенеджерВременныхТаблиц, ПеремещаемыеСовместители)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Если ПеремещаемыеСовместители = Неопределено Тогда
Запрос.УстановитьПараметр("ПеремещаемыеСовместители", Новый Массив);
Иначе
Запрос.УстановитьПараметр("ПеремещаемыеСовместители", ПеремещаемыеСовместители.ВыгрузитьКолонку("Сотрудник"));
КонецЕсли;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| КадровыеДанныеСотрудников.Период КАК Период,
| КадровыеДанныеСотрудников.ФизическоеЛицо КАК ФизическоеЛицо,
| КадровыеДанныеСотрудников.ГоловнаяОрганизация КАК Организация
|ИЗ
| ВТКадровыеДанныеСотрудников КАК КадровыеДанныеСотрудников
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники
| ПО КадровыеДанныеСотрудников.ФизическоеЛицо = Сотрудники.ФизическоеЛицо
| И (Сотрудники.Ссылка В (&ПеремещаемыеСовместители))
|ГДЕ
| КадровыеДанныеСотрудников.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
| И Сотрудники.Ссылка ЕСТЬ NULL";
ДанныеДляПроведения.Вставить("ДанныеДляРегистрацииПрекращенияПлановыхУдержаний", Запрос.Выполнить().Выгрузить());
КонецПроцедуры
Процедура ДобавитьДанныеДляРегистрацииСостоянийСотрудников(ДанныеДляПроведения, РеквизитыДляПроведения)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", РеквизитыДляПроведения.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаДокумента.Сотрудник,
| ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.Увольнение) КАК Состояние,
| ДОБАВИТЬКДАТЕ(ТаблицаДокумента.ДатаУвольнения, ДЕНЬ, 1) КАК Начало,
| ДАТАВРЕМЯ(1, 1, 1) КАК Окончание,
| НЕОПРЕДЕЛЕНО КАК ВидВремени
|ИЗ
| Документ.Увольнение КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.Ссылка = &Ссылка";
Если ТипЗнч(РеквизитыДляПроведения.Ссылка) <> Тип("ДокументСсылка.Увольнение") Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Документ.Увольнение", "Документ.УвольнениеСписком.Сотрудники");
КонецЕсли;
ДанныеДляПроведения.Вставить("ДанныеДляРегистрацииСостоянийСотрудников", Запрос.Выполнить().Выгрузить());
КонецПроцедуры
Процедура ДополнитьДанныеДляПроведенияОтпусков(ДанныеДляПроведения, РеквизитыДляПроведения)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", РеквизитыДляПроведения.Ссылка);
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Если ТипЗнч(РеквизитыДляПроведения.Ссылка) = Тип("ДокументСсылка.Увольнение") Тогда
Запрос.Текст =
"ВЫБРАТЬ
| Увольнение.Сотрудник КАК Сотрудник,
| Увольнение.ДатаУвольнения КАК ДатаУвольнения,
| ЗНАЧЕНИЕ(Справочник.ВидыОтпусков.Основной) КАК ВидОтпуска,
| Увольнение.РабочийГодС КАК РабочийПериодС,
| Увольнение.РабочийГодПо КАК РабочийПериодПо,
| Увольнение.ПризнакКомпенсацииУдержанияОтпуска КАК ПризнакКомпенсацииУдержания,
| Увольнение.ДнейКомпенсацииУдержанияОтпуска КАК КоличествоДнейКомпенсации,
| Увольнение.ОснованиеУвольнения КАК ОснованиеУвольнения
|ПОМЕСТИТЬ ВТДанныеОтпусков
|ИЗ
| Документ.Увольнение КАК Увольнение
|ГДЕ
| Увольнение.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Увольнение.Сотрудник,
| Увольнение.ДатаУвольнения,
| УвольнениеДополнительныеОтпуска.ВидОтпуска,
| УвольнениеДополнительныеОтпуска.НачалоПериодаЗаКоторыйПредоставляетсяОтпуск,
| УвольнениеДополнительныеОтпуска.КонецПериодаЗаКоторыйПредоставляетсяОтпуск,
| УвольнениеДополнительныеОтпуска.ПризнакКомпенсацииУдержания,
| УвольнениеДополнительныеОтпуска.ДнейКомпенсацииУдержания,
| Увольнение.ОснованиеУвольнения
|ИЗ
| Документ.Увольнение.ДополнительныеОтпуска КАК УвольнениеДополнительныеОтпуска
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.Увольнение КАК Увольнение
| ПО УвольнениеДополнительныеОтпуска.Ссылка = Увольнение.Ссылка
|ГДЕ
| УвольнениеДополнительныеОтпуска.Ссылка = &Ссылка";
Иначе
Запрос.Текст =
"ВЫБРАТЬ
| Сотрудники.Сотрудник КАК Сотрудник,
| Сотрудники.ДатаУвольнения КАК ДатаУвольнения,
| ЗНАЧЕНИЕ(Справочник.ВидыОтпусков.Основной) КАК ВидОтпуска,
| Сотрудники.РабочийГодС КАК РабочийПериодС,
| Сотрудники.РабочийГодПо КАК РабочийПериодПо,
| Сотрудники.ПризнакКомпенсацииУдержанияОтпуска КАК ПризнакКомпенсацииУдержания,
| Сотрудники.ДнейКомпенсацииУдержанияОтпуска КАК КоличествоДнейКомпенсации,
| Сотрудники.ОснованиеУвольнения КАК ОснованиеУвольнения
|ПОМЕСТИТЬ ВТДанныеОтпусков
|ИЗ
| Документ.УвольнениеСписком.Сотрудники КАК Сотрудники
|ГДЕ
| Сотрудники.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Сотрудники.Сотрудник,
| Сотрудники.ДатаУвольнения,
| ДополнительныеОтпуска.ВидОтпуска,
| ДополнительныеОтпуска.НачалоПериодаЗаКоторыйПредоставляетсяОтпуск,
| ДополнительныеОтпуска.КонецПериодаЗаКоторыйПредоставляетсяОтпуск,
| ДополнительныеОтпуска.ПризнакКомпенсацииУдержания,
| ДополнительныеОтпуска.ДнейКомпенсацииУдержания,
| Сотрудники.ОснованиеУвольнения
|ИЗ
| Документ.УвольнениеСписком.ДополнительныеОтпуска КАК ДополнительныеОтпуска
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.УвольнениеСписком.Сотрудники КАК Сотрудники
| ПО ДополнительныеОтпуска.Ссылка = Сотрудники.Ссылка
| И ДополнительныеОтпуска.ИдентификаторСтрокиСотрудника = Сотрудники.ИдентификаторСтрокиСотрудника
|ГДЕ
| ДополнительныеОтпуска.Ссылка = &Ссылка";
КонецЕсли;
Запрос.Выполнить();
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаДокумента.Сотрудник,
| КОНЕЦПЕРИОДА(ТаблицаДокумента.ДатаУвольнения, ДЕНЬ) КАК ДатаУвольнения
|ИЗ
| ВТДанныеОтпусков КАК ТаблицаДокумента";
Выборка = Запрос.Выполнить().Выбрать();
ДатыНачалаКомпенсаций= Новый Соответствие;
Пока Выборка.Следующий() Цикл
ДатыНачалаКомпенсаций.Вставить(Выборка.Сотрудник, Выборка.ДатаУвольнения);
КонецЦикла;
ДанныеДляПроведения.Вставить("ДатыНачалаКомпенсаций", ДатыНачалаКомпенсаций);
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаДокумента.Сотрудник КАК Сотрудник,
| ТаблицаДокумента.ДатаУвольнения КАК ДатаУвольнения,
| ТаблицаДокумента.ВидОтпуска КАК ВидОтпуска,
| ТаблицаДокумента.РабочийПериодС КАК РабочийПериодС,
| ТаблицаДокумента.РабочийПериодПо КАК РабочийПериодПо
|ИЗ
| ВТДанныеОтпусков КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.ПризнакКомпенсацииУдержания = ЗНАЧЕНИЕ(Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.КомпенсироватьНеИспользованные)
|
|УПОРЯДОЧИТЬ ПО
| Сотрудник";
ПериодыОтпусков = Новый Соответствие;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.СледующийПоЗначениюПоля("Сотрудник") Цикл
ПериодыПоВидамОтпусков = Новый Соответствие;
Пока Выборка.Следующий() Цикл
ПериодыПоВидамОтпусков.Вставить(Выборка.ВидОтпуска,
Новый Структура("РабочийПериодС, РабочийПериодПо", Выборка.РабочийПериодС, Выборка.РабочийПериодПо));
КонецЦикла;
ПериодыОтпусков.Вставить(Выборка.Сотрудник, ПериодыПоВидамОтпусков);
КонецЦикла;
ДанныеДляПроведения.Вставить("РабочиеПериодыКомпенсацийОтпусков", ПериодыОтпусков);
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаДокумента.Сотрудник КАК Сотрудник,
| ТаблицаДокумента.ВидОтпуска КАК ВидОтпуска,
| ТаблицаДокумента.ОснованиеУвольнения
|ИЗ
| ВТДанныеОтпусков КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.ПризнакКомпенсацииУдержания = ЗНАЧЕНИЕ(Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.КомпенсироватьНеИспользованные)
|
|УПОРЯДОЧИТЬ ПО
| Сотрудник";
ОснованияКомпенсацийОтпусков = Новый Соответствие;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.СледующийПоЗначениюПоля("Сотрудник") Цикл
ОснованиеПоВидамОтпусков = Новый Соответствие;
Пока Выборка.Следующий() Цикл
ОснованиеПоВидамОтпусков.Вставить(Выборка.ВидОтпуска, Выборка.ОснованиеУвольнения);
КонецЦикла;
ОснованияКомпенсацийОтпусков.Вставить(Выборка.Сотрудник, ОснованиеПоВидамОтпусков);
КонецЦикла;
ДанныеДляПроведения.Вставить("ОснованияКомпенсацийОтпусков", ОснованияКомпенсацийОтпусков);
СпособУдержанияИзлишнеНачисленныхОтпускных = ПолучитьФункциональнуюОпцию("СпособУдержанияИзлишнеНачисленныхОтпускных");
ОснованияУдержанийОтпусков = Новый Соответствие;
ПериодыОтпусков = Новый Соответствие;
Если СпособУдержанияИзлишнеНачисленныхОтпускных = Перечисления.СпособыУдержанияИзлишнеНачисленныхОтпускных.Удержание Тогда
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаДокумента.Сотрудник КАК Сотрудник,
| ТаблицаДокумента.ВидОтпуска КАК ВидОтпуска,
| ТаблицаДокумента.РабочийПериодС КАК РабочийПериодС,
| ТаблицаДокумента.РабочийПериодПо КАК РабочийПериодПо
|ИЗ
| ВТДанныеОтпусков КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.ПризнакКомпенсацииУдержания = ЗНАЧЕНИЕ(Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.УдержатьЗаИспользованныеАвансом)
|
|УПОРЯДОЧИТЬ ПО
| Сотрудник";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.СледующийПоЗначениюПоля("Сотрудник") Цикл
ПериодыПоВидамОтпусков = Новый Соответствие;
Пока Выборка.Следующий() Цикл
ПериодыПоВидамОтпусков.Вставить(Выборка.ВидОтпуска,
Новый Структура("РабочийПериодС, РабочийПериодПо", Выборка.РабочийПериодС, Выборка.РабочийПериодПо));
КонецЦикла;
ПериодыОтпусков.Вставить(Выборка.Сотрудник, ПериодыПоВидамОтпусков);
КонецЦикла;
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаДокумента.Сотрудник КАК Сотрудник,
| ТаблицаДокумента.ВидОтпуска КАК ВидОтпуска,
| ТаблицаДокумента.ОснованиеУвольнения
|ИЗ
| ВТДанныеОтпусков КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.ПризнакКомпенсацииУдержания = ЗНАЧЕНИЕ(Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.УдержатьЗаИспользованныеАвансом)
|
|УПОРЯДОЧИТЬ ПО
| Сотрудник";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.СледующийПоЗначениюПоля("Сотрудник") Цикл
ОснованиеПоВидамОтпусков = Новый Соответствие;
Пока Выборка.Следующий() Цикл
ОснованиеПоВидамОтпусков.Вставить(Выборка.ВидОтпуска, Выборка.ОснованиеУвольнения);
КонецЦикла;
ОснованияУдержанийОтпусков.Вставить(Выборка.Сотрудник, ОснованиеПоВидамОтпусков);
КонецЦикла;
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаДокумента.Сотрудник,
| ТаблицаДокумента.ДатаУвольнения,
| ТаблицаДокумента.ВидОтпуска КАК ВидЕжегодногоОтпуска,
| ТаблицаДокумента.КоличествоДнейКомпенсации КАК КоличествоДнейКомпенсации
|ИЗ
| ВТДанныеОтпусков КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.ПризнакКомпенсацииУдержания = ЗНАЧЕНИЕ(Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.УдержатьЗаИспользованныеАвансом)";
Иначе
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 0
| ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) КАК Сотрудник,
| ДАТАВРЕМЯ(1, 1, 1) КАК ДатаУвольнения,
| ЗНАЧЕНИЕ(Справочник.ВидыОтпусков.ПустаяСсылка) КАК ВидЕжегодногоОтпуска,
| 0 КАК КоличествоДнейКомпенсации";
КонецЕсли;
ДанныеДляПроведения.Вставить("РабочиеПериодыУдержанийОтпусков", ПериодыОтпусков);
ДанныеДляПроведения.Вставить("ОснованияУдержанийОтпусков", ОснованияУдержанийОтпусков);
ДанныеДляПроведения.Вставить("УдержанияОтпусков", Запрос.Выполнить().Выгрузить());
КонецПроцедуры
Процедура ДобавитьДанныеДляПроведенияПоЗаймам(ДанныеДляПроведения, РеквизитыДляПроведения)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", РеквизитыДляПроведения.Ссылка);
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Если ТипЗнч(РеквизитыДляПроведения.Ссылка) = Тип("ДокументСсылка.Увольнение") Тогда
Запрос.Текст =
"ВЫБРАТЬ
| ПогашениеЗаймов.Ссылка КАК ДокументСсылка,
| ПогашениеЗаймов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ПогашениеЗаймов.НомерСтроки КАК НомерСтроки,
| ПогашениеЗаймов.ФизическоеЛицо КАК ФизическоеЛицо,
| ПогашениеЗаймов.Ссылка.Организация КАК Организация,
| ПогашениеЗаймов.Подразделение КАК Подразделение,
| ПогашениеЗаймов.Ссылка.ПериодРегистрации КАК Месяц,
| ПогашениеЗаймов.ДоговорЗайма КАК ДоговорЗайма,
| ПогашениеЗаймов.НачисленоПроцентов КАК НачисленоПроцентов,
| ПогашениеЗаймов.ПогашениеПроцентов КАК ПогашениеПроцентов,
| ПогашениеЗаймов.ПогашениеЗайма КАК ПогашениеЗайма,
| ПогашениеЗаймов.МатериальнаяВыгода КАК МатериальнаяВыгода,
| ПогашениеЗаймов.НалогНаМатериальнуюВыгоду КАК НалогНаМатериальнуюВыгоду,
| ПогашениеЗаймов.Ссылка.ДатаУвольнения КАК ДатаОперации,
| ПогашениеЗаймов.Ссылка.ПланируемаяДатаВыплаты КАК ДатаПолученияДохода
|ПОМЕСТИТЬ ВТПогашениеЗаймов
|ИЗ
| Документ.Увольнение.ПогашениеЗаймов КАК ПогашениеЗаймов
|ГДЕ
| ПогашениеЗаймов.Ссылка = &Ссылка";
Иначе
Запрос.Текст =
"ВЫБРАТЬ
| ПогашениеЗаймов.Ссылка КАК ДокументСсылка,
| ПогашениеЗаймов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ПогашениеЗаймов.НомерСтроки КАК НомерСтроки,
| ПогашениеЗаймов.ФизическоеЛицо КАК ФизическоеЛицо,
| ПогашениеЗаймов.Ссылка.Организация КАК Организация,
| ПогашениеЗаймов.Подразделение КАК Подразделение,
| ПогашениеЗаймов.Ссылка.ПериодРегистрации КАК Месяц,
| ПогашениеЗаймов.ДоговорЗайма КАК ДоговорЗайма,
| ПогашениеЗаймов.НачисленоПроцентов КАК НачисленоПроцентов,
| ПогашениеЗаймов.ПогашениеПроцентов КАК ПогашениеПроцентов,
| ПогашениеЗаймов.ПогашениеЗайма КАК ПогашениеЗайма,
| ПогашениеЗаймов.МатериальнаяВыгода КАК МатериальнаяВыгода,
| ПогашениеЗаймов.НалогНаМатериальнуюВыгоду КАК НалогНаМатериальнуюВыгоду,
| Сотрудники.ДатаУвольнения КАК ДатаОперации,
| Сотрудники.Ссылка.ПланируемаяДатаВыплаты КАК ДатаПолученияДохода
|ПОМЕСТИТЬ ВТПогашениеЗаймов
|ИЗ
| Документ.УвольнениеСписком.ПогашениеЗаймов КАК ПогашениеЗаймов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.УвольнениеСписком.Сотрудники КАК Сотрудники
| ПО ПогашениеЗаймов.Ссылка = Сотрудники.Ссылка
| И ПогашениеЗаймов.ИдентификаторСтрокиСотрудника = Сотрудники.ИдентификаторСтрокиСотрудника
|ГДЕ
| ПогашениеЗаймов.Ссылка = &Ссылка";
КонецЕсли;
Запрос.Выполнить();
ЗаймыСотрудникам.ЗаполнитьДанныеДляПроведенияПоЗаймамПоВременнойТаблице(ДанныеДляПроведения, Запрос.МенеджерВременныхТаблиц, РеквизитыДляПроведения.Ссылка);
КонецПроцедуры
Процедура ДобавитьДанныеДляПроведенияОтгулов(ДанныеДляПроведения, РеквизитыДляПроведения)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", РеквизитыДляПроведения.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| Увольнение.ДатаУвольнения КАК Период,
| Увольнение.Организация КАК Организация,
| Увольнение.Сотрудник КАК Сотрудник,
| Увольнение.ДниНакопленныхОтгулов КАК Дни,
| Увольнение.ЧасыНакопленныхОтгулов КАК Часы
|ИЗ
| Документ.Увольнение КАК Увольнение
|ГДЕ
| Увольнение.Ссылка = &Ссылка
| И (Увольнение.ДниНакопленныхОтгулов > 0
| ИЛИ Увольнение.ЧасыНакопленныхОтгулов > 0)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УвольнениеСпискомСотрудники.ДатаУвольнения,
| УвольнениеСпискомСотрудники.Ссылка.Организация,
| УвольнениеСпискомСотрудники.Сотрудник,
| УвольнениеСпискомСотрудники.ДниНакопленныхОтгулов,
| УвольнениеСпискомСотрудники.ЧасыНакопленныхОтгулов
|ИЗ
| Документ.УвольнениеСписком.Сотрудники КАК УвольнениеСпискомСотрудники
|ГДЕ
| УвольнениеСпискомСотрудники.Ссылка = &Ссылка
| И (УвольнениеСпискомСотрудники.ДниНакопленныхОтгулов > 0
| ИЛИ УвольнениеСпискомСотрудники.ЧасыНакопленныхОтгулов > 0)";
ТаблицаОтгулов = Новый Массив;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СтрокаОтгулов = Новый Структура("ВидДвижения, Период, Организация, Сотрудник, Дни, Часы");
ЗаполнитьЗначенияСвойств(СтрокаОтгулов, Выборка);
СтрокаОтгулов.ВидДвижения = ВидДвиженияНакопления.Расход;
ТаблицаОтгулов.Добавить(СтрокаОтгулов);
КонецЦикла;
ДанныеДляПроведения.Вставить("ДниЧасыОтгулов", ТаблицаОтгулов);
КонецПроцедуры
Процедура ДобавитьДанныеДляПогашенияЗадолженности(ДанныеДляПроведения, РеквизитыДляПроведения, МенеджерВременныхТаблиц)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| КадровыеДанныеСотрудников.Период КАК Период,
| КадровыеДанныеСотрудников.ФизическоеЛицо КАК ФизическоеЛицо,
| КадровыеДанныеСотрудников.ГоловнаяОрганизация КАК Организация
|ПОМЕСТИТЬ ВТОсновныеСотрудники
|ИЗ
| ВТКадровыеДанныеСотрудников КАК КадровыеДанныеСотрудников
|ГДЕ
| КадровыеДанныеСотрудников.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
|;
|
|
|ВЫБРАТЬ
| ОсновныеСотрудники.Период КАК Период
|ИЗ
| ВТОсновныеСотрудники КАК ОсновныеСотрудники";
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Количество() = 0 Тогда
НаборЗаписей = РегистрыНакопления.ЗадолженностьПоУдержаниямФизическихЛиц.СоздатьНаборЗаписей();
ДанныеДляПроведения.ЗадолженностьПоУдержаниям = НаборЗаписей.Выгрузить();
Возврат;
КонецЕсли;
Выборка.Следующий();
Запрос.УстановитьПараметр("Период", НачалоМесяца(Выборка.Период));
Запрос.УстановитьПараметр("Регистратор", РеквизитыДляПроведения.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| &Период КАК Период,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| ЗадолженностьПоУдержаниямФизическихЛиц.Организация КАК Организация,
| ЗадолженностьПоУдержаниямФизическихЛиц.ФизическоеЛицо КАК ФизическоеЛицо,
| ЗадолженностьПоУдержаниямФизическихЛиц.Удержание КАК Удержание,
| ЗадолженностьПоУдержаниямФизическихЛиц.ДокументОснование КАК ДокументОснование,
| ЗадолженностьПоУдержаниямФизическихЛиц.СуммаОстаток КАК Сумма
|ПОМЕСТИТЬ ВТЗадолженностьПоУдержаниямФизическихЛиц
|ИЗ
| РегистрНакопления.ЗадолженностьПоУдержаниямФизическихЛиц.Остатки(
| &Период,
| (Организация, ФизическоеЛицо) В
| (ВЫБРАТЬ
| ОсновныеСотрудники.Организация,
| ОсновныеСотрудники.ФизическоеЛицо
| ИЗ
| ВТОсновныеСотрудники КАК ОсновныеСотрудники)) КАК ЗадолженностьПоУдержаниямФизическихЛиц
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Период,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход),
| ЗадолженностьПоУдержаниямФизическихЛиц.Организация,
| ЗадолженностьПоУдержаниямФизическихЛиц.ФизическоеЛицо,
| ЗадолженностьПоУдержаниямФизическихЛиц.Удержание,
| ЗадолженностьПоУдержаниямФизическихЛиц.ДокументОснование,
| ЗадолженностьПоУдержаниямФизическихЛиц.Сумма
|ИЗ
| РегистрНакопления.ЗадолженностьПоУдержаниямФизическихЛиц КАК ЗадолженностьПоУдержаниямФизическихЛиц
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТОсновныеСотрудники КАК ОсновныеСотрудники
| ПО ЗадолженностьПоУдержаниямФизическихЛиц.Организация = ОсновныеСотрудники.Организация
| И ЗадолженностьПоУдержаниямФизическихЛиц.ФизическоеЛицо = ОсновныеСотрудники.ФизическоеЛицо
| И (ЗадолженностьПоУдержаниямФизическихЛиц.Период < &Период)
| И (ЗадолженностьПоУдержаниямФизическихЛиц.Регистратор = &Регистратор)
|;
|
|
|ВЫБРАТЬ
| ЗадолженностьПоУдержаниямФизическихЛиц.Период КАК Период,
| ЗадолженностьПоУдержаниямФизическихЛиц.ВидДвижения КАК ВидДвижения,
| ЗадолженностьПоУдержаниямФизическихЛиц.Организация КАК Организация,
| ЗадолженностьПоУдержаниямФизическихЛиц.ФизическоеЛицо КАК ФизическоеЛицо,
| ЗадолженностьПоУдержаниямФизическихЛиц.Удержание КАК Удержание,
| ЗадолженностьПоУдержаниямФизическихЛиц.ДокументОснование КАК ДокументОснование,
| СУММА(ЗадолженностьПоУдержаниямФизическихЛиц.Сумма) КАК Сумма
|ИЗ
| ВТЗадолженностьПоУдержаниямФизическихЛиц КАК ЗадолженностьПоУдержаниямФизическихЛиц
|
|СГРУППИРОВАТЬ ПО
| ЗадолженностьПоУдержаниямФизическихЛиц.Период,
| ЗадолженностьПоУдержаниямФизическихЛиц.ВидДвижения,
| ЗадолженностьПоУдержаниямФизическихЛиц.Организация,
| ЗадолженностьПоУдержаниямФизическихЛиц.ФизическоеЛицо,
| ЗадолженностьПоУдержаниямФизическихЛиц.Удержание,
| ЗадолженностьПоУдержаниямФизическихЛиц.ДокументОснование
|
|ИМЕЮЩИЕ
| СУММА(ЗадолженностьПоУдержаниямФизическихЛиц.Сумма) > 0";
РезультатЗапроса = Запрос.Выполнить();
ДанныеДляПроведения.ЗадолженностьПоУдержаниям = РезультатЗапроса.Выгрузить();
КонецПроцедуры
Процедура ЗаполнитьПериодыОтпусков(РеквизитыДляПроведения, ДанныеДляПроведения)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", РеквизитыДляПроведения.Ссылка);
Запрос.УстановитьПараметр("ОсновнойОтпуск", ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыОтпусков.Основной"));
Запрос.Текст = "ВЫБРАТЬ
| Увольнение.Сотрудник КАК Сотрудник,
| &ОсновнойОтпуск КАК ВидОтпуска,
| Увольнение.ДнейКомпенсацииУдержанияОтпуска КАК КоличествоДней,
| Увольнение.РабочийГодС КАК РабочийПериодС,
| Увольнение.РабочийГодПо КАК РабочийПериодПо,
| ИСТИНА КАК Компенсация,
| Увольнение.ДатаУвольнения КАК ПериодЗаписи,
| Увольнение.ОснованиеУвольнения КАК Основание
|ИЗ
| Документ.Увольнение КАК Увольнение
|ГДЕ
| Увольнение.Ссылка = &Ссылка
| И Увольнение.ПризнакКомпенсацииУдержанияОтпуска = ЗНАЧЕНИЕ(Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.КомпенсироватьНеИспользованные)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УвольнениеДополнительныеОтпуска.Ссылка.Сотрудник,
| УвольнениеДополнительныеОтпуска.ВидОтпуска,
| УвольнениеДополнительныеОтпуска.ДнейКомпенсацииУдержания,
| УвольнениеДополнительныеОтпуска.НачалоПериодаЗаКоторыйПредоставляетсяОтпуск,
| УвольнениеДополнительныеОтпуска.КонецПериодаЗаКоторыйПредоставляетсяОтпуск,
| ИСТИНА,
| УвольнениеДополнительныеОтпуска.Ссылка.ДатаУвольнения,
| УвольнениеДополнительныеОтпуска.Ссылка.ОснованиеУвольнения
|ИЗ
| Документ.Увольнение.ДополнительныеОтпуска КАК УвольнениеДополнительныеОтпуска
|ГДЕ
| УвольнениеДополнительныеОтпуска.Ссылка = &Ссылка
| И УвольнениеДополнительныеОтпуска.ПризнакКомпенсацииУдержания = ЗНАЧЕНИЕ(Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.КомпенсироватьНеИспользованные)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УвольнениеСпискомСотрудники.Сотрудник,
| &ОсновнойОтпуск,
| УвольнениеСпискомСотрудники.ДнейКомпенсацииУдержанияОтпуска,
| УвольнениеСпискомСотрудники.РабочийГодС,
| УвольнениеСпискомСотрудники.РабочийГодПо,
| ИСТИНА,
| УвольнениеСпискомСотрудники.ДатаУвольнения,
| УвольнениеСпискомСотрудники.ОснованиеУвольнения
|ИЗ
| Документ.УвольнениеСписком.Сотрудники КАК УвольнениеСпискомСотрудники
|ГДЕ
| УвольнениеСпискомСотрудники.Ссылка = &Ссылка
| И УвольнениеСпискомСотрудники.ПризнакКомпенсацииУдержанияОтпуска = ЗНАЧЕНИЕ(Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.КомпенсироватьНеИспользованные)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УвольнениеСпискомСотрудники.Сотрудник,
| УвольнениеСпискомДополнительныеОтпуска.ВидОтпуска,
| УвольнениеСпискомДополнительныеОтпуска.ДнейКомпенсацииУдержания,
| УвольнениеСпискомДополнительныеОтпуска.НачалоПериодаЗаКоторыйПредоставляетсяОтпуск,
| УвольнениеСпискомДополнительныеОтпуска.КонецПериодаЗаКоторыйПредоставляетсяОтпуск,
| ИСТИНА,
| УвольнениеСпискомСотрудники.ДатаУвольнения,
| УвольнениеСпискомСотрудники.ОснованиеУвольнения
|ИЗ
| Документ.УвольнениеСписком.ДополнительныеОтпуска КАК УвольнениеСпискомДополнительныеОтпуска
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.УвольнениеСписком.Сотрудники КАК УвольнениеСпискомСотрудники
| ПО УвольнениеСпискомДополнительныеОтпуска.Ссылка = УвольнениеСпискомСотрудники.Ссылка
| И УвольнениеСпискомДополнительныеОтпуска.ИдентификаторСтрокиСотрудника = УвольнениеСпискомСотрудники.ИдентификаторСтрокиСотрудника
|ГДЕ
| УвольнениеСпискомДополнительныеОтпуска.Ссылка = &Ссылка
| И УвольнениеСпискомДополнительныеОтпуска.ПризнакКомпенсацииУдержания = ЗНАЧЕНИЕ(Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.КомпенсироватьНеИспользованные)";
ПериодыОтпусков = ОстаткиОтпусков.ПустаяТаблицаПериодовОтпусков();
ИсходныйДокумент = РеквизитыДляПроведения.Ссылка;
ИсходныйДокументДата = РеквизитыДляПроведения.Дата;
ИсходныйДокументНомер = ЗарплатаКадрыОтчеты.НомерНаПечать(РеквизитыДляПроведения.Номер, РеквизитыДляПроведения.НомерПриказа);
Если ЗначениеЗаполнено(РеквизитыДляПроведения.ИсправленныйДокумент) Тогда
ИсходныйДокумент = ИсправлениеДокументовЗарплатаКадры.ПервыйДокументЦепочкиИсправлений(РеквизитыДляПроведения.ИсправленныйДокумент);
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ИсходныйДокумент, "Дата, Номер, НомерПриказа");
ИсходныйДокументДата = ЗначенияРеквизитов["Дата"];
ИсходныйДокументНомер = ЗарплатаКадрыОтчеты.НомерНаПечать(ЗначенияРеквизитов["Номер"], ЗначенияРеквизитов["НомерПриказа"]);
КонецЕсли;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = ПериодыОтпусков.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
НоваяСтрока.Состояние = СостоянияСотрудников.СостояниеПоВидуОтпуска(Выборка.ВидОтпуска);
НоваяСтрока.ИсходныйДокумент = ИсходныйДокумент;
НоваяСтрока.ИсходныйДокументДата = ИсходныйДокументДата;
НоваяСтрока.ИсходныйДокументНомер = ИсходныйДокументНомер;
КонецЦикла;
ДанныеДляПроведения.Вставить("ПериодыОтпусков", ПериодыОтпусков);
КонецПроцедуры
Процедура ЗаполнитьДанныеОбИспользованииОтгулов(РеквизитыДляПроведения, ДанныеДляПроведения)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", РеквизитыДляПроведения.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| УвольнениеОтработанныеДни.Ссылка.ДатаУвольнения КАК Период,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| УвольнениеОтработанныеДни.Ссылка.Организация КАК Организация,
| УвольнениеОтработанныеДни.Ссылка.Сотрудник КАК Сотрудник,
| УвольнениеОтработанныеДни.Дата КАК ОтработанныйДень,
| ВЫБОР
| КОГДА УвольнениеОтработанныеДни.Часы = 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК Дни,
| УвольнениеОтработанныеДни.Часы КАК Часы
|ИЗ
| Документ.Увольнение.ОтработанныеДни КАК УвольнениеОтработанныеДни
|ГДЕ
| УвольнениеОтработанныеДни.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УвольнениеСпискомСотрудники.ДатаУвольнения,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход),
| УвольнениеСпискомСотрудники.Ссылка.Организация,
| УвольнениеСпискомСотрудники.Сотрудник,
| УвольнениеСпискомОтработанныеДни.Дата,
| ВЫБОР
| КОГДА УвольнениеСпискомОтработанныеДни.Часы = 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ,
| УвольнениеСпискомОтработанныеДни.Часы
|ИЗ
| Документ.УвольнениеСписком.Сотрудники КАК УвольнениеСпискомСотрудники
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.УвольнениеСписком.ОтработанныеДни КАК УвольнениеСпискомОтработанныеДни
| ПО УвольнениеСпискомСотрудники.Ссылка = УвольнениеСпискомОтработанныеДни.Ссылка
| И УвольнениеСпискомСотрудники.ИдентификаторСтрокиСотрудника = УвольнениеСпискомОтработанныеДни.ИдентификаторСтрокиСотрудника
| И (УвольнениеСпискомСотрудники.Ссылка = &Ссылка)";
ИспользованиеОтгулов = Запрос.Выполнить().Выгрузить();
ДанныеДляПроведения.Вставить("ИспользованиеОтгулов", ИспользованиеОтгулов);
КонецПроцедуры
Процедура ЗаполнитьОснованияУвольненияСотрудников(РеквизитыДляПроведения, ДанныеДляПроведения)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", РеквизитыДляПроведения.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| Увольнение.Сотрудник КАК Сотрудник,
| Увольнение.ДатаУвольнения КАК ДатаУвольнения,
| Увольнение.Ссылка КАК ДокументОснование,
| Увольнение.СтатьяТКРФ КАК ОснованиеУвольнения
|ИЗ
| Документ.Увольнение КАК Увольнение
|ГДЕ
| Увольнение.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УвольнениеСпискомСотрудники.Сотрудник,
| УвольнениеСпискомСотрудники.ДатаУвольнения,
| УвольнениеСпискомСотрудники.Ссылка,
| УвольнениеСпискомСотрудники.СтатьяТКРФ
|ИЗ
| Документ.УвольнениеСписком.Сотрудники КАК УвольнениеСпискомСотрудники
|ГДЕ
| УвольнениеСпискомСотрудники.Ссылка = &Ссылка";
ОснованияУвольнения = Запрос.Выполнить().Выгрузить();
ДанныеДляПроведения.Вставить("ОснованияУвольнения", ОснованияУвольнения);
КонецПроцедуры
Процедура ОбработкаУдаленияПроведения(ДокументОбъект, Отказ) Экспорт
ПроведениеСервер.ПодготовитьНаборыЗаписейКУдалениюПроведения(ДокументОбъект, ЗначениеЗаполнено(ДокументОбъект.ИсправленныйДокумент));
Если Не ЗначениеЗаполнено(ДокументОбъект.ИсправленныйДокумент) Тогда
ПерерасчетЗарплаты.ВосстановитьПерерасчеты(ДокументОбъект.Ссылка, ДокументОбъект.Организация);
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(ДокументОбъект, Отказ, ПроверяемыеРеквизиты) Экспорт
ПроверкаСтрокиСписочногоДокумента = ДокументОбъект.ДополнительныеСвойства.Свойство("ПроверкаСтрокиСписочногоДокумента");
Если ПроверкаСтрокиСписочногоДокумента Тогда
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "Дата");
КонецЕсли;
ПроверяетсяУвольнение = (ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.Увольнение"));
ПраваНаДокумент = ЗарплатаКадрыРасширенный.ПраваНаМногофункциональныйДокумент(ДокументОбъект);
Если Не ПроверкаСтрокиСписочногоДокумента Тогда
Если ПроверяетсяУвольнение Тогда
ЗарплатаКадры.ПроверитьКорректностьДаты(ДокументОбъект.Ссылка, ДокументОбъект.ДатаУвольнения, "Объект.ДатаУвольнения", Отказ, НСтр("ru='Дата увольнения'"), , , Ложь);
ЗарплатаКадры.ПроверитьКорректностьДаты(ДокументОбъект.Ссылка, ДокументОбъект.РабочийГодС, "Объект.РабочийГодС", Отказ, НСтр("ru='Начало периода работы'"), , , Ложь);
КонецЕсли;
Если ПраваНаДокумент.ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений Тогда
ЗарплатаКадры.ПроверитьДатуВыплаты(ДокументОбъект, Отказ);
КонецЕсли;
КонецЕсли;
Если ПроверяетсяУвольнение Тогда
ПроверяемаяКоллекция = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ДокументОбъект);
Иначе
ПроверяемаяКоллекция = ДокументОбъект.Сотрудники;
КонецЕсли;
ИсключаемыеРегистраторы = Новый Массив;
ИсключаемыеРегистраторы.Добавить(ДокументОбъект.Ссылка);
Если ЗначениеЗаполнено(ДокументОбъект.ИсправленныйДокумент) Тогда
ИсключаемыеРегистраторы.Добавить(ДокументОбъект.ИсправленныйДокумент);
КонецЕсли;
Если Не ПроверкаСтрокиСписочногоДокумента
И ПраваНаДокумент.ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений
И ПолучитьФункциональнуюОпцию("ИспользоватьРасчетЗарплатыРасширенная") Тогда
Для Каждого ЭлементКоллекции Из ПроверяемаяКоллекция Цикл
Если ЭлементКоллекции.НачислитьЗарплату Тогда
ТекстСообщения = "";
Если Не ЗначениеЗаполнено(ЭлементКоллекции.МесяцНачалаРасчетов)
Или ЭлементКоллекции.МесяцНачалаРасчетов < ЗарплатаКадрыКлиентСервер.ДатаОтсчетаПериодическихСведений() Тогда
Если ПроверяетсяУвольнение Тогда
ТекстСообщения = НСтр("ru='Не заполнен месяц с которого необходимо рассчитать зарплату'");
Иначе
ТекстСообщения = СтрШаблон(НСтр("ru='По сотруднику %1 не заполнен месяц с которого необходимо рассчитать зарплату в строке номер'") + " " + ЭлементКоллекции.НомерСтроки,
ЭлементКоллекции.Сотрудник);
КонецЕсли;
ИначеЕсли ЭлементКоллекции.МесяцНачалаРасчетов > ДокументОбъект.ПериодРегистрации Тогда
Если ПроверяетсяУвольнение Тогда
ТекстСообщения = НСтр("ru='Месяц с которого необходимо начислить зарплату не может быть больше месяца начисления'");
Иначе
ТекстСообщения = СтрШаблон(НСтр("ru='По сотруднику %1 месяц с которого необходимо начислить зарплату не может быть больше месяца начисления в строке номер'") + " " + ЭлементКоллекции.НомерСтроки,
ЭлементКоллекции.Сотрудник);
КонецЕсли;
ИначеЕсли ЭлементКоллекции.МесяцНачалаРасчетов > НачалоМесяца(ЭлементКоллекции.ДатаУвольнения) Тогда
Если ПроверяетсяУвольнение Тогда
ТекстСообщения = НСтр("ru='Месяц с которого необходимо начислить зарплату не может быть больше месяца увольнения'");
Иначе
ТекстСообщения = СтрШаблон(НСтр("ru='По сотруднику %1 месяц с которого необходимо начислить зарплату не может быть больше месяца увольнения в строке номер'") + " " + ЭлементКоллекции.НомерСтроки,
ЭлементКоллекции.Сотрудник);
КонецЕсли;
КонецЕсли;
Если Не ПустаяСтрока(ТекстСообщения) Тогда
Если ПроверяетсяУвольнение Тогда
ПутьКПолю = "МесяцНачалаРасчетовСтрокой";
Иначе
ПутьКПолю = "Объект.Сотрудники[" + (ЭлементКоллекции.НомерСтроки - 1) + "].Сотрудник";
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, ДокументОбъект.Ссылка, ПутьКПолю, , Отказ);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если Не ПроверкаСтрокиСписочногоДокумента Тогда
СотрудникиДокумента = Новый Соответствие;
Для каждого ЭлементКоллекции Из ПроверяемаяКоллекция Цикл
Если Не ПроверяетсяУвольнение Тогда
НомерСтроки = СотрудникиДокумента.Получить(ЭлементКоллекции.Сотрудник);
Если НомерСтроки <> Неопределено Тогда
ТекстСообщения = СтрШаблон(НСтр("ru='По сотруднику %1 уже оформлено увольнение в строке номер'") + " " + НомерСтроки,
ЭлементКоллекции.Сотрудник);
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, ДокументОбъект.Ссылка, "Объект.Сотрудники[" + (ЭлементКоллекции.НомерСтроки - 1) + "].Сотрудник", , Отказ);
Иначе
СотрудникиДокумента.Вставить(ЭлементКоллекции.Сотрудник, ЭлементКоллекции.НомерСтроки);
КонецЕсли;
КонецЕсли;
ПараметрыПолученияСотрудниковОрганизаций = КадровыйУчет.ПараметрыПолученияРабочихМестВОрганизацийПоВременнойТаблице();
ПараметрыПолученияСотрудниковОрганизаций.Организация = ДокументОбъект.Организация;
ПараметрыПолученияСотрудниковОрганизаций.НачалоПериода = ЭлементКоллекции.ДатаУвольнения;
ПараметрыПолученияСотрудниковОрганизаций.ОкончаниеПериода = ЭлементКоллекции.ДатаУвольнения;
ПараметрыПолученияСотрудниковОрганизаций.РаботникиПоДоговорамГПХ = Неопределено;
ПараметрыПолученияСотрудниковОрганизаций.ИсключаемыйРегистратор = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ДокументОбъект.Ссылка);
Если ЗначениеЗаполнено(ДокументОбъект.ИсправленныйДокумент) Тогда
ПараметрыПолученияСотрудниковОрганизаций.ИсключаемыйРегистратор.Добавить(ДокументОбъект.ИсправленныйДокумент);
КонецЕсли;
КадровыйУчет.ПроверитьРаботающихСотрудников(
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ЭлементКоллекции.Сотрудник),
ПараметрыПолученияСотрудниковОрганизаций,
Отказ,
Новый Структура("ИмяПоляСотрудник, ИмяОбъекта", "Сотрудник", "Объект.Сотрудники"));
КонецЦикла;
ПроверятьЗаполнениеВторогоДокументаОснования = Ложь;
СотрудникиДаты = Новый ТаблицаЗначений;
СотрудникиДаты.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));
СотрудникиДаты.Колонки.Добавить("ДатаСобытия", Новый ОписаниеТипов("Дата"));
СотрудникиДаты.Колонки.Добавить("ВидСобытия", Новый ОписаниеТипов("ПеречислениеСсылка.ВидыКадровыхСобытий"));
Для Каждого ПроверяемаяСтруктура Из ПроверяемаяКоллекция Цикл
СтрокаСотрудникиДаты = СотрудникиДаты.Добавить();
СтрокаСотрудникиДаты.Сотрудник = ПроверяемаяСтруктура.Сотрудник;
СтрокаСотрудникиДаты.ВидСобытия = Перечисления.ВидыКадровыхСобытий.Увольнение;
СтрокаСотрудникиДаты.ДатаСобытия = ПроверяемаяСтруктура.ДатаУвольнения;
Если ПроверяемаяСтруктура.ОтразитьВТрудовойКнижке Тогда
ПроверятьЗаполнениеВторогоДокументаОснования = Истина;
КонецЕсли;
КонецЦикла;
ВремяРегистрацииДокумента = ЗарплатаКадрыРасширенный.ЗначенияВремениРегистрацииДокумента(ДокументОбъект.Ссылка, СотрудникиДаты);
Для Каждого СтрокаСотрудника Из СотрудникиДаты Цикл
ВремяРегистрацииСотрудников = ВремяРегистрацииДокумента.Получить(СтрокаСотрудника.ДатаСобытия);
Если ВремяРегистрацииСотрудников <> Неопределено Тогда
СтрокаСотрудника.ДатаСобытия = ВремяРегистрацииСотрудников.Получить(СтрокаСотрудника.Сотрудник) + 86400;
КонецЕсли;
КонецЦикла;
КадровыйУчет.ПроверитьВозможностьПроведенияПоКадровомуУчетуТаблицыСотрудников(СотрудникиДаты, ИсключаемыеРегистраторы, Отказ);
Если ПроверятьЗаполнениеВторогоДокументаОснования Тогда
ЭлектронныеТрудовыеКнижки.ПроверкаЗаполненияВторогоДокументаОснования(ДокументОбъект, ДокументОбъект.Ссылка, Отказ);
КонецЕсли;
КонецЕсли;
Если ПроверяетсяУвольнение Тогда
СотрудникиДаты = ЭлектронныеТрудовыеКнижки.ПустаяТаблицаСотрудникиДатыДляПроверкиПоследовательностиМероприятий();
Для Каждого ПроверяемаяСтруктура Из ПроверяемаяКоллекция Цикл
Если ПроверяемаяСтруктура.ОтразитьВТрудовойКнижке Тогда
ЭлектронныеТрудовыеКнижки.ДобавитьСотрудникаВТаблицуСотрудникиДаты(
СотрудникиДаты, ПроверяемаяСтруктура.Сотрудник, ПроверяемаяСтруктура.ДатаУвольнения);
КонецЕсли;
КонецЦикла;
ЭлектронныеТрудовыеКнижки.ПроверкаВозможностиРегистрацииМероприятияУвольнения(
СотрудникиДаты, ДокументОбъект.Ссылка, ИсключаемыеРегистраторы, Отказ);
КонецЕсли;
ПроверитьЗаполнениеКомпенсацииДополнительныхОтпусков(ДокументОбъект, Отказ, Истина, ПраваНаДокумент);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.КадровыйРезерв") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("КадровыйРезерв");
Модуль.ПроверитьЗаполнениеВидаРезерваВТабличнойЧасти(ДокументОбъект, "КадровыйРезерв", ПроверяемыеРеквизиты, Отказ);
КонецЕсли;
Если ПраваНаДокумент.ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений
И ПолучитьФункциональнуюОпцию("ИспользоватьРасчетЗарплатыРасширенная") Тогда
ИсправлениеДокументовЗарплатаКадры.ПроверитьЗаполнение(ДокументОбъект, ПроверяемыеРеквизиты, Отказ);
ПроверитьПериодДействияНачислений(ДокументОбъект, Отказ);
ИменаТаблицРаспределяемыхПоСтатьямФинансирования = "Начисления,НачисленияПерерасчет,Пособия,ПособияПерерасчет,Удержания,НДФЛ,ПогашениеЗаймов,КорректировкиВыплаты";
ИменаТаблицРаспределенияПоТерриториямУсловиямТруда = "Начисления,НачисленияПерерасчет,Пособия,ПособияПерерасчет";
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ЛьготыСотрудников") Тогда
ИмяФО = "ИспользоватьЛьготыСотрудников";
Если ПолучитьФункциональнуюОпцию(ИмяФО) Тогда
ИменаТаблицРаспределяемыхПоСтатьямФинансирования = ИменаТаблицРаспределяемыхПоСтатьямФинансирования + ",Льготы";
ИменаТаблицРаспределенияПоТерриториямУсловиямТруда = ИменаТаблицРаспределенияПоТерриториямУсловиямТруда + ",Льготы";
КонецЕсли;
КонецЕсли;
ОтражениеЗарплатыВБухучетеРасширенный.ПроверитьРезультатыРаспределенияНачисленийУдержанийОбъекта(
ДокументОбъект, ИменаТаблицРаспределяемыхПоСтатьямФинансирования, Отказ);
РасчетЗарплатыРасширенный.ПроверитьРаспределениеПоТерриториямУсловиямТрудаДокумента(
ДокументОбъект, ИменаТаблицРаспределенияПоТерриториямУсловиямТруда, Отказ);
КонецЕсли;
ПроверитьЗаполненностьРеквизитовКомпенсацииУдержанияОтпусков(ДокументОбъект, ПроверяемыеРеквизиты, Отказ, ПраваНаДокумент);
УточнитьНеобходимостьПроверкиДатыВыплаты(ДокументОбъект, ПроверяемыеРеквизиты, ПраваНаДокумент);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.КадровыйУчет.ДосрочноеУвольнение") Тогда
МодульДосрочноеУвольнение = ОбщегоНазначения.ОбщийМодуль("ДосрочноеУвольнение");
МодульДосрочноеУвольнение.УвольнениеОбработкаПроверкиЗаполнения(ДокументОбъект, Отказ, ПроверяемыеРеквизиты, ПраваНаДокумент);
Иначе
Если ТипЗнч(ДокументОбъект.Ссылка) <> Тип("ДокументСсылка.Увольнение") Тогда
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "Сотрудники.ДатаУведомленияОбУвольнении");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "Сотрудники.КомпенсацияЗаНеотработанныеДниЧасыПриУвольнении");
Иначе
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "ДатаУведомленияОбУвольнении");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "КомпенсацияЗаНеотработанныеДниЧасыПриУвольнении");
КонецЕсли;
КонецЕсли;
Если Не ПроверкаСтрокиСписочногоДокумента
И ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ОтсутствияСотрудников") Тогда
ТаблицаСотрудников = Новый ТаблицаЗначений;
ТаблицаСотрудников.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));
ТаблицаСотрудников.Колонки.Добавить("Начало", Новый ОписаниеТипов("Дата"));
ТаблицаСотрудников.Колонки.Добавить("Окончание", Новый ОписаниеТипов("Дата"));
Для Каждого ЭлементКоллекции Из ПроверяемаяКоллекция Цикл
Если ЭлементКоллекции.НачислитьЗарплату Тогда
СтрокаТаблицыСотрудников = ТаблицаСотрудников.Добавить();
СтрокаТаблицыСотрудников.Сотрудник = ЭлементКоллекции.Сотрудник;
ПериодЗаполнения = Документы.Увольнение.ПериодЗаполненияДокумента(ЭлементКоллекции, ДокументОбъект.ПериодРегистрации);
СтрокаТаблицыСотрудников.Начало = ПериодЗаполнения.ДатаНачала;
СтрокаТаблицыСотрудников.Окончание = ПериодЗаполнения.ДатаОкончания;
КонецЕсли;
КонецЦикла;
Если ТаблицаСотрудников.Количество() > 0 Тогда
МодульОтсутствияСотрудников = ОбщегоНазначения.ОбщийМодуль("ОтсутствияСотрудников");
МодульОтсутствияСотрудников.ПроверитьПериодыОтсутствияПоТаблицеСотрудников(ТаблицаСотрудников, Отказ);
КонецЕсли;
КонецЕсли;
ЭДОБЗК.ПроверитьВозможностьСохраненияИзмененийДокументаСПечатнымиФормами(
ДокументОбъект, Метаданные.Роли.ДобавлениеИзменениеНачисленнойЗарплатыРасширенная, Отказ);
КонецПроцедуры
Процедура ЗарегистрироватьДоходыИСуммыНДФЛПоВременнойТаблицеНачислений(РеквизитыДляПроведения, Движения, ДанныеДляПроведения, ДатаОперацииПоНалогам, Отказ, ПериодРегистрации, ДоходПолученНаТерриторииРФ)
ОкончательныйРасчет = (РеквизитыДляПроведения.ПорядокВыплаты = Перечисления.ХарактерВыплатыЗарплаты.Зарплата);
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = ДанныеДляПроведения.МенеджерВременныхТаблиц;
ВыделитьДоходПолученныйНаТерриторииРФ = Ложь;
Если ДоходПолученНаТерриторииРФ Тогда
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА КАК Поле1
|ИЗ
| ВТНачисленияДляУчетаДоходовНДФЛ КАК Т
|ГДЕ
| Т.Начисление.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.КомпенсацияОтпуска)";
ВыделитьДоходПолученныйНаТерриторииРФ = Не Запрос.Выполнить().Пустой();
КонецЕсли;
Если ВыделитьДоходПолученныйНаТерриторииРФ Тогда
Запрос.Текст =
"ВЫБРАТЬ * ПОМЕСТИТЬ ВТНачисленияДляУчетаДоходовНДФЛБезКомпенсацииОтпуска ИЗ ВТНачисленияДляУчетаДоходовНДФЛ КАК Т ГДЕ Т.Начисление.КатегорияНачисленияИлиНеоплаченногоВремени <> ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.КомпенсацияОтпуска);
|ВЫБРАТЬ * ПОМЕСТИТЬ ВТНачисленияДляУчетаДоходовНДФЛКомпенсацияОтпуска ИЗ ВТНачисленияДляУчетаДоходовНДФЛ КАК Т ГДЕ Т.Начисление.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.КомпенсацияОтпуска)";
Запрос.Выполнить();
УчетНДФЛРасширенный.СформироватьДоходыНДФЛПоНачислениям(
Движения, Отказ, РеквизитыДляПроведения.Организация, ДатаОперацииПоНалогам, РеквизитыДляПроведения.ПланируемаяДатаВыплаты,
ДанныеДляПроведения.МенеджерВременныхТаблиц, ПериодРегистрации, Ложь, ОкончательныйРасчет, "ВТНачисленияДляУчетаДоходовНДФЛБезКомпенсацииОтпуска",
РеквизитыДляПроведения.Ссылка);
УчетНДФЛРасширенный.СформироватьДоходыНДФЛПоНачислениям(
Движения, Отказ, РеквизитыДляПроведения.Организация, ДатаОперацииПоНалогам, РеквизитыДляПроведения.ПланируемаяДатаВыплаты,
ДанныеДляПроведения.МенеджерВременныхТаблиц, ПериодРегистрации, Ложь, ОкончательныйРасчет, "ВТНачисленияДляУчетаДоходовНДФЛКомпенсацияОтпуска",
РеквизитыДляПроведения.Ссылка, , ДоходПолученНаТерриторииРФ);
УдаляемыеТаблицы = Новый Массив;
УдаляемыеТаблицы.Добавить("ВТНачисленияДляУчетаДоходовНДФЛБезКомпенсацииОтпуска");
УдаляемыеТаблицы.Добавить("ВТНачисленияДляУчетаДоходовНДФЛКомпенсацияОтпуска");
ЗарплатаКадры.УничтожитьВТ(ДанныеДляПроведения.МенеджерВременныхТаблиц, УдаляемыеТаблицы);
Иначе
УчетНДФЛРасширенный.СформироватьДоходыНДФЛПоНачислениям(
Движения, Отказ, РеквизитыДляПроведения.Организация, ДатаОперацииПоНалогам, РеквизитыДляПроведения.ПланируемаяДатаВыплаты,
ДанныеДляПроведения.МенеджерВременныхТаблиц, ПериодРегистрации, Ложь, ОкончательныйРасчет, "ВТНачисленияДляУчетаДоходовНДФЛ", РеквизитыДляПроведения.Ссылка, , ДоходПолученНаТерриторииРФ);
КонецЕсли;
ОтражениеЗарплатыВУчетеРасширенный.ДополнитьСведенияОДоходахНДФЛСведениямиОРаспределенииПоСтатьям(Движения);
УчетНДФЛ.СформироватьНалогиВычеты(
Движения, Отказ, РеквизитыДляПроведения.Организация, ДатаОперацииПоНалогам, ДанныеДляПроведения.НДФЛ,, ОкончательныйРасчет, РеквизитыДляПроведения.ПланируемаяДатаВыплаты);
МесяцСоцВычета = ?(УчетНДФЛ.ДоходыУчитываютсяТолькоПоДатеВыплаты(ПериодРегистрации, -1), РеквизитыДляПроведения.ПланируемаяДатаВыплаты, ПериодРегистрации);
УчетНДФЛРасширенный.СформироватьСоциальныеВычетыПоУдержаниям(
РеквизитыДляПроведения.Ссылка, Движения, Отказ, РеквизитыДляПроведения.Организация, ДатаОперацииПоНалогам, МесяцСоцВычета, ДанныеДляПроведения.Удержания,, ОкончательныйРасчет);
ДанныеДляПроведенияУчетЗарплаты = ОтражениеЗарплатыВУчете.ОписаниеДанныеДляПроведения();
ДанныеДляПроведенияУчетЗарплаты.Движения = Движения;
ДанныеДляПроведенияУчетЗарплаты.Организация = РеквизитыДляПроведения.Организация;
ДанныеДляПроведенияУчетЗарплаты.ПериодРегистрации = ПериодРегистрации;
ДанныеДляПроведенияУчетЗарплаты.ПорядокВыплаты = РеквизитыДляПроведения.ПорядокВыплаты;
ДанныеДляПроведенияУчетЗарплаты.ОкончательныйРасчет = Истина;
ДанныеДляПроведенияУчетЗарплаты.МенеджерВременныхТаблиц = ДанныеДляПроведения.МенеджерВременныхТаблиц;
УчетНачисленнойЗарплаты.ПодготовитьДанныеНДФЛКРегистрации(ДанныеДляПроведения.НДФЛПоСотрудникам, РеквизитыДляПроведения.Организация, ДатаОперацииПоНалогам);
УчетНачисленнойЗарплаты.ЗарегистрироватьНДФЛПоСотрудникам(ДанныеДляПроведенияУчетЗарплаты, Отказ, ДанныеДляПроведения.НДФЛПоСотрудникам);
ОтражениеЗарплатыВБухучетеРасширенный.ЗарегистрироватьНачисленияУдержания(ДанныеДляПроведенияУчетЗарплаты, Отказ,
Неопределено, Неопределено, ДанныеДляПроведения.НДФЛПоСотрудникам);
КонецПроцедуры
Процедура ПроверитьПересечениеФактическогоПериодаДействия(ДокументСсылка, Отказ)
Если Отказ Тогда
Возврат;
КонецЕсли;
ИменаРеквизитов =
"ПериодРегистрации,
|Организация,
|ИсправленныйДокумент";
РеквизитыДокумента = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументСсылка, ИменаРеквизитов);
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Текст = "ВЫБРАТЬ
| Начисления.*
|ИЗ
| Документ.Увольнение.Начисления КАК Начисления
|ГДЕ
| Начисления.Ссылка = &Ссылка";
Начисления = Запрос.Выполнить().Выгрузить();
ПараметрыПроверки = РасчетЗарплатыРасширенный.ПараметрыПроверкиПересеченияФактическогоПериодаДействия();
ПараметрыПроверки.Организация = РеквизитыДокумента.Организация;
ПараметрыПроверки.ПериодРегистрации = РеквизитыДокумента.ПериодРегистрации;
ПараметрыПроверки.Документ = ДокументСсылка;
ПараметрыПроверки.Начисления = Начисления;
ПараметрыПроверки.ИсправленныйДокумент = РеквизитыДокумента.ИсправленныйДокумент;
РасчетЗарплатыРасширенный.ПроверитьПересечениеФактическогоПериодаДействия(ПараметрыПроверки, Отказ);
КонецПроцедуры
Процедура ДополнитьДвиженияПоПричинеСмертиСотрудников(РеквизитыДляПроведения, ДанныеДляПроведенияУчетЗарплаты, Движения, ДатаОперацииПоНалогам, НДФЛБухучетНачисленийУдержаний, Отказ)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НачисленияУдержанияПоСотрудникамАвансом.Период КАК Период,
| НачисленияУдержанияПоСотрудникамАвансом.Регистратор КАК Регистратор,
| НачисленияУдержанияПоСотрудникамАвансом.Организация КАК Организация,
| НачисленияУдержанияПоСотрудникамАвансом.ФизическоеЛицо КАК ФизическоеЛицо,
| НачисленияУдержанияПоСотрудникамАвансом.СтатьяФинансирования КАК СтатьяФинансирования,
| НачисленияУдержанияПоСотрудникамАвансом.СтатьяРасходов КАК СтатьяРасходов,
| НачисленияУдержанияПоСотрудникамАвансом.Сотрудник КАК Сотрудник,
| НачисленияУдержанияПоСотрудникамАвансом.Подразделение КАК Подразделение,
| НачисленияУдержанияПоСотрудникамАвансом.Подразделение КАК ПодразделениеСотрудника,
| НачисленияУдержанияПоСотрудникамАвансом.НачислениеУдержание КАК НачислениеУдержание,
| НачисленияУдержанияПоСотрудникамАвансом.НачислениеУдержание КАК ВидУдержания,
| НачисленияУдержанияПоСотрудникамАвансом.Сумма КАК Сумма,
| НачисленияУдержанияПоСотрудникамАвансом.ГруппаНачисленияУдержанияВыплаты КАК ГруппаНачисленияУдержанияВыплаты,
| НачисленияУдержанияПоСотрудникамАвансом.ПериодДействия КАК ПериодДействия,
| НачисленияУдержанияПоСотрудникамАвансом.ДатаНачала КАК ДатаНачала,
| НачисленияУдержанияПоСотрудникамАвансом.ДатаОкончания КАК ДатаОкончания,
| НачисленияУдержанияПоСотрудникамАвансом.Сторно КАК Сторно,
| НачисленияУдержанияПоСотрудникамАвансом.МестоПолученияДохода КАК МестоПолученияДохода,
| НачисленияУдержанияПоСотрудникамАвансом.ТерриторияВыполненияРаботВОрганизации КАК ТерриторияВыполненияРаботВОрганизации,
| НачисленияУдержанияПоСотрудникамАвансом.КатегорияДохода КАК КатегорияДохода,
| НачисленияУдержанияПоСотрудникамАвансом.ВидДоходаИсполнительногоПроизводства КАК ВидДоходаИсполнительногоПроизводства,
| ВЫРАЗИТЬ(НачисленияУдержанияПоСотрудникамАвансом.Регистратор КАК Документ.НачислениеЗаПервуюПоловинуМесяца).ПланируемаяДатаВыплаты КАК ДатаПолученияДохода,
| 0 КАК СуммаКорректировкиВыплаты,
| ЗНАЧЕНИЕ(Справочник.РегистрацииВНалоговомОргане.ПустаяСсылка) КАК РегистрацияВНалоговомОргане
|ИЗ
| РегистрНакопления.НачисленияУдержанияПоСотрудникамАвансом КАК НачисленияУдержанияПоСотрудникамАвансом
|ГДЕ
| НачисленияУдержанияПоСотрудникамАвансом.Организация = &Организация
| И НачисленияУдержанияПоСотрудникамАвансом.Период = &Период
| И НачисленияУдержанияПоСотрудникамАвансом.Регистратор ССЫЛКА Документ.НачислениеЗаПервуюПоловинуМесяца
| И НачисленияУдержанияПоСотрудникамАвансом.ФизическоеЛицо В(&ФизическиеЛица)
| И НачисленияУдержанияПоСотрудникамАвансом.Сотрудник В(&Сотрудники)
| И НачисленияУдержанияПоСотрудникамАвансом.НачислениеУдержание В(&НДФЛ)";
Запрос.УстановитьПараметр("Организация", РеквизитыДляПроведения.Организация);
Запрос.УстановитьПараметр("Период", РеквизитыДляПроведения.ПериодРегистрации);
Запрос.УстановитьПараметр("ФизическиеЛица", РеквизитыДляПроведения.ФизическиеЛицаУвольняемыеВСвязиСоСмертью);
Запрос.УстановитьПараметр("Сотрудники", РеквизитыДляПроведения.СотрудникиУвольняемыеВСвязиСоСмертью);
Запрос.УстановитьПараметр("НДФЛ", ОтражениеЗарплатыВУчете.ВидыОсобыхНачисленийИУдержанийНДФЛ());
РезультатЗапроса = Запрос.Выполнить();
РегистрацияВНалоговомОргане = ЗарплатаКадры.РегистрацияВНалоговомОргане(РеквизитыДляПроведения.Организация, ДатаОперацииПоНалогам);
ТаблицаНДФЛ = УчетНДФЛ.ТаблицаДвиженийСРегистрациейВНалоговомОргане(РезультатЗапроса.Выгрузить(), "ДатаПолученияДохода");
Для Каждого СтрокаТЗ Из ТаблицаНДФЛ Цикл
УчетНДФЛ.ПроставитьРегистрациюВНалоговомОрганеВСтроке(СтрокаТЗ, СтрокаТЗ.РегистрацияВНалоговомОргане, РегистрацияВНалоговомОргане);
КонецЦикла;
ВзаиморасчетыССотрудникамиБазовый.ЗарегистрироватьНачисленнуюЗарплату(Движения, Отказ, РеквизитыДляПроведения.Организация, РеквизитыДляПроведения.ПериодРегистрации, РеквизитыДляПроведения.ПорядокВыплаты, , ТаблицаНДФЛ);
НДФЛБухучетНачисленийУдержаний.Колонки.Добавить("ЗачетАвансаНДФЛ", Новый ОписаниеТипов("Булево"));
Для Каждого СтрокаТЗ Из ТаблицаНДФЛ Цикл
НоваяСтрока = Движения.НачисленияУдержанияПоСотрудникам.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТЗ);
НоваяСтрока = НДФЛБухучетНачисленийУдержаний.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТЗ);
НоваяСтрока.МесяцНалоговогоПериода = СтрокаТЗ.ДатаПолученияДохода;
НоваяСтрока.Подразделение = СтрокаТЗ.ТерриторияВыполненияРаботВОрганизации;
НоваяСтрока.ЗачетАвансаНДФЛ = Истина;
КонецЦикла;
ОтражениеЗарплатыВБухучетеРасширенный.ЗарегистрироватьНачисленияУдержания(ДанныеДляПроведенияУчетЗарплаты, Отказ, Неопределено, Неопределено, НДФЛБухучетНачисленийУдержаний);
КонецПроцедуры
Функция ЗапросВТНачисленияПоДокументу(МенеджерВременныхТаблиц, ПериодРегистрации, ЭтоПервыйПериод)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("ПериодРегистрации", ПериодРегистрации);
Запрос.Текст =
"ВЫБРАТЬ * ПОМЕСТИТЬ ВТНачисления ИЗ ВТВсеНачисленияДокумента КАК Т ГДЕ &УсловиеПериода;
|ВЫБРАТЬ * ПОМЕСТИТЬ ВТНачисленияДляУчетаДоходовНДФЛ ИЗ ВТВсеНачисленияДляУчетаДоходовНДФЛДокумента КАК Т ГДЕ &УсловиеПериода";
Если ЭтоПервыйПериод Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеПериода", "Т.ПериодРегистрации <= &ПериодРегистрации");
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеПериода", "Т.ПериодРегистрации = &ПериодРегистрации");
КонецЕсли;
Возврат Запрос;
КонецФункции
#КонецОбласти
Функция ДанныеДляПоказателейСверхурочных(ДокументСсылка) Экспорт
ЗначенияПоказателей = Новый ТаблицаЗначений;
ПереработаноПоСуммированномуУчетуВПределах2Часов = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ПоказателиРасчетаЗарплаты.ПереработаноПоСуммированномуУчетуВПределах2Часов");
ПереработаноПоСуммированномуУчету = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ПоказателиРасчетаЗарплаты.ПереработаноПоСуммированномуУчету");
Если ПереработаноПоСуммированномуУчетуВПределах2Часов = Неопределено ИЛИ ПереработаноПоСуммированномуУчету = Неопределено Тогда
Возврат ЗначенияПоказателей;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.УстановитьПараметр("ПереработаноПоСуммированномуУчетуВПределах2Часов", ПереработаноПоСуммированномуУчетуВПределах2Часов);
Запрос.УстановитьПараметр("ПереработаноПоСуммированномуУчету", ПереработаноПоСуммированномуУчету);
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаДокумента.Сотрудник,
| ТаблицаДокумента.ФизическоеЛицо,
| НАЧАЛОПЕРИОДА(ТаблицаДокумента.ДатаУвольнения, МЕСЯЦ) КАК ПериодДействия,
| ТаблицаДокумента.Ссылка.Организация КАК Организация,
| &ПереработаноПоСуммированномуУчету КАК Показатель,
| ТаблицаДокумента.Сверхурочно1_5 + ТаблицаДокумента.Сверхурочно2 КАК Значение
|ИЗ
| Документ.Увольнение КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.Ссылка = &Ссылка
| И ТаблицаДокумента.Сверхурочно1_5 + ТаблицаДокумента.Сверхурочно2 > 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаДокумента.Сотрудник,
| ТаблицаДокумента.ФизическоеЛицо,
| НАЧАЛОПЕРИОДА(ТаблицаДокумента.ДатаУвольнения, МЕСЯЦ),
| ТаблицаДокумента.Ссылка.Организация,
| &ПереработаноПоСуммированномуУчетуВПределах2Часов,
| ТаблицаДокумента.Сверхурочно1_5
|ИЗ
| Документ.Увольнение КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.Ссылка = &Ссылка
| И ТаблицаДокумента.Сверхурочно1_5 > 0";
Если ТипЗнч(ДокументСсылка) <> Тип("ДокументСсылка.Увольнение") Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Документ.Увольнение", "Документ.УвольнениеСписком.Сотрудники");
КонецЕсли;
ЗначенияПоказателей = Запрос.Выполнить().Выгрузить();
Возврат ЗначенияПоказателей;
КонецФункции
Процедура ЗаписатьЗначенияПоказателейРасчетаЗарплаты(Движения, ТаблицаЗначенийПоказателей)
Для Каждого СтрокаЗначений Из ТаблицаЗначенийПоказателей Цикл
НаборЗаписей = Движения.ЗначенияРазовыхПоказателейРасчетаЗарплатыСотрудников;
ЗаполнитьЗначенияСвойств(НаборЗаписей.Добавить(), СтрокаЗначений);
НаборЗаписей.Записывать = Истина;
КонецЦикла;
КонецПроцедуры
Функция ДанныеДляСторнированияУдержанийЗаОтпуск(ДокументСсылка) Экспорт
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.УстановитьПараметр("ПризнакКомпенсацииУдержания", Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.УдержатьЗаИспользованныеАвансом);
Запрос.Текст =
"ВЫБРАТЬ
| Увольнение.ВидРасчетаКомпенсацииУдержанияОтпуска КАК Удержание
|ПОМЕСТИТЬ ВТВидыУдержаний
|ИЗ
| Документ.Увольнение КАК Увольнение
|ГДЕ
| Увольнение.ПризнакКомпенсацииУдержанияОтпуска = &ПризнакКомпенсацииУдержания
| И Увольнение.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УвольнениеДополнительныеОтпуска.ВидРасчетаКомпенсацииУдержания
|ИЗ
| Документ.Увольнение.ДополнительныеОтпуска КАК УвольнениеДополнительныеОтпуска
|ГДЕ
| УвольнениеДополнительныеОтпуска.ПризнакКомпенсацииУдержания = &ПризнакКомпенсацииУдержания
| И УвольнениеДополнительныеОтпуска.Ссылка = &Ссылка";
Запрос.Выполнить();
Запрос.Текст =
"ВЫБРАТЬ
| УвольнениеУдержания.ФизическоеЛицо,
| УвольнениеУдержания.ДатаНачала,
| УвольнениеУдержания.ДатаОкончания,
| УвольнениеУдержания.Удержание,
| УвольнениеУдержания.ДокументОснование,
| УвольнениеУдержания.Получатель,
| УвольнениеУдержания.ПлатежныйАгент,
| УвольнениеУдержания.Результат * -1 КАК Результат,
| ИСТИНА КАК ФиксРасчет,
| ИСТИНА КАК ФиксЗаполнение,
| ИСТИНА КАК ФиксСтрока,
| УвольнениеУдержания.ИдентификаторСтрокиВидаРасчета
|ИЗ
| ВТВидыУдержаний КАК ВТВидыУдержаний
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.Увольнение.Удержания КАК УвольнениеУдержания
| ПО ВТВидыУдержаний.Удержание = УвольнениеУдержания.Удержание
| И (УвольнениеУдержания.Ссылка = &Ссылка)
|;
|
|
|ВЫБРАТЬ
| УвольнениеПоказатели.Показатель,
| УвольнениеПоказатели.Значение,
| УвольнениеПоказатели.ИдентификаторСтрокиВидаРасчета
|ИЗ
| ВТВидыУдержаний КАК ВТВидыУдержаний
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.Увольнение.Удержания КАК УвольнениеУдержания
| ПО ВТВидыУдержаний.Удержание = УвольнениеУдержания.Удержание
| И (УвольнениеУдержания.Ссылка = &Ссылка)
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.Увольнение.Показатели КАК УвольнениеПоказатели
| ПО (УвольнениеУдержания.ИдентификаторСтрокиВидаРасчета = УвольнениеПоказатели.ИдентификаторСтрокиВидаРасчета)
| И (УвольнениеПоказатели.Ссылка = &Ссылка)";
Результат = Запрос.ВыполнитьПакет();
ДанныеДляСторнирования = Новый Структура("Удержания, Показатели");
ДанныеДляСторнирования.Вставить("Удержания", Результат[0].Выгрузить());
ДанныеДляСторнирования.Вставить("Показатели", Результат[1].Выгрузить());
Возврат ДанныеДляСторнирования;
КонецФункции
Функция ВидыОтпусковОбъекта(ТекущийОбъект) Экспорт
МассивВидовОтпусков = Новый Массив;
Если ТекущийОбъект.ПризнакКомпенсацииУдержанияОтпуска = ПредопределенноеЗначение("Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.КомпенсироватьНеИспользованные")
ИЛИ ТекущийОбъект.ПризнакКомпенсацииУдержанияОтпуска = ПредопределенноеЗначение("Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.УдержатьЗаИспользованныеАвансом") Тогда
МассивВидовОтпусков.Добавить(ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыОтпусков.Основной"));
КонецЕсли;
Для каждого ДополнительныйОтпуск Из ТекущийОбъект.ДополнительныеОтпуска Цикл
Если ДополнительныйОтпуск.ПризнакКомпенсацииУдержания = ПредопределенноеЗначение("Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.КомпенсироватьНеИспользованные")
ИЛИ ДополнительныйОтпуск.ПризнакКомпенсацииУдержания = ПредопределенноеЗначение("Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.УдержатьЗаИспользованныеАвансом") Тогда
МассивВидовОтпусков.Добавить(ДополнительныйОтпуск.ВидОтпуска);
КонецЕсли;
КонецЦикла;
Возврат МассивВидовОтпусков;
КонецФункции
Функция НеобходимоЗаполнитьВидРасчетаКомпенсацииУдержания(ПризнакКомпенсацииУдержания, СпособУдержанияИзлишнеНачисленныхОтпускных, ВидРасчетаКомпенсацииУдержания) Экспорт
Если ПризнакКомпенсацииУдержания <> Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.НеИспользовать Тогда
Если СпособУдержанияИзлишнеНачисленныхОтпускных = ПредопределенноеЗначение("Перечисление.СпособыУдержанияИзлишнеНачисленныхОтпускных.СторнированиеРанееНачисленныхСумм")
И ПризнакКомпенсацииУдержания = ПредопределенноеЗначение("Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.УдержатьЗаИспользованныеАвансом") Тогда
Возврат Ложь;
Иначе
Возврат (ПризнакКомпенсацииУдержания = ПредопределенноеЗначение("Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.КомпенсироватьНеИспользованные")
И ТипЗнч(ВидРасчетаКомпенсацииУдержания) <> Тип("ПланВидовРасчетаСсылка.Начисления")
Или ПризнакКомпенсацииУдержания = ПредопределенноеЗначение("Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.УдержатьЗаИспользованныеАвансом")
И ТипЗнч(ВидРасчетаКомпенсацииУдержания) <> Тип("ПланВидовРасчетаСсылка.Удержания")
Или Не ЗначениеЗаполнено(ВидРасчетаКомпенсацииУдержания));
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
Процедура УстановитьФлагНачислитьЗарплату(ПараметрыОбновления = Неопределено) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 1000
| Увольнение.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ВТДокументыКОбновлению
|ИЗ
| Документ.Увольнение КАК Увольнение
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.Увольнение.Начисления КАК УвольнениеНачисления
| ПО Увольнение.Ссылка = УвольнениеНачисления.Ссылка
|ГДЕ
| НЕ Увольнение.НачислитьЗарплату
| И ЕСТЬNULL(УвольнениеНачисления.Начисление.ЗачетНормыВремени, ЛОЖЬ)
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 1000
| Увольнение.Ссылка
|ИЗ
| Документ.Увольнение КАК Увольнение
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.Увольнение.Пособия КАК УвольнениеПособия
| ПО Увольнение.Ссылка = УвольнениеПособия.Ссылка
|ГДЕ
| НЕ Увольнение.НачислитьЗарплату
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 1000
| ДокументыКОбновлению.Ссылка КАК Ссылка
|ИЗ
| ВТДокументыКОбновлению КАК ДокументыКОбновлению";
Если ПараметрыОбновления = Неопределено Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "ПЕРВЫЕ 1000","");
КонецЕсли;
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.УстановитьПараметрОбновления(ПараметрыОбновления, "ОбработкаЗавершена", Ложь);
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Если Не ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ПодготовитьОбновлениеДанных(ПараметрыОбновления, "Документ.Увольнение", "Ссылка", Выборка.Ссылка) Тогда
Продолжить;
КонецЕсли;
ДокументУвольнение = Выборка.Ссылка.ПолучитьОбъект();
ДокументУвольнение.НачислитьЗарплату = Истина;
ДокументУвольнение.ДополнительныеСвойства.Вставить("ОтключитьПроверкуДатыЗапретаИзменения", Истина);
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ДокументУвольнение);
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ЗавершитьОбновлениеДанных(ПараметрыОбновления);
КонецЦикла;
Иначе
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.УстановитьПараметрОбновления(ПараметрыОбновления, "ОбработкаЗавершена", Истина);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьПериодыРегистрацииНачислений(ПараметрыОбновления = Неопределено) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 1000
| УвольнениеНачисления.Ссылка КАК Ссылка
|ИЗ
| Документ.Увольнение.Начисления КАК УвольнениеНачисления
|ГДЕ
| УвольнениеНачисления.ПериодРегистрации = ДАТАВРЕМЯ(1, 1, 1)";
Если ПараметрыОбновления = Неопределено Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "ПЕРВЫЕ 1000","");
КонецЕсли;
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.УстановитьПараметрОбновления(ПараметрыОбновления, "ОбработкаЗавершена", Истина);
Иначе
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.УстановитьПараметрОбновления(ПараметрыОбновления, "ОбработкаЗавершена", Ложь);
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Если Не ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ПодготовитьОбновлениеДанных(ПараметрыОбновления, "Документ.Увольнение", "Ссылка", Выборка.Ссылка) Тогда
Продолжить;
КонецЕсли;
ДокументУвольнение = Выборка.Ссылка.ПолучитьОбъект();
ЗаполнитьПериодРегистрацииВТабличнойЧастиНачислений(ДокументУвольнение);
ДокументУвольнение.ДополнительныеСвойства.Вставить("ОтключитьПроверкуДатыЗапретаИзменения", Истина);
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ДокументУвольнение);
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ЗавершитьОбновлениеДанных(ПараметрыОбновления);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьПериодРегистрацииВТабличнойЧастиНачислений(ДокументУвольнение) Экспорт
Для Каждого СтрокаТабличнойЧасти Из ДокументУвольнение.Начисления Цикл
СтрокаТабличнойЧасти.ПериодРегистрации = ДокументУвольнение.ПериодРегистрации;
КонецЦикла;
Для Каждого СтрокаТабличнойЧасти Из ДокументУвольнение.НачисленияПерерасчет Цикл
СтрокаТабличнойЧасти.ПериодРегистрации = ДокументУвольнение.ПериодРегистрации;
КонецЦикла;
Для Каждого СтрокаТабличнойЧасти Из ДокументУвольнение.Пособия Цикл
СтрокаТабличнойЧасти.ПериодРегистрации = ДокументУвольнение.ПериодРегистрации;
КонецЦикла;
Для Каждого СтрокаТабличнойЧасти Из ДокументУвольнение.ПособияПерерасчет Цикл
СтрокаТабличнойЧасти.ПериодРегистрации = ДокументУвольнение.ПериодРегистрации;
КонецЦикла;
Для Каждого СтрокаТабличнойЧасти Из ДокументУвольнение.Льготы Цикл
СтрокаТабличнойЧасти.ПериодРегистрации = ДокументУвольнение.ПериодРегистрации;
КонецЦикла;
КонецПроцедуры
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
#Область ПараметрыВыбораНачислений
Функция ДополнительныеПараметрыВыбораНачислений(Документ, ПутьКРеквизиту) Экспорт
Результат = Новый Соответствие;
Если ПутьКРеквизиту = "ВидРасчетаКомпенсацииУдержанияОтпуска" Тогда
Если Документ.РасчетДенежногоСодержания Тогда
Категория = Перечисления.КатегорииНачисленийИНеоплаченногоВремени.ДенежноеСодержаниеКомпенсацияОтпуска;
Если Документ.РасчетДенежногоСодержания
И ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужба");
Результат.Вставить("ОтборНачисленийГосслужбы", Модуль.НачисленияКомпенсацииГосслужащим(Категория, Документ.ДатаУвольнения));
КонецЕсли;
Иначе
Категория = Перечисления.КатегорииНачисленийИНеоплаченногоВремени.КомпенсацияОтпуска;
КонецЕсли;
ИначеЕсли ПутьКРеквизиту = "ВидРасчетаКомпенсацияНеИспользованныхДнейОтдыха"
Или ПутьКРеквизиту = "ВидРасчетаКомпенсацияНеИспользованныхЧасовОтдыха" Тогда
Категория = Перечисления.КатегорииНачисленийИНеоплаченногоВремени.КомпенсацияНеИспользованныхДнейЧасовОтдыха;
Результат.Вставить("Отбор.УчетВремениВЧасах", ПутьКРеквизиту = "ВидРасчетаКомпенсацияНеИспользованныхЧасовОтдыха");
КонецЕсли;
Результат.Вставить("Отбор.КатегорияНачисленияИлиНеоплаченногоВремени", Категория);
Возврат Результат;
КонецФункции
Функция ДополнительныеПараметрыВыбораУдержаний(Документ, ПутьКРеквизиту) Экспорт
Результат = Новый Соответствие;
Если ПутьКРеквизиту = "ВидРасчетаКомпенсацииУдержанияОтпуска" Тогда
Если Документ.РасчетДенежногоСодержания Тогда
Категория = Перечисления.КатегорииУдержаний.ДенежноеСодержаниеУдержаниеЗаНеотработанныеДниОтпуска;
Если Документ.РасчетДенежногоСодержания
И ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужба");
Результат.Вставить("ОтборНачисленийГосслужбы", Модуль.НачисленияКомпенсацииГосслужащим(Категория, Документ.ДатаУвольнения));
КонецЕсли;
Иначе
Категория = Перечисления.КатегорииУдержаний.УдержаниеЗаНеотработанныеДниОтпуска;
КонецЕсли;
КонецЕсли;
Результат.Вставить("Отбор.КатегорияНачисленияИлиНеоплаченногоВремени", Категория);
Возврат Результат;
КонецФункции
#КонецОбласти
Процедура ЗаполнитьДатуЗапретаРедактирования(ОбъектДокумента) Экспорт
ЗарплатаКадры.ЗаполнитьДатуЗапретаРедактирования(ОбъектДокумента, "ДатаУвольнения");
КонецПроцедуры
Процедура ЗаполнитьДатыЗапрета(ПараметрыОбновления) Экспорт
ОбновлениеВыполнено = Истина;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 100
| Увольнение.Ссылка КАК Ссылка,
| Увольнение.Дата КАК Дата
|ИЗ
| Документ.Увольнение КАК Увольнение
|ГДЕ
| Увольнение.ДатаЗапрета = ДАТАВРЕМЯ(1, 1, 1)
|
|УПОРЯДОЧИТЬ ПО
| Увольнение.Дата УБЫВ";
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
ОбновлениеВыполнено = Ложь;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Если Не ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ПодготовитьОбновлениеДанных(
ПараметрыОбновления, Выборка.Ссылка.Метаданные().ПолноеИмя(), "Ссылка", Выборка.Ссылка) Тогда
Продолжить;
КонецЕсли;
ОбъектДокумента = Выборка.Ссылка.ПолучитьОбъект();
МенеджерДокумента = ОбщегоНазначения.МенеджерОбъектаПоСсылке(Выборка.Ссылка);
МенеджерДокумента.ЗаполнитьДатуЗапретаРедактирования(ОбъектДокумента);
ОбъектДокумента.ДополнительныеСвойства.Вставить("ОтключитьПроверкуДатыЗапретаИзменения", Истина);
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ОбъектДокумента);
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ЗавершитьОбновлениеДанных(ПараметрыОбновления);
КонецЦикла;
КонецЕсли;
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.УстановитьПараметрОбновления(ПараметрыОбновления, "ОбработкаЗавершена", ОбновлениеВыполнено);
КонецПроцедуры
Процедура ЗаполнитьДатуРасчетаДенежногоСодержания(ПараметрыОбновления = Неопределено) Экспорт
ОбновлениеВыполнено = Истина;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 100
| Увольнение.Ссылка КАК Ссылка,
| Увольнение.ДатаУвольнения КАК ДатаРасчетаДенежногоСодержания
|ИЗ
| Документ.Увольнение КАК Увольнение
|ГДЕ
| Увольнение.ДатаРасчетаДенежногоСодержания = ДАТАВРЕМЯ(1, 1, 1)
| И Увольнение.ДатаУвольнения <> ДАТАВРЕМЯ(1, 1, 1)
|
|УПОРЯДОЧИТЬ ПО
| Увольнение.Дата УБЫВ";
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
ОбновлениеВыполнено = Ложь;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Если Не ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ПодготовитьОбновлениеДанных(
ПараметрыОбновления, Выборка.Ссылка.Метаданные().ПолноеИмя(), "Ссылка", Выборка.Ссылка) Тогда
Продолжить;
КонецЕсли;
ОбъектДокумента = Выборка.Ссылка.ПолучитьОбъект();
ОбъектДокумента.ДатаРасчетаДенежногоСодержания = Выборка.ДатаРасчетаДенежногоСодержания;
ОбъектДокумента.ДополнительныеСвойства.Вставить("ОтключитьПроверкуДатыЗапретаИзменения", Истина);
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ОбъектДокумента);
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ЗавершитьОбновлениеДанных(ПараметрыОбновления);
КонецЦикла;
КонецЕсли;
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.УстановитьПараметрОбновления(ПараметрыОбновления, "ОбработкаЗавершена", ОбновлениеВыполнено);
КонецПроцедуры
Процедура ЗаполнитьПериодРасчетаСохраняемогоДенежногоСодержания(ПараметрыОбновления = Неопределено) Экспорт
ОбновлениеВыполнено = Истина;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 100
| Увольнение.Ссылка КАК Ссылка,
| Увольнение.ПериодРасчетаСреднегоЗаработкаНачало КАК ПериодРасчетаСохраняемогоСодержанияНачало,
| Увольнение.ПериодРасчетаСреднегоЗаработкаОкончание КАК ПериодРасчетаСохраняемогоСодержанияОкончание,
| Увольнение.ФиксПериодРасчетаСреднегоЗаработка КАК ФиксПериодРасчетаСохраняемогоСодержания
|ИЗ
| Документ.Увольнение КАК Увольнение
|ГДЕ
| Увольнение.ПериодРасчетаСохраняемогоСодержанияНачало = ДАТАВРЕМЯ(1, 1, 1)
| И (Увольнение.СохраняемоеДенежноеСодержание <> 0
| ИЛИ Увольнение.МесячноеДенежноеСодержание <> 0)
|
|УПОРЯДОЧИТЬ ПО
| Увольнение.Дата УБЫВ";
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
ОбновлениеВыполнено = Ложь;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Если Не ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ПодготовитьОбновлениеДанных(
ПараметрыОбновления, Выборка.Ссылка.Метаданные().ПолноеИмя(), "Ссылка", Выборка.Ссылка) Тогда
Продолжить;
КонецЕсли;
ОбъектДокумента = Выборка.Ссылка.ПолучитьОбъект();
ЗаполнитьЗначенияСвойств(ОбъектДокумента, Выборка, "ПериодРасчетаСохраняемогоСодержанияНачало,ПериодРасчетаСохраняемогоСодержанияОкончание,ФиксПериодРасчетаСохраняемогоСодержания");
ОбъектДокумента.ДополнительныеСвойства.Вставить("ОтключитьПроверкуДатыЗапретаИзменения", Истина);
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ОбъектДокумента);
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ЗавершитьОбновлениеДанных(ПараметрыОбновления);
КонецЦикла;
КонецЕсли;
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.УстановитьПараметрОбновления(ПараметрыОбновления, "ОбработкаЗавершена", ОбновлениеВыполнено);
КонецПроцедуры
Процедура ЗаполнитьИсходныеДанныеПерерасчетов(ПараметрыОбновления) Экспорт
ПараметрыЗаполнения = ПерерасчетЗарплаты.ПараметрыЗаполненияИсходныхДанныхПерерасчетов();
ПараметрыЗаполнения.ТаблицыНачислений = "Начисления,НачисленияПерерасчет,Пособия,ПособияПерерасчет,Льготы";
ПерерасчетЗарплаты.ЗаполнитьИсходныеДанныеПерерасчетов(ПараметрыОбновления, Метаданные.Документы.Увольнение, ПараметрыЗаполнения);
КонецПроцедуры
Функция ПериодЗаполненияДокумента(ОбъектДокумента, ПериодРегистрации) Экспорт
ПериодЗаполнения = Новый СтандартныйПериод;
Если ОбъектДокумента.НачислитьЗарплату Тогда
ПериодЗаполнения.ДатаНачала = Мин(ОбъектДокумента.МесяцНачалаРасчетов, НачалоМесяца(ОбъектДокумента.ДатаУвольнения));
Иначе
ПериодЗаполнения.ДатаНачала = НачалоМесяца(ОбъектДокумента.ДатаУвольнения);
КонецЕсли;
ПериодЗаполнения.ДатаОкончания = КонецМесяца(ПериодРегистрации);
Возврат ПериодЗаполнения;
КонецФункции
Процедура ЗаполнитьУвольнениеСОсновногоМестаРаботы(ПараметрыОбновления) Экспорт
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Если ПараметрыОбновления.Свойство("ОбработанныеДокументы") Тогда
ОбработанныеДокументы = ПараметрыОбновления.ОбработанныеДокументы;
Иначе
ОбработанныеДокументы = Новый Массив;
КонецЕсли;
Запрос.УстановитьПараметр("ОбработанныеДокументы", ОбработанныеДокументы);
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1000
| Увольнение.Ссылка КАК Ссылка,
| Увольнение.Сотрудник КАК Сотрудник,
| Увольнение.ДатаУвольнения КАК Период
|ПОМЕСТИТЬ ВТСотрудникиПериоды
|ИЗ
| Документ.Увольнение КАК Увольнение
|ГДЕ
| НЕ Увольнение.УвольнениеСОсновногоМестаРаботы
| И НЕ Увольнение.Ссылка В (&ОбработанныеДокументы)
| И Увольнение.Проведен
|;
|
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| СотрудникиПериоды.Ссылка КАК Ссылка
|ИЗ
| ВТСотрудникиПериоды КАК СотрудникиПериоды";
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ЗавершитьОбработчик(ПараметрыОбновления);
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ПродолжитьОбработчик(ПараметрыОбновления);
ЗарплатаКадрыОбщиеНаборыДанных.СоздатьВТИмяРегистраСрезПоследних(
"ВидыЗанятостиСотрудников",
Запрос.МенеджерВременныхТаблиц,
Ложь,
ЗарплатаКадрыОбщиеНаборыДанных.ОписаниеФильтраДляСоздатьВТИмяРегистра("ВТСотрудникиПериоды", "Сотрудник"));
Запрос.Текст =
"ВЫБРАТЬ
| СотрудникиПериоды.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА ВидыЗанятостиСотрудников.ВидЗанятости В (ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы), ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство))
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК УвольнениеСОсновногоМестаРаботы
|ИЗ
| ВТСотрудникиПериоды КАК СотрудникиПериоды
| ЛЕВОЕ СОЕДИНЕНИЕ ВТВидыЗанятостиСотрудниковСрезПоследних КАК ВидыЗанятостиСотрудников
| ПО СотрудникиПериоды.Период = ВидыЗанятостиСотрудников.Период
| И СотрудникиПериоды.Сотрудник = ВидыЗанятостиСотрудников.Сотрудник";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Не Выборка.УвольнениеСОсновногоМестаРаботы Тогда
ОбработанныеДокументы.Добавить(Выборка.Ссылка);
Продолжить;
КонецЕсли;
Если Не ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ПодготовитьОбновлениеДанных(
ПараметрыОбновления, Выборка.Ссылка.Метаданные().ПолноеИмя(), "Ссылка", Выборка.Ссылка) Тогда
Продолжить;
КонецЕсли;
УвольнениеОбъект = Выборка.Ссылка.ПолучитьОбъект();
УвольнениеОбъект.УвольнениеСОсновногоМестаРаботы = Истина;
УвольнениеОбъект.ДополнительныеСвойства.Вставить("ОтключитьПроверкуДатыЗапретаИзменения", Истина);
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(УвольнениеОбъект);
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ЗавершитьОбновлениеДанных(ПараметрыОбновления);
ОбработанныеДокументы.Добавить(Выборка.Ссылка);
КонецЦикла;
ПараметрыОбновления.Вставить("ОбработанныеДокументы", ОбработанныеДокументы);
КонецПроцедуры
Процедура ОчиститьСведенияОДоходахУмершихСотрудников(Движения, ФизическиеЛицаУвольняемыеВСвязиСоСмертью, СтруктураВидовУчета)
Если ФизическиеЛицаУвольняемыеВСвязиСоСмертью.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Если СтруктураВидовУчета.СтраховыеВзносы Тогда
УдалитьЗаписиДвижений(Движения.СведенияОДоходахСтраховыеВзносы, ФизическиеЛицаУвольняемыеВСвязиСоСмертью, Истина);
КонецЕсли;
Если СтруктураВидовУчета.ОстальныеВидыУчета Тогда
УдалитьЗаписиДвижений(Движения.СведенияОДоходахНДФЛ, ФизическиеЛицаУвольняемыеВСвязиСоСмертью, Ложь);
УдалитьЗаписиДвижений(Движения.ДокументыУчтенныеПриРасчетеНДФЛ, ФизическиеЛицаУвольняемыеВСвязиСоСмертью, Ложь);
КонецЕсли;
КонецПроцедуры
Процедура УдалитьЗаписиДвижений(НаборЗаписей, ФизическиеЛицаУвольняемыеВСвязиСоСмертью, ЗаписатьДвижения)
ЗаписиКУдалению = Новый Массив;
Для Каждого ФизическоеЛицо Из ФизическиеЛицаУвольняемыеВСвязиСоСмертью Цикл
Для Каждого Запись Из НаборЗаписей Цикл
Если Запись.ФизическоеЛицо = ФизическоеЛицо Тогда
ЗаписиКУдалению.Добавить(Запись);
КонецЕсли;
КонецЦикла;
КонецЦикла;
Если ЗаписиКУдалению.Количество() > 0 Тогда
НаборЗаписей.Записывать = Истина;
Для Каждого Запись Из ЗаписиКУдалению Цикл
НаборЗаписей.Удалить(Запись);
КонецЦикла;
КонецЕсли;
Если ЗаписатьДвижения Тогда
НаборЗаписей.Записать();
НаборЗаписей.Записывать = Ложь;
КонецЕсли;
КонецПроцедуры
Функция ДанныеДляПроведенияМероприятияТрудовойДеятельности(СсылкаНаДокумент, ТолькоПроведенные = Ложь) Экспорт
ДанныеДляПроведения = Новый Соответствие;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", СсылкаНаДокумент);
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаДокумента.Ссылка КАК Ссылка,
| ТаблицаДокумента.Номер КАК Номер,
| ТаблицаДокумента.НомерПриказа КАК НомерПриказа,
| ТаблицаДокумента.ФизическоеЛицо КАК ФизическоеЛицо,
| ТаблицаДокумента.Организация КАК Организация,
| ТаблицаДокумента.Сотрудник КАК Сотрудник,
| ТаблицаДокумента.ДатаУвольнения КАК ДатаМероприятия,
| ТаблицаДокумента.НаименованиеДокумента КАК НаименованиеДокументаОснования,
| ЕСТЬNULL(ЕСТЬNULL(ТаблицаДокумента.ИсправленныйДокумент.ИсправленныйДокумент.Номер, ТаблицаДокумента.ИсправленныйДокумент.Номер), ТаблицаДокумента.Номер) КАК НомерДокументаОснования,
| ЕСТЬNULL(ЕСТЬNULL(ТаблицаДокумента.ИсправленныйДокумент.ИсправленныйДокумент.Дата, ТаблицаДокумента.ИсправленныйДокумент.Дата), ТаблицаДокумента.Дата) КАК ДатаДокументаОснования,
| ТаблицаДокумента.ИсправленныйДокумент.ИсправленныйДокумент.ИсправленныйДокумент КАК ИсправленныйДокумент,
| ТаблицаДокумента.НаименованиеВторогоДокументаОснования КАК НаименованиеВторогоДокументаОснования,
| ТаблицаДокумента.СерияВторогоДокументаОснования КАК СерияВторогоДокументаОснования,
| ТаблицаДокумента.НомерВторогоДокументаОснования КАК НомерВторогоДокументаОснования,
| ТаблицаДокумента.ДатаВторогоДокументаОснования КАК ДатаВторогоДокументаОснования,
| ТаблицаДокумента.СтатьяТКРФ КАК ОснованиеУвольнения,
| ЗНАЧЕНИЕ(Перечисление.ВидыМероприятийТрудовойДеятельности.Увольнение) КАК ВидМероприятия,
| 1 КАК НомерСтроки,
| ТаблицаДокумента.ОтразитьТерриториальныеУсловияПоТерриторииВыполненияРабот КАК ОтразитьТерриториальныеУсловияПоТерриторииВыполненияРабот
|ИЗ
| Документ.Увольнение КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.Ссылка В(&Ссылка)
| И ТаблицаДокумента.ОтразитьВТрудовойКнижке
| И &ТолькоПроведенные
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаДокумента.Ссылка,
| ТаблицаДокумента.Ссылка.Номер,
| ТаблицаДокумента.Ссылка.НомерПриказа,
| ТаблицаДокумента.ФизическоеЛицо,
| ТаблицаДокумента.Ссылка.Организация,
| ТаблицаДокумента.Сотрудник,
| ТаблицаДокумента.ДатаУвольнения,
| ТаблицаДокумента.Ссылка.НаименованиеДокумента,
| ЕСТЬNULL(ЕСТЬNULL(ТаблицаДокумента.Ссылка.ИсправленныйДокумент.ИсправленныйДокумент.Номер, ТаблицаДокумента.Ссылка.ИсправленныйДокумент.Номер), ТаблицаДокумента.Ссылка.Номер),
| ЕСТЬNULL(ЕСТЬNULL(ТаблицаДокумента.Ссылка.ИсправленныйДокумент.ИсправленныйДокумент.Дата, ТаблицаДокумента.Ссылка.ИсправленныйДокумент.Дата), ТаблицаДокумента.Ссылка.Дата),
| ТаблицаДокумента.Ссылка.ИсправленныйДокумент.ИсправленныйДокумент.ИсправленныйДокумент,
| ТаблицаДокумента.Ссылка.НаименованиеВторогоДокументаОснования,
| ТаблицаДокумента.Ссылка.СерияВторогоДокументаОснования,
| ТаблицаДокумента.Ссылка.НомерВторогоДокументаОснования,
| ТаблицаДокумента.Ссылка.ДатаВторогоДокументаОснования,
| ТаблицаДокумента.СтатьяТКРФ,
| ЗНАЧЕНИЕ(Перечисление.ВидыМероприятийТрудовойДеятельности.Увольнение),
| ТаблицаДокумента.НомерСтроки,
| ТаблицаДокумента.ОтразитьТерриториальныеУсловияПоТерриторииВыполненияРабот
|ИЗ
| Документ.УвольнениеСписком.Сотрудники КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.Ссылка В(&Ссылка)
| И ТаблицаДокумента.ОтразитьВТрудовойКнижке
| И &ТолькоПроведенные
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки";
Если ТолькоПроведенные Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТолькоПроведенные", "ТаблицаДокумента.Ссылка.Проведен");
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТолькоПроведенные", "ИСТИНА");
КонецЕсли;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.СледующийПоЗначениюПоля("Ссылка") Цикл
ДвиженияДокумента = Новый Массив;
ДанныеДляПроведения.Вставить(Выборка.Ссылка, ДвиженияДокумента);
Пока Выборка.Следующий() Цикл
Запись = ЭлектронныеТрудовыеКнижки.ЗаписьДвиженияМероприятияТрудовойДеятельности(Выборка);
Если ЗначениеЗаполнено(Выборка.ИсправленныйДокумент) Тогда
ЗаполнитьЗначенияСвойств(Запись, ЭлектронныеТрудовыеКнижкиРасширенный.ДатаНомерИсправленногоДокументаОснования(Выборка.ИсправленныйДокумент, Выборка.НомерПриказа));
КонецЕсли;
ДвиженияДокумента.Добавить(Запись);
КонецЦикла;
КонецЦикла;
Возврат ДанныеДляПроведения;
КонецФункции
Процедура СформироватьНаборыЗаписейМероприятияТрудовойДеятельности(МероприятияТрудовойДеятельности, ПараметрыОбновления) Экспорт
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Если ПараметрыОбновления = Неопределено Тогда
МассивОбновленных = Новый Массив;
Иначе
Если ПараметрыОбновления.Свойство("МассивОбновленных") Тогда
МассивОбновленных = ПараметрыОбновления.МассивОбновленных;
Иначе
МассивОбновленных = Новый Массив;
ПараметрыОбновления.Вставить("МассивОбновленных", МассивОбновленных);
КонецЕсли;
КонецЕсли;
Запрос.УстановитьПараметр("МассивОбновленных", МассивОбновленных);
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1000
| ТаблицаДокумента.Ссылка КАК Ссылка
|ИЗ
| Документ.Увольнение КАК ТаблицаДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МероприятияТрудовойДеятельности КАК Мероприятия
| ПО ТаблицаДокумента.Ссылка = Мероприятия.Регистратор
|ГДЕ
| НЕ ТаблицаДокумента.Ссылка В (&МассивОбновленных)
| И ТаблицаДокумента.Проведен
| И ТаблицаДокумента.ОтразитьВТрудовойКнижке
| И Мероприятия.Регистратор ЕСТЬ NULL
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1000
| ТаблицаДокумента.Ссылка
|ИЗ
| Документ.УвольнениеСписком.Сотрудники КАК ТаблицаДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МероприятияТрудовойДеятельности КАК Мероприятия
| ПО ТаблицаДокумента.Ссылка = Мероприятия.Регистратор
|ГДЕ
| НЕ ТаблицаДокумента.Ссылка В (&МассивОбновленных)
| И ТаблицаДокумента.Ссылка.Проведен
| И ТаблицаДокумента.ОтразитьВТрудовойКнижке
| И Мероприятия.Регистратор ЕСТЬ NULL";
Если ПараметрыОбновления = Неопределено Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "ПЕРВЫЕ 1000","");
КонецЕсли;
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.УстановитьПараметрОбновления(ПараметрыОбновления, "ОбработкаЗавершена", Истина);
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.УстановитьПараметрОбновления(ПараметрыОбновления, "ОбработкаЗавершена", Ложь);
ОбрабатываемыеДокументы = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Ссылка");
ДанныеДляПроведенияДокументов = ДанныеДляПроведенияМероприятияТрудовойДеятельности(ОбрабатываемыеДокументы, Истина);
Для Каждого Регистратор Из ОбрабатываемыеДокументы Цикл
МассивОбновленных.Добавить(Регистратор);
ДанныеДляПроведения = ДанныеДляПроведенияДокументов.Получить(Регистратор);
Если ДанныеДляПроведения = Неопределено Тогда
Продолжить;
КонецЕсли;
Если Не ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ПодготовитьОбновлениеДанных(ПараметрыОбновления, "РегистрСведений.МероприятияТрудовойДеятельности.НаборЗаписей", "Регистратор", Регистратор) Тогда
Продолжить;
КонецЕсли;
НаборЗаписей = РегистрыСведений.МероприятияТрудовойДеятельности.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Регистратор);
РегистрыСведений.МероприятияТрудовойДеятельности.ЗаполнитьЗаписиМероприятий(
ДанныеДляПроведения, МероприятияТрудовойДеятельности,
"ОснованиеУвольнения");
СформироватьДвиженияМероприятийТрудовойДеятельности(НаборЗаписей, ДанныеДляПроведения);
ОбновлениеИнформационнойБазы.ЗаписатьНаборЗаписей(НаборЗаписей);
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ЗавершитьОбновлениеДанных(ПараметрыОбновления);
КонецЦикла;
КонецПроцедуры
Процедура СформироватьДвиженияМероприятийТрудовойДеятельности(НаборЗаписей, ДанныеДляПроведения) Экспорт
Если ДанныеДляПроведения <> Неопределено
И ДанныеДляПроведения.Количество() > 0 Тогда
ПараметрыФормирования = ЭлектронныеТрудовыеКнижки.ПараметрыФормированияДвиженийМероприятийТрудовойДеятельности();
ПараметрыФормирования.ДополнитьСведениямиОЗанятости = Истина;
ПараметрыФормирования.ДополнитьСведениямиОДолжности = Истина;
ПараметрыФормирования.ПолучатьИсточникДанныхОТерриториальныхУсловиях = Истина;
Если ЗначениеЗаполнено(ДанныеДляПроведения[0].ДатаДокументаОснования)
И ДанныеДляПроведения[0].ДатаДокументаОснования >= ЗарплатаКадрыПовтИсп.ДатаВступленияВСилуНА("ДатаНачалаПриемаСведенийОМобилизованных") Тогда
ПараметрыФормирования.ДополнитьСведениямиОКодахПоОКЗ = Истина;
Иначе
ПараметрыФормирования.ДополнитьСведениямиОКодахПоОКЗ = Ложь;
КонецЕсли;
ЭлектронныеТрудовыеКнижки.СформироватьДвиженияМероприятийТрудовойДеятельности(
НаборЗаписей, ДанныеДляПроведения, ПараметрыФормирования);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьПредоставлятьМероприятияТДВЭлектроннойФорме(ПараметрыОбновления) Экспорт
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Если ПараметрыОбновления.Свойство("ОбработанныеДокументы") Тогда
ОбработанныеДокументы = ПараметрыОбновления.ОбработанныеДокументы;
Иначе
ОбработанныеДокументы = Новый Массив;
ПараметрыОбновления.Вставить("ОбработанныеДокументы", ОбработанныеДокументы);
КонецЕсли;
Запрос.УстановитьПараметр("ОбработанныеДокументы", ОбработанныеДокументы);
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1000
| Увольнение.Ссылка КАК Ссылка,
| Увольнение.Сотрудник КАК Сотрудник,
| Увольнение.ДатаУвольнения КАК Период
|ПОМЕСТИТЬ ВТСотрудникиПериоды
|ИЗ
| Документ.Увольнение КАК Увольнение
|ГДЕ
| НЕ Увольнение.ПредоставлятьМероприятияТДВЭлектроннойФорме
| И НЕ Увольнение.Ссылка В (&ОбработанныеДокументы)
| И Увольнение.Проведен
|;
|
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| СотрудникиПериоды.Ссылка КАК Ссылка
|ИЗ
| ВТСотрудникиПериоды КАК СотрудникиПериоды";
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ЗавершитьОбработчик(ПараметрыОбновления);
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ПродолжитьОбработчик(ПараметрыОбновления);
ОписательТаблиц = КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеСотрудников(
Запрос.МенеджерВременныхТаблиц, "ВТСотрудникиПериоды");
КадровыйУчет.СоздатьВТКадровыеДанныеСотрудников(ОписательТаблиц, Ложь, "ЗаявленияОПредоставленииСведенийОТрудовойДеятельностиВид");
Запрос.Текст =
"ВЫБРАТЬ
| СотрудникиПериоды.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА КадровыеДанныеСотрудников.ЗаявленияОПредоставленииСведенийОТрудовойДеятельностиВид = ЗНАЧЕНИЕ(Перечисление.ВидыЗаявленийОПредоставленииСведенийОТрудовойДеятельности.СведенияОТрудовойДеятельностиВЭлектроннойФорме)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ПредоставлятьМероприятияТДВЭлектроннойФорме
|ИЗ
| ВТСотрудникиПериоды КАК СотрудникиПериоды
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудников КАК КадровыеДанныеСотрудников
| ПО СотрудникиПериоды.Период = КадровыеДанныеСотрудников.Период
| И СотрудникиПериоды.Сотрудник = КадровыеДанныеСотрудников.Сотрудник";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ОбработанныеДокументы.Добавить(Выборка.Ссылка);
Если Не Выборка.ПредоставлятьМероприятияТДВЭлектроннойФорме Тогда
Продолжить;
КонецЕсли;
Если Не ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ПодготовитьОбновлениеДанных(
ПараметрыОбновления, Выборка.Ссылка.Метаданные().ПолноеИмя(), "Ссылка", Выборка.Ссылка) Тогда
Продолжить;
КонецЕсли;
УвольнениеОбъект = Выборка.Ссылка.ПолучитьОбъект();
УвольнениеОбъект.ПредоставлятьМероприятияТДВЭлектроннойФорме = Истина;
УвольнениеОбъект.ДополнительныеСвойства.Вставить("ОтключитьПроверкуДатыЗапретаИзменения", Истина);
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(УвольнениеОбъект);
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ЗавершитьОбновлениеДанных(ПараметрыОбновления);
КонецЦикла;
КонецПроцедуры
Функция ИдентификаторПечатнойФормыРаздел3РСВ()
Возврат "Раздел3РСВ";
КонецФункции
Функция СотрудникиСоСменойВидаЗанятости(МенеджерВременныхТаблиц)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(КадровыеДанныеСотрудников.Период, ДЕНЬ, 1), ДЕНЬ) КАК Период,
| КадровыеДанныеСотрудников.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
| КадровыеДанныеСотрудников.Сотрудник КАК Сотрудник,
| КадровыеДанныеСотрудников.ФизическоеЛицо КАК ФизическоеЛицо,
| КадровыеДанныеСотрудников.ВидЗанятости КАК ВидЗанятости
|ИЗ
| ВТКадровыеДанныеСотрудников КАК КадровыеДанныеСотрудников
|ГДЕ
| КадровыеДанныеСотрудников.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)";
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
Функция ДанныеДляУчетаПособийПриУвольненииПустая() Экспорт
ДанныеСотрудников = Новый Структура;
ДанныеСотрудников.Вставить("ПределДоходаНеОблагаемогоСтраховымиВзносами", 0);
ДанныеСотрудников.Вставить("ПределДоходаНеОблагаемогоНДФЛ", 0);
Возврат ДанныеСотрудников;
КонецФункции
#КонецОбласти
#КонецЕсли