В базе с типовой конфигурацией ЗУП 3.1.28.84 при попытке записать документ "Сведения о трудовой деятельности работников, СЗВ-ТД" с мероприятием Увольнение, программа выдавала ошибку с полем объекта (ЕФС__РегНомер1). Этот реквизит используется только при переименовании. И очевидно, что в данные заполнения он не попал.
В данном расширении этот баг исправлен. Если кто-то столкнулся с такой проблемой, могут использовать данное расширение. Неленивые могут сами создать расширение и добавить в него функцию общего модуля ПерсонифицированныйУчет, по образцу ниже:
&ИзменениеИКонтроль("СформироватьВыходнойФайлЕФС1")
Функция Расш1_СформироватьВыходнойФайлЕФС1(РазделыЕФС1, ВыборкаПоШапкеДокумента, ВыборкаТД, ВыборкаСТАЖ, ВыборкаДНП, ВыборкаДСВ)
// Загружаем формат файла сведений
ДеревоФорматаXML = ПолучитьОбщийМакет("ФорматЕФС1_2022XML");
ТекстФорматаXML = ДеревоФорматаXML.ПолучитьТекст();
ДеревоФормата = ЗарплатаКадры.ЗагрузитьXMLВДокументDOM(ТекстФорматаXML);
ФорматЕФС_1 = ЗарплатаКадры.ЗагрузитьФорматНабораЗаписей(ДеревоФормата, "ЕФС_1");
ФорматЕФС_1.СтраховательЗаКоторого.НеВыводитьВФайл = Истина;
НаборЗаписейДатаЗаполнения = Новый Структура("ДатаЗаполнения", ОбщегоНазначения.СкопироватьРекурсивно(ФорматЕФС_1.ДатаЗаполнения));
ФорматЕФС_1.Удалить("ДатаЗаполнения");
НаборЗаписейРуководитель = Новый Структура("Руководитель", ОбщегоНазначения.СкопироватьРекурсивно(ФорматЕФС_1.Руководитель));
ФорматЕФС_1.Удалить("Руководитель");
ФорматСЗВ = ОбщегоНазначения.СкопироватьРекурсивно(ФорматЕФС_1.СЗВ.Значение);
ФорматЕФС_1.Удалить("СЗВ");
ИспользоватьФорму2023 = ВыборкаПоШапкеДокумента.Дата >= ПерсонифицированныйУчетКлиентСервер.ДатаПостановленияЕФС1_2023();
// Создаем начальное дерево
ДеревоВыгрузки = ЗарплатаКадры.СоздатьДеревоXML();
Атрибуты = Новый Соответствие;
Атрибуты.Вставить("xmlns", ?(ИспользоватьФорму2023, "http://пф.рф/ЕФС-1/2024-01-01", "http://пф.рф/ЕФС-1/2022-09-22"));
Атрибуты.Вставить("xmlns:ВС2", "http://пф.рф/ВС/типы/2017-10-23");
Атрибуты.Вставить("xmlns:АФ5", "http://пф.рф/АФ/2018-12-07");
Атрибуты.Вставить("xmlns:УТ2", "http://пф.рф/УТ/2017-08-21");
Атрибуты.Вставить("xmlns:ЕФС", ?(ИспользоватьФорму2023, "http://пф.рф/ВС/ЕФС/2024-01-01", "http://пф.рф/ВС/ЕФС/2022-09-22"));
УзелПФР = ЗарплатаКадры.ДобавитьУзелВДеревоXML(ДеревоВыгрузки, "ЭДПФР", "", Атрибуты);
// Данные формы и страхователя
НаборЗаписейСтрахователь = ФорматЕФС_1.Страхователь.Значение;
НаборЗаписейСтрахователь.ЕФС__РегНомер = ВыборкаПоШапкеДокумента.РегистрационныйНомерПФР;
НаименованиеКраткое = СокрЛП(ВРег(ВыборкаПоШапкеДокумента.НаименованиеСокращенное));
ПерсонифицированныйУчет.УдалитьПробелыРядомСДефисом(НаименованиеКраткое);
НаборЗаписейСтрахователь.ЕФС__Наименование = НаименованиеКраткое;
НаборЗаписейСтрахователь.УТ2__ИНН = ВыборкаПоШапкеДокумента.ИНН;
Если ЗначениеЗаполнено(ВыборкаПоШапкеДокумента.КПП) Тогда
НаборЗаписейСтрахователь.УТ2__КПП = ВыборкаПоШапкеДокумента.КПП;
Иначе
НаборЗаписейСтрахователь.Удалить("УТ2__КПП");
СтрокаПоляКПП = ФорматЕФС_1.Страхователь.Поля.Найти("УТ2__КПП", "ИмяПоля");
Если СтрокаПоляКПП <> Неопределено Тогда
ФорматЕФС_1.Страхователь.Поля.Удалить(СтрокаПоляКПП);
КонецЕсли;
КонецЕсли;
НаборЗаписейСтрахователь.УТ2__КодПоОКВЭД = ВыборкаПоШапкеДокумента.КодОКВЭД2;
Если ВыборкаПоШапкеДокумента.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо Тогда
НаборЗаписейСтрахователь.ЕФС__ОГРНИП = ВыборкаПоШапкеДокумента.ОГРН;
Иначе
НаборЗаписейСтрахователь.ЕФС__ОГРН = ВыборкаПоШапкеДокумента.ОГРН;
КонецЕсли;
ВидыКонтактнойИнформации = Новый Массив;
ВидыКонтактнойИнформации.Добавить(Справочники.ВидыКонтактнойИнформации.ТелефонОрганизации);
ВидыКонтактнойИнформации.Добавить(Справочники.ВидыКонтактнойИнформации.EmailОрганизации);
КонтактнаяИнформация = КонтактнаяИнформацияБЗК.КонтактнаяИнформацияОбъектов(
ВыборкаПоШапкеДокумента.Организация, , ВидыКонтактнойИнформации, ВыборкаПоШапкеДокумента.Дата);
Если ВыборкаПоШапкеДокумента.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо Тогда
НаборЗаписейСтрахователь.ЕФС__КодКатСтрахФЛ = "ИП01";
КонецЕсли;
ТелефонОрганизации = КонтактнаяИнформация.Найти(Справочники.ВидыКонтактнойИнформации.ТелефонОрганизации, "Вид");
Если ТелефонОрганизации <> Неопределено Тогда
НаборЗаписейСтрахователь.УТ2__Телефон = ПерсонифицированныйУчет.ПредставлениеТелефонаЕФС1(ТелефонОрганизации.Представление);
КонецЕсли;
АдресЭлПочтыОрганизации = КонтактнаяИнформация.Найти(Справочники.ВидыКонтактнойИнформации.EmailОрганизации, "Вид");
Если АдресЭлПочтыОрганизации <> Неопределено Тогда
НаборЗаписейСтрахователь.УТ2__АдресЭлПочты = АдресЭлПочтыОрганизации.Представление;
КонецЕсли;
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(ФорматЕФС_1.Страхователь, "ЕФС__ОКФС");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(ФорматЕФС_1.Страхователь, "ЕФС__ОКОГУ");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(ФорматЕФС_1.Страхователь, "ЕФС__ОКПО");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(ФорматЕФС_1.Страхователь, "УТ2__КодПоОКВЭД");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(ФорматЕФС_1.Страхователь, "ЕФС__ОГРН");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(ФорматЕФС_1.Страхователь, "ЕФС__ОГРНИП");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(ФорматЕФС_1.Страхователь, "ЕФС__КодКатСтрахФЛ");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(ФорматЕФС_1.Страхователь, "УТ2__Телефон");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(ФорматЕФС_1.Страхователь, "УТ2__АдресЭлПочты");
// Данные прежнего страхователя
Если ЗначениеЗаполнено(ВыборкаПоШапкеДокумента.ПрежнийСтраховательНаименованиеПолное) Тогда
ФорматЕФС_1.СтраховательЗаКоторого.НеВыводитьВФайл = Ложь;
НаборЗаписейРаботодатель = ФорматЕФС_1.СтраховательЗаКоторого.Значение;
ПрежнийСтраховательНаименованиеПолное = СокрЛП(ВРег(ВыборкаПоШапкеДокумента.ПрежнийСтраховательНаименованиеПолное));
ПерсонифицированныйУчет.УдалитьПробелыРядомСДефисом(ПрежнийСтраховательНаименованиеПолное);
НаборЗаписейРаботодатель.ЕФС__Наименование = ПрежнийСтраховательНаименованиеПолное;
НаборЗаписейРаботодатель.ЕФС__РегНомер = СокрЛП(ВыборкаПоШапкеДокумента.ПрежнийСтраховательРегистрационныйНомерПФР);
НаборЗаписейРаботодатель.УТ2__ИНН = СокрЛП(ВыборкаПоШапкеДокумента.ПрежнийСтраховательИНН);
Если ЗначениеЗаполнено(ВыборкаПоШапкеДокумента.ПрежнийСтраховательКПП) Тогда
НаборЗаписейРаботодатель.УТ2__КПП = СокрЛП(ВыборкаПоШапкеДокумента.ПрежнийСтраховательКПП);
Иначе
НаборЗаписейРаботодатель.Удалить("УТ2__КПП");
СтрокаПоляКПП = ФорматЕФС_1.СтраховательЗаКоторого.Поля.Найти("УТ2__КПП", "ИмяПоля");
Если СтрокаПоляКПП <> Неопределено Тогда
ФорматЕФС_1.СтраховательЗаКоторого.Поля.Удалить(СтрокаПоляКПП);
КонецЕсли;
КонецЕсли;
НаборЗаписейРаботодатель.ЕФС__ОКФС = СокрЛП(ВыборкаПоШапкеДокумента.ПрежнийСтраховательОКФС);
НаборЗаписейРаботодатель.ЕФС__ОКОГУ = СокрЛП(ВыборкаПоШапкеДокумента.ПрежнийСтраховательОКОГУ);
НаборЗаписейРаботодатель.ЕФС__ОКПО = СокрЛП(ВыборкаПоШапкеДокумента.ПрежнийСтраховательОКПО);
НаборЗаписейРаботодатель.УТ2__КодПоОКВЭД = СокрЛП(ВыборкаПоШапкеДокумента.ПрежнийСтраховательОКВЭД);
НаборЗаписейРаботодатель.ЕФС__КодКатСтрахФЛ = СокрЛП(ВыборкаПоШапкеДокумента.ПрежнийСтраховательКодКатегории);
Если ЗначениеЗаполнено(СокрЛП(ВыборкаПоШапкеДокумента.ПрежнийСтраховательКодКатегории)) Тогда
НаборЗаписейРаботодатель.ЕФС__ОГРНИП = СокрЛП(ВыборкаПоШапкеДокумента.ПрежнийСтраховательОГРН);
Иначе
НаборЗаписейРаботодатель.ЕФС__ОГРН = СокрЛП(ВыборкаПоШапкеДокумента.ПрежнийСтраховательОГРН);
КонецЕсли;
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(ФорматЕФС_1.СтраховательЗаКоторого, "ЕФС__ОКФС");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(ФорматЕФС_1.СтраховательЗаКоторого, "ЕФС__ОКОГУ");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(ФорматЕФС_1.СтраховательЗаКоторого, "ЕФС__ОКПО");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(ФорматЕФС_1.СтраховательЗаКоторого, "УТ2__КодПоОКВЭД");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(ФорматЕФС_1.СтраховательЗаКоторого, "ЕФС__ОГРН");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(ФорматЕФС_1.СтраховательЗаКоторого, "ЕФС__ОГРНИП");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(ФорматЕФС_1.СтраховательЗаКоторого, "ЕФС__КодКатСтрахФЛ");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(ФорматЕФС_1.СтраховательЗаКоторого, "УТ2__Телефон");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(ФорматЕФС_1.СтраховательЗаКоторого, "УТ2__АдресЭлПочты");
КонецЕсли;
УзелЕФС1 = ЗарплатаКадры.ДобавитьУзелВДеревоXML(УзелПФР, "ЕФС-1", "");
ЗарплатаКадры.ДобавитьИнформациюВДерево(УзелЕФС1, ФорматЕФС_1);
УзелСЗВ = ЗарплатаКадры.ДобавитьУзелВДеревоXML(УзелЕФС1, "СЗВ", "");
Если РазделыЕФС1.СЗВТД Тогда
ФорматЗЛ = ОбщегоНазначения.СкопироватьРекурсивно(ФорматСЗВ.ЗЛ.Значение);
ФорматСЗВ_ТД = ОбщегоНазначения.СкопироватьРекурсивно(ФорматЗЛ.СЗВ_ТД.Значение);
ФорматЗЛ.Удалить("СЗВ_ТД");
ФорматСЗВ_СТАЖ = ОбщегоНазначения.СкопироватьРекурсивно(ФорматЗЛ.СЗВ_СТАЖ.Значение);
ФорматЗЛ.Удалить("СЗВ_СТАЖ");
НаборЗаписейЗЛ = ОбщегоНазначения.СкопироватьРекурсивно(ФорматЗЛ);
ФорматТрудоваяДеятельность = ОбщегоНазначения.СкопироватьРекурсивно(ФорматСЗВ_ТД.ТД.Значение);
ФорматСЗВ_ТД.Удалить("ТД");
ФорматМероприятие = ОбщегоНазначения.СкопироватьРекурсивно(ФорматТрудоваяДеятельность.Мероприятие.Значение);
ФорматТрудоваяДеятельность.Удалить("Мероприятие");
ФорматМероприятиеОтменяемое = ОбщегоНазначения.СкопироватьРекурсивно(ФорматТрудоваяДеятельность.МероприятиеОтменяемое.Значение);
ФорматТрудоваяДеятельность.Удалить("МероприятиеОтменяемое");
Пока ВыборкаТД.СледующийПоЗначениюПоля("НомерСтрокиСотрудника") Цикл
// Данные по физлицу
Фамилия = СокрЛП(ВыборкаТД.Фамилия);
Имя = СокрЛП(ВыборкаТД.Имя);
Отчество = СокрЛП(ВыборкаТД.Отчество);
НаборЗаписейЗЛ.УТ2__СНИЛС.Значение = ВыборкаТД.СтраховойНомерПФР;
НаборЗаписейЗЛ.УТ2__ДатаРождения.Значение = Формат(ВыборкаТД.ДатаРождения, "ДФ=yyyy-MM-dd");
НаборЗаписейЗЛ.ИНН.Значение = ВыборкаТД.ИННРаботника;
НаборЗаписейЗЛ.СтатусЗЛ.Значение = Строка(ВыборкаТД.КодКатегорииЗЛ);
НаборЗаписейЗЛ.Гражданство.Значение = ВыборкаТД.Гражданство;
НаборЗаписейФИО = НаборЗаписейЗЛ.УТ2__ФИО.Значение;
НаборЗаписейФИО.УТ2__Фамилия = ВРег(Фамилия);
НаборЗаписейФИО.УТ2__Имя = ВРег(Имя);
НаборЗаписейФИО.УТ2__Отчество = ВРег(Отчество);
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейЗЛ.УТ2__ФИО, "УТ2__Фамилия");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейЗЛ.УТ2__ФИО, "УТ2__Имя");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейЗЛ.УТ2__ФИО, "УТ2__Отчество");
ПерсонифицированныйУчет.УстановитьВыводВФайл(НаборЗаписейЗЛ.ИНН, "Значение");
УзелСотрудника = ЗарплатаКадры.ДобавитьУзелВДеревоXML(УзелСЗВ, "ЗЛ", "");
ЗарплатаКадры.ДобавитьИнформациюВДерево(УзелСотрудника, НаборЗаписейЗЛ);
НаборЗаписейСЗВ_ТД = ОбщегоНазначения.СкопироватьРекурсивно(ФорматСЗВ_ТД);
Если ЗначениеЗаполнено(ВыборкаТД.ЗаявлениеОПредоставленииДата) Тогда
ЗаявлениеОПредоставлении = НаборЗаписейСЗВ_ТД.Заявления.Значение.ЗаявлениеОПредоставлении.Значение;
ЗаявлениеОПредоставлении.Дата.Значение = Формат(ВыборкаТД.ЗаявлениеОПредоставленииДата, "ДФ=yyyy-MM-dd");
ЗаявлениеОПредоставлении.СтатусЗаявления.Значение = ?(ЗначениеЗаполнено(ВыборкаТД.ОтменаЗаявленияОПредоставлении), 0, 1);
Иначе
НаборЗаписейСЗВ_ТД.Заявления.Значение.ЗаявлениеОПредоставлении.НеВыводитьВФайл = Истина;
КонецЕсли;
Если ЗначениеЗаполнено(ВыборкаТД.ЗаявлениеОПродолженииДата) Тогда
ЗаявлениеОПродолжении = НаборЗаписейСЗВ_ТД.Заявления.Значение.ЗаявлениеОПродолжении.Значение;
ЗаявлениеОПродолжении.Дата.Значение = Формат(ВыборкаТД.ЗаявлениеОПродолженииДата, "ДФ=yyyy-MM-dd");
ЗаявлениеОПродолжении.СтатусЗаявления.Значение = ?(ЗначениеЗаполнено(ВыборкаТД.ОтменаЗаявленияОПродолжении), 0, 1);
Иначе
НаборЗаписейСЗВ_ТД.Заявления.Значение.ЗаявлениеОПродолжении.НеВыводитьВФайл = Истина;
КонецЕсли;
Если Не ЗначениеЗаполнено(ВыборкаТД.ЗаявлениеОПредоставленииДата)
И Не ЗначениеЗаполнено(ВыборкаТД.ЗаявлениеОПродолжении) Тогда
НаборЗаписейСЗВ_ТД.Заявления.НеВыводитьВФайл = Истина;
КонецЕсли;
УзелСЗВ_ТД = ЗарплатаКадры.ДобавитьУзелВДеревоXML(УзелСотрудника, "СЗВ-ТД", "");
ЗарплатаКадры.ДобавитьИнформациюВДерево(УзелСЗВ_ТД, НаборЗаписейСЗВ_ТД);
УзелТрудоваяДеятельность = Неопределено;
Пока ВыборкаТД.Следующий() Цикл
Если Не ЗначениеЗаполнено(ВыборкаТД.ВидМероприятия) Тогда
Продолжить;
КонецЕсли;
Если ЗначениеЗаполнено(ВыборкаТД.ДатаОтмены) Тогда
НаборЗаписейМероприятиеОтменяемое = ОбщегоНазначения.СкопироватьРекурсивно(ФорматМероприятиеОтменяемое);
НаборЗаписейМероприятиеОтменяемое.ЕФС__UUID.Значение = Строка(ВыборкаТД.ИдМероприятия);
НаборЗаписейМероприятиеОтменяемое.ЕФС__ДатаМероприятия.Значение = Формат(ВыборкаТД.ДатаМероприятия, "ДФ=yyyy-MM-dd");
НаборЗаписейМероприятиеОтменяемое.ЕФС__ДатаОтмены.Значение = Формат(ВыборкаТД.ДатаОтмены, "ДФ=yyyy-MM-dd");
НаборЗаписейМероприятиеОтменяемое.ЕФС__Вид.Значение = Перечисления.ВидыМероприятийТрудовойДеятельности.Код(ВыборкаТД.ВидМероприятия);
Если ВыборкаТД.Дата < ПерсонифицированныйУчетКлиентСервер.ДатаПостановленияЕФС1_2023() Тогда
НаборЗаписейМероприятиеОтменяемое.ЕФС__ЯвляетсяСовместителем.Значение = ?(ВыборкаТД.ЯвляетсяСовместителем, 1, 0);
Иначе
НаборЗаписейМероприятиеОтменяемое.ЕФС__ЯвляетсяСовместителем.Значение =
ЭлектронныеТрудовыеКнижки.КодВидаДоговора(ВыборкаТД);
КонецЕсли;
ТерриториальныеУсловия = ЭлектронныеТрудовыеКнижки.РаботаКСПоДаннымОтменяемогоМероприятия(ВыборкаТД);
Если ЗначениеЗаполнено(ТерриториальныеУсловия) Тогда
НаборЗаписейМероприятиеОтменяемое.ЕФС__РаботаКС.Значение = СокрЛП(Строка(ТерриториальныеУсловия));
Иначе
НаборЗаписейМероприятиеОтменяемое.ЕФС__РаботаКС.НеВыводитьВФайл = Истина;
КонецЕсли;
ПерсонифицированныйУчет.УстановитьВыводВФайл(НаборЗаписейМероприятиеОтменяемое.ЕФС__ЯвляетсяСовместителем, "Значение");
УзелМероприятие = ВывестиВФайлМероприятиеЕФС1(УзелСЗВ_ТД, УзелТрудоваяДеятельность, "МероприятиеОтменяемое", НаборЗаписейМероприятиеОтменяемое);
Иначе
НаборЗаписейМероприятие = ОбщегоНазначения.СкопироватьРекурсивно(ФорматМероприятие);
НаборЗаписейМероприятие.ЕФС__UUID.Значение = Строка(ВыборкаТД.ИдМероприятия);
НаборЗаписейМероприятие.ЕФС__Дата.Значение = Формат(ВыборкаТД.ДатаМероприятия, "ДФ=yyyy-MM-dd");
НаборЗаписейМероприятие.ЕФС__Вид.Значение = Перечисления.ВидыМероприятийТрудовойДеятельности.Код(ВыборкаТД.ВидМероприятия);
Если ЗначениеЗаполнено(ВыборкаТД.ТерриториальныеУсловия) Тогда
НаборЗаписейМероприятие.ЕФС__РаботаКС.Значение = СокрЛП(Строка(ВыборкаТД.ТерриториальныеУсловия));
Иначе
НаборЗаписейМероприятие.ЕФС__РаботаКС.НеВыводитьВФайл = Истина;
КонецЕсли;
НаборЗаписейМероприятие.ЕФС__Сведения.Значение = СокрЛП(ВыборкаТД.Сведения);
Если ВыборкаТД.ВидМероприятия = Перечисления.ВидыМероприятийТрудовойДеятельности.УстановлениеВторойПрофессии
И ЗначениеЗаполнено(ВыборкаТД.ОписаниеДолжности) Тогда
НаборЗаписейМероприятие.ЕФС__Должность.Значение = СокрЛП(ВыборкаТД.ОписаниеДолжности);
Иначе
НаборЗаписейМероприятие.ЕФС__Должность.Значение = СокрЛП(ВыборкаТД.ПредставлениеДолжности)
+ ?(ЗначениеЗаполнено(ВыборкаТД.КодПоРееструДолжностей), ", " + СокрЛП(ВыборкаТД.КодПоРееструДолжностей), "")
+ ?(ЗначениеЗаполнено(ВыборкаТД.РазрядКатегория), ", " + ЭлектронныеТрудовыеКнижкиПовтИсп.ПредставлениеРазрядаКатегории(
ВыборкаТД.РазрядКатегория), "");
КонецЕсли;
Если ВыборкаТД.Дата < ПерсонифицированныйУчетКлиентСервер.ДатаПостановленияЕФС1_2023() Тогда
НаборЗаписейМероприятие.ЕФС__ЯвляетсяСовместителем.Значение = ?(ВыборкаТД.ЯвляетсяСовместителем, "1", "");
Иначе
НаборЗаписейМероприятие.ЕФС__ЯвляетсяСовместителем.Значение =
ЭлектронныеТрудовыеКнижки.КодВидаДоговора(ВыборкаТД);
КонецЕсли;
НаборЗаписейМероприятие.ЕФС__СтруктурноеПодразделение.Значение = СокрЛП(ВыборкаТД.ПредставлениеПодразделения);
ТрудоваяФункцияОписание = ЭлектронныеТрудовыеКнижки.ОписаниеТрудовойФункции(
ВыборкаТД.ТрудоваяФункцияОписание, ВыборкаТД.ТрудоваяФункция);
НаборЗаписейМероприятие.ЕФС__ВидПР.Значение = СокрЛП(ТрудоваяФункцияОписание);
НаборЗаписейМероприятие.ЕФС__КодВФпоОКЗ.Значение = СокрЛП(ЭлектронныеТрудовыеКнижкиПовтИсп.ПредставлениеКодаОКЗ(ВыборкаТД.КодПоОКЗ));
Если ВыборкаТД.ВидМероприятия = Перечисления.ВидыМероприятийТрудовойДеятельности.НачалоДоговораГПХ
Или ВыборкаТД.ВидМероприятия = Перечисления.ВидыМероприятийТрудовойДеятельности.ОкончаниеДоговораГПХ Тогда
НаборЗаписейМероприятие.ЕФС__КодВФ.Значение = СокрЛП(ЭлектронныеТрудовыеКнижки.КодТрудовойФункцииДоговораГПХ(ВыборкаТД));
Иначе
Если ВыборкаТД.Дата >= ПерсонифицированныйУчетКлиентСервер.ДатаПостановленияЕФС1_2023() Тогда
СоставПредставления = Новый Массив;
Если ЗначениеЗаполнено(НаборЗаписейМероприятие.ЕФС__КодВФ.Значение) Тогда
СоставПредставления.Добавить(НаборЗаписейМероприятие.ЕФС__КодВФ.Значение);
КонецЕсли;
УсловияРаботы = ЭлектронныеТрудовыеКнижки.ПредставлениеУсловийРаботы(ВыборкаТД);
Если УсловияРаботы <> Неопределено Тогда
СоставПредставления.Добавить(УсловияРаботы);
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(СоставПредставления) Тогда
НаборЗаписейМероприятие.ЕФС__КодВФ.Значение = СтрСоединить(СоставПредставления, ", ");
КонецЕсли;
КонецЕсли;
Если ВыборкаТД.ВидМероприятия = Перечисления.ВидыМероприятийТрудовойДеятельности.Переименование Тогда
НаборЗаписейМероприятие.ЕФС__РегНомер1.Значение = ВыборкаПоШапкеДокумента.ПрежнийСтраховательРегистрационныйНомерПФР;
НаборЗаписейМероприятие.ЕФС__РегНомер2.Значение = ВыборкаПоШапкеДокумента.РегистрационныйНомерПФР;
КонецЕсли;
НаборЗаписейМероприятие.ЕФС__ДатаС.Значение = Формат(ВыборкаТД.ДатаС, "ДФ=yyyy-MM-dd");
НаборЗаписейМероприятие.ЕФС__ДатаПо.Значение = Формат(ВыборкаТД.ДатаПо, "ДФ=yyyy-MM-dd");
Если ВыборкаТД.ВидМероприятия = Перечисления.ВидыМероприятийТрудовойДеятельности.Увольнение Тогда
НаборЗаписейМероприятие.ЕФС__ОснованиеУвольнения.Значение.ЕФС__КодПричиныУвольнения = Строка(ВыборкаТД.ПричинаУвольненияПФР);
НаборЗаписейМероприятие.ЕФС__Причина.Значение = СокрЛП(ВыборкаТД.ОснованиеУвольненияТекстОснования);
НаборЗаписейМероприятие.ЕФС__ОснованиеУвольнения.Значение.ЕФС__НормативныйДокумент = КадровыйУчет.НормативныйДокументОснованияУвольнения(ВыборкаТД.ОснованиеУвольнения);
НаборЗаписейМероприятие.ЕФС__ОснованиеУвольнения.Значение.ЕФС__Статья = ВыборкаТД.ОснованиеУвольненияСтатья;
НаборЗаписейМероприятие.ЕФС__ОснованиеУвольнения.Значение.ЕФС__Часть = ВыборкаТД.ОснованиеУвольненияЧасть;
НаборЗаписейМероприятие.ЕФС__ОснованиеУвольнения.Значение.ЕФС__Пункт = ВыборкаТД.ОснованиеУвольненияПункт;
НаборЗаписейМероприятие.ЕФС__ОснованиеУвольнения.Значение.ЕФС__Подпункт = ВыборкаТД.ОснованиеУвольненияПодпункт;
НаборЗаписейМероприятие.ЕФС__ОснованиеУвольнения.Значение.ЕФС__Абзац = ВыборкаТД.ОснованиеУвольненияАбзац;
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейМероприятие.ЕФС__ОснованиеУвольнения, "ЕФС__НормативныйДокумент");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейМероприятие.ЕФС__ОснованиеУвольнения, "ЕФС__Статья");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейМероприятие.ЕФС__ОснованиеУвольнения, "ЕФС__Часть");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейМероприятие.ЕФС__ОснованиеУвольнения, "ЕФС__Пункт");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейМероприятие.ЕФС__ОснованиеУвольнения, "ЕФС__Подпункт");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейМероприятие.ЕФС__ОснованиеУвольнения, "ЕФС__Абзац");
Иначе
НаборЗаписейМероприятие.ЕФС__ОснованиеУвольнения.НеВыводитьВФайл = Истина;
КонецЕсли;
НаборЗаписейОснование = НаборЗаписейМероприятие.ЕФС__Основание.Значение;
НаборЗаписейОснование.ЕФС__Наименование.Значение = СокрЛП(ВыборкаТД.НаименованиеДокументаОснования);
НаборЗаписейОснование.ЕФС__Дата.Значение = Формат(ВыборкаТД.ДатаДокументаОснования, "ДФ=yyyy-MM-dd");;
НаборЗаписейОснование.ЕФС__Номер.Значение = СокрЛП(ВыборкаТД.НомерДокументаОснования);
НаборЗаписейОснование.ЕФС__Серия.Значение = СокрЛП(ВыборкаТД.СерияДокументаОснования);
ВтороеОснование = Неопределено;
Если ЗначениеЗаполнено(ВыборкаТД.НаименованиеВторогоДокументаОснования)
Или ЗначениеЗаполнено(ВыборкаТД.ДатаВторогоДокументаОснования)
Или ЗначениеЗаполнено(ВыборкаТД.СерияВторогоДокументаОснования)
Или ЗначениеЗаполнено(ВыборкаТД.НомерВторогоДокументаОснования) Тогда
ВтороеОснование = ОбщегоНазначения.СкопироватьРекурсивно(НаборЗаписейОснование);
ВтороеОснование.ЕФС__Наименование.Значение = СокрЛП(ВыборкаТД.НаименованиеВторогоДокументаОснования);
ВтороеОснование.ЕФС__Дата.Значение = Формат(ВыборкаТД.ДатаВторогоДокументаОснования, "ДФ=yyyy-MM-dd");;
ВтороеОснование.ЕФС__Серия.Значение = СокрЛП(ВыборкаТД.СерияВторогоДокументаОснования);
ВтороеОснование.ЕФС__Номер.Значение = СокрЛП(ВыборкаТД.НомерВторогоДокументаОснования);
ПерсонифицированныйУчет.УстановитьВыводВФайл(ВтороеОснование.ЕФС__Серия, "Значение");
КонецЕсли;
ПерсонифицированныйУчет.УстановитьВыводВФайл(НаборЗаписейМероприятие.ЕФС__Сведения, "Значение");
ПерсонифицированныйУчет.УстановитьВыводВФайл(НаборЗаписейМероприятие.ЕФС__Должность, "Значение");
ПерсонифицированныйУчет.УстановитьВыводВФайл(НаборЗаписейМероприятие.ЕФС__СтруктурноеПодразделение, "Значение");
ПерсонифицированныйУчет.УстановитьВыводВФайл(НаборЗаписейМероприятие.ЕФС__ВидПР, "Значение");
ПерсонифицированныйУчет.УстановитьВыводВФайл(НаборЗаписейМероприятие.ЕФС__КодВФ, "Значение");
ПерсонифицированныйУчет.УстановитьВыводВФайл(НаборЗаписейМероприятие.ЕФС__КодВФпоОКЗ, "Значение");
ПерсонифицированныйУчет.УстановитьВыводВФайл(НаборЗаписейМероприятие.ЕФС__Причина, "Значение");
ПерсонифицированныйУчет.УстановитьВыводВФайл(НаборЗаписейМероприятие.ЕФС__ДатаС, "Значение");
ПерсонифицированныйУчет.УстановитьВыводВФайл(НаборЗаписейМероприятие.ЕФС__ДатаПо, "Значение");
ПерсонифицированныйУчет.УстановитьВыводВФайл(НаборЗаписейМероприятие.ЕФС__ЯвляетсяСовместителем, "Значение");
#Вставка
Если ВыборкаТД.ВидМероприятия = Перечисления.ВидыМероприятийТрудовойДеятельности.Переименование Тогда
#КонецВставки
ПерсонифицированныйУчет.УстановитьВыводВФайл(НаборЗаписейМероприятие.ЕФС__РегНомер1, "Значение");
ПерсонифицированныйУчет.УстановитьВыводВФайл(НаборЗаписейМероприятие.ЕФС__РегНомер2, "Значение");
#Вставка
КонецЕсли;
#КонецВставки
ПерсонифицированныйУчет.УстановитьВыводВФайл(НаборЗаписейОснование.ЕФС__Серия, "Значение");
УзелМероприятие = ВывестиВФайлМероприятиеЕФС1(УзелСЗВ_ТД, УзелТрудоваяДеятельность, "Мероприятие", НаборЗаписейМероприятие);
Если ВтороеОснование <> Неопределено Тогда
УзелОснование = ЗарплатаКадры.ДобавитьУзелВДеревоXML(УзелМероприятие, "ЕФС__Основание", "");
ЗарплатаКадры.ДобавитьИнформациюВДерево(УзелОснование, ВтороеОснование);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
Если РазделыЕФС1.СЗВСТАЖ Тогда
ФорматЗЛ = ОбщегоНазначения.СкопироватьРекурсивно(ФорматСЗВ.ЗЛ.Значение);
ФорматСЗВ_ТД = ОбщегоНазначения.СкопироватьРекурсивно(ФорматЗЛ.СЗВ_ТД.Значение);
ФорматЗЛ.Удалить("СЗВ_ТД");
ФорматСЗВ_СТАЖ = ОбщегоНазначения.СкопироватьРекурсивно(ФорматЗЛ.СЗВ_СТАЖ.Значение);
ФорматЗЛ.Удалить("СЗВ_СТАЖ");
ФорматСтажевыйПериод = ОбщегоНазначения.СкопироватьРекурсивно(ФорматСЗВ_СТАЖ.СтажевыйПериод.Значение);
ФорматСЗВ_СТАЖ.Удалить("СтажевыйПериод");
НаборЗаписейЗЛ = ОбщегоНазначения.СкопироватьРекурсивно(ФорматЗЛ);
Пока ВыборкаСТАЖ.СледующийПоЗначениюПоля("НомерСтроки") Цикл
// Данные по физлицу
Фамилия = СокрЛП(ВыборкаСТАЖ.Фамилия);
Имя = СокрЛП(ВыборкаСТАЖ.Имя);
Отчество = СокрЛП(ВыборкаСТАЖ.Отчество);
НаборЗаписейЗЛ.УТ2__СНИЛС.Значение = ВыборкаСТАЖ.СтраховойНомерПФР;
НаборЗаписейЗЛ.УТ2__ДатаРождения.Значение = Формат(ВыборкаСТАЖ.ДатаРождения, "ДФ=yyyy-MM-dd");
НаборЗаписейЗЛ.ИНН.Значение = ВыборкаСТАЖ.ИНН;
НаборЗаписейЗЛ.СтатусЗЛ.Значение = Строка(ВыборкаСТАЖ.КодКатегорииЗЛ);
НаборЗаписейЗЛ.Гражданство.Значение = ВыборкаСТАЖ.Гражданство;
НаборЗаписейФИО = НаборЗаписейЗЛ.УТ2__ФИО.Значение;
НаборЗаписейФИО.УТ2__Фамилия = ВРег(Фамилия);
НаборЗаписейФИО.УТ2__Имя = ВРег(Имя);
НаборЗаписейФИО.УТ2__Отчество = ВРег(Отчество);
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейЗЛ.УТ2__ФИО, "УТ2__Фамилия");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейЗЛ.УТ2__ФИО, "УТ2__Имя");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейЗЛ.УТ2__ФИО, "УТ2__Отчество");
ПерсонифицированныйУчет.УстановитьВыводВФайл(НаборЗаписейЗЛ.ИНН, "Значение");
УзелСотрудника = ЗарплатаКадры.ДобавитьУзелВДеревоXML(УзелСЗВ, "ЗЛ", "");
ЗарплатаКадры.ДобавитьИнформациюВДерево(УзелСотрудника, НаборЗаписейЗЛ);
Если ВыборкаПоШапкеДокумента.ТипСведений = Перечисления.ТипыСведенийСЗВ_СТАЖ.Исходная Тогда
ФорматСЗВ_СТАЖ.Тип.Значение = 1;
ИначеЕсли ВыборкаПоШапкеДокумента.ТипСведений = Перечисления.ТипыСведенийСЗВ_СТАЖ.НазначениеПенсии Тогда
ФорматСЗВ_СТАЖ.Тип.Значение = 2;
ИначеЕсли ВыборкаПоШапкеДокумента.ТипСведений = Перечисления.ТипыСведенийСЗВ_КОРР.Корректирующая Тогда
ФорматСЗВ_СТАЖ.Тип.Значение = 3;
ИначеЕсли ВыборкаПоШапкеДокумента.ТипСведений = Перечисления.ТипыСведенийСЗВ_КОРР.Отменяющая Тогда
ФорматСЗВ_СТАЖ.Тип.Значение = 4;
ИначеЕсли ВыборкаПоШапкеДокумента.ТипСведений = Перечисления.ТипыСведенийСЗВ_СТАЖ.НазначениеВыплатПоОСС Тогда
ФорматСЗВ_СТАЖ.Тип.Значение = 5;
КонецЕсли;
ФорматСЗВ_СТАЖ.ОтчетныйПериод.Значение = ВыборкаПоШапкеДокумента.Год;
Если ЗначениеЗаполнено(ВыборкаПоШапкеДокумента.КорректируемыйПериод) Тогда
ФорматСЗВ_СТАЖ.КоррОтмПериод.Значение = Год(ВыборкаПоШапкеДокумента.КорректируемыйПериод);
КонецЕсли;
ПерсонифицированныйУчет.УстановитьВыводВФайл(ФорматСЗВ_СТАЖ.КоррОтмПериод, "Значение");
УзелСЗВ_СТАЖ = ЗарплатаКадры.ДобавитьУзелВДеревоXML(УзелСотрудника, "СЗВ-СТАЖ", "");
ЗарплатаКадры.ДобавитьИнформациюВДерево(УзелСЗВ_СТАЖ, ФорматСЗВ_СТАЖ);
ВписатьЗаписиОСтажеВНаборДанныхЕФС1(УзелСЗВ_СТАЖ, ФорматСтажевыйПериод, ВыборкаСТАЖ);
КонецЦикла;
КонецЕсли;
Если РазделыЕФС1.ДНП Тогда
УзелДНП = ЗарплатаКадры.ДобавитьУзелВДеревоXML(УзелСЗВ, "ДНП", "");
ФорматДНП = ОбщегоНазначения.СкопироватьРекурсивно(ФорматСЗВ.ДНП.Значение);
ФорматОснование = ОбщегоНазначения.СкопироватьРекурсивно(ФорматДНП.ОснованиеДНП.Значение);
ФорматДНП.Удалить("ОснованиеДНП");
Если ВыборкаПоШапкеДокумента.ТипСведений = Перечисления.ТипыСведенийСЗВ.КОРРЕКТИРУЮЩАЯ Тогда
ФорматДНП.Тип.Значение = 2;
ИначеЕсли ВыборкаПоШапкеДокумента.ТипСведений = Перечисления.ТипыСведенийСЗВ.ОТМЕНЯЮЩАЯ Тогда
ФорматДНП.Тип.Значение = 3;
Иначе
ФорматДНП.Тип.Значение = 1;
КонецЕсли;
ФорматДНП.ОтчетныйПериод.Значение = ВыборкаПоШапкеДокумента.Год;
Если ВыборкаПоШапкеДокумента.ТипСведений = Перечисления.ТипыСведенийСЗВ.КОРРЕКТИРУЮЩАЯ
Или ВыборкаПоШапкеДокумента.ТипСведений = Перечисления.ТипыСведенийСЗВ.ОТМЕНЯЮЩАЯ Тогда
ФорматДНП.КоррОтмПериод.Значение = ВыборкаПоШапкеДокумента.Год;
КонецЕсли;
ПерсонифицированныйУчет.УстановитьВыводВФайл(ФорматДНП.КоррОтмПериод, "Значение");
ФорматВсегоШтатФакт = ОбщегоНазначения.СкопироватьРекурсивно(ФорматДНП);
ФорматВсегоШтатФакт.Удалить("Тип");
ФорматВсегоШтатФакт.Удалить("ОтчетныйПериод");
ФорматВсегоШтатФакт.Удалить("КоррОтмПериод");
ФорматДНП.Удалить("ЕФС__ВсегоШтат");
ФорматДНП.Удалить("ЕФС__ВсегоФакт");
ЗарплатаКадры.ДобавитьИнформациюВДерево(УзелДНП, ФорматДНП);
ФорматОУТ = ОбщегоНазначения.СкопироватьРекурсивно(ФорматОснование.ЕФС__ОУТ);
ФорматОснование.Удалить("ЕФС__ОУТ");
Пока ВыборкаДНП.Следующий() Цикл
НаборЗаписейОснование = ОбщегоНазначения.СкопироватьРекурсивно(ФорматОснование);
НаборЗаписейОснование.ЕФС__Подразделение.Значение =ВРег(ВыборкаДНП.НаименованиеПодразделения);
НаборЗаписейОснование.ЕФС__Профессия.Значение = ВРег(ВыборкаДНП.НаименованиеДолжности);
НаборЗаписейОснование.ЕФС__КоличествоШтат.Значение = ВыборкаДНП.КоличествоРабочихМест;
НаборЗаписейОснование.ЕФС__КоличествоФакт.Значение = ВыборкаДНП.КоличествоРаботающих;
НаборЗаписейОснование.ЕФС__Описание.Значение = ВРег(ВыборкаДНП.ХарактерВыполняемыхРабот);
НаборЗаписейОснование.ЕФС__Документы.Значение = ВРег(ВыборкаДНП.ПервичныеДокументы);
УзелОснование = ЗарплатаКадры.ДобавитьУзелВДеревоXML(УзелДНП, "ОснованиеДНП", "");
ЗарплатаКадры.ДобавитьИнформациюВДерево(УзелОснование, НаборЗаписейОснование);
Если ЗначениеЗаполнено(ВыборкаДНП.ОсобыеУсловияТруда)
Или ЗначениеЗаполнено(ВыборкаДНП.ОснованиеДосрочногоНазначенияПенсииКод) Тогда
НаборЗаписейОУТ = ОбщегоНазначения.СкопироватьРекурсивно(ФорматОУТ);
НаборЗаписейОУТ.Значение.ЕФС__КодОснованиеВЛ = СокрЛП(ВыборкаДНП.ОснованиеДосрочногоНазначенияПенсииКод);
НаборЗаписейОУТ.Значение.ЕФС__КодОУТ = СокрЛП(ВыборкаДНП.ОсобыеУсловияТрудаКод);
НаборЗаписейОУТ.Значение.ЕФС__ПозицияСписка = СокрЛП(ВыборкаДНП.КодПозицииСпискаКод);
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейОУТ, "ЕФС__КодОснованиеВЛ");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейОУТ, "ЕФС__КодОУТ");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейОУТ, "ЕФС__ПозицияСписка");
ЗарплатаКадры.ДобавитьИнформациюВДерево(УзелОснование, Новый Структура("ЕФС__ОУТ", НаборЗаписейОУТ));
КонецЕсли;
КонецЦикла;
ФорматВсегоШтатФакт.ЕФС__ВсегоШтат.Значение = ВыборкаПоШапкеДокумента.ВсегоРабочихМестДНП;
ФорматВсегоШтатФакт.ЕФС__ВсегоФакт.Значение = ВыборкаПоШапкеДокумента.ВсегоРаботающихДНП;
ЗарплатаКадры.ДобавитьИнформациюВДерево(УзелДНП, ФорматВсегоШтатФакт);
КонецЕсли;
Если РазделыЕФС1.ДСВ Тогда
Если ВыборкаПоШапкеДокумента.СуммаДСВРаботника > 0 Тогда
УзелДСВ = ЗарплатаКадры.ДобавитьУзелВДеревоXML(УзелСЗВ, "ДСВ", "");
ФорматДСВ = ОбщегоНазначения.СкопироватьРекурсивно(ФорматСЗВ.ДСВ.Значение);
ФорматРеестрДСВ = ОбщегоНазначения.СкопироватьРекурсивно(ФорматДСВ.РеестрДСВ.Значение);
ФорматДСВ.Удалить("РеестрДСВ");
ФорматПлатежноеПоручение = ФорматДСВ.ПлатежноеПоручение.Значение;
ФорматПлатежноеПоручение.Реквизиты.Значение.Дата = Формат(ВыборкаПоШапкеДокумента.ДатаПоручения, "ДФ=yyyy-MM-dd");
ФорматПлатежноеПоручение.Реквизиты.Значение.Номер = ВыборкаПоШапкеДокумента.НомерПоручения;
ФорматПлатежноеПоручение.ДатаИсполнения.Значение = Формат(ВыборкаПоШапкеДокумента.ДатаИсполненияПоручения, "ДФ=yyyy-MM-dd");
ФорматПлатежноеПоручение.СуммаИтогоПП.Значение = ВыборкаПоШапкеДокумента.СуммаДСВОбщая;
ФорматДСВ.Период.Значение = ВыборкаПоШапкеДокумента.Год;
ФорматДСВ.НомерРеестра.Значение = ВыборкаПоШапкеДокумента.НомерПачки;
ФорматДСВ.СуммаВсегоДСВРаботника.Значение = ВыборкаПоШапкеДокумента.СуммаДСВРаботника;
ФорматДСВ.КоличествоЗЛвРеестре.Значение = ВыборкаПоШапкеДокумента.ВзносыРаботникаКоличество;
ПерсонифицированныйУчет.УстановитьВыводВФайл(ФорматДСВ.СуммаВсегоДСВРаботника, "Значение");
ПерсонифицированныйУчет.УстановитьВыводВФайл(ФорматДСВ.СуммаВсегоВзносовРаботодателя, "Значение");
ЗарплатаКадры.ДобавитьИнформациюВДерево(УзелДСВ, ФорматДСВ);
УзелРеестрДСВ = ЗарплатаКадры.ДобавитьУзелВДеревоXML(УзелДСВ, "РеестрДСВ", "");
ВыборкаДСВ.Сбросить();
Пока ВыборкаДСВ.Следующий() Цикл
Если ВыборкаДСВ.ВзносыРаботника = 0 Тогда
Продолжить;
КонецЕсли;
// Данные по физлицу
Фамилия = СокрЛП(ВыборкаДСВ.Фамилия);
Имя = СокрЛП(ВыборкаДСВ.Имя);
Отчество = СокрЛП(ВыборкаДСВ.Отчество);
НаборЗаписейЗЛ = ОбщегоНазначения.СкопироватьРекурсивно(ФорматРеестрДСВ.ЗЛ.Значение);
НаборЗаписейЗЛ.УТ2__СНИЛС.Значение = ВыборкаДСВ.СтраховойНомерПФР;
НаборЗаписейЗЛ.СуммаДСВРаботника.Значение = ВыборкаДСВ.ВзносыРаботника;
НаборЗаписейФИО = НаборЗаписейЗЛ.УТ2__ФИО.Значение;
НаборЗаписейФИО.УТ2__Фамилия = ВРег(Фамилия);
НаборЗаписейФИО.УТ2__Имя = ВРег(Имя);
НаборЗаписейФИО.УТ2__Отчество = ВРег(Отчество);
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейЗЛ.УТ2__ФИО, "УТ2__Фамилия");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейЗЛ.УТ2__ФИО, "УТ2__Имя");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейЗЛ.УТ2__ФИО, "УТ2__Отчество");
ПерсонифицированныйУчет.УстановитьВыводВФайл(НаборЗаписейЗЛ.СуммаДСВРаботника, "Значение");
ПерсонифицированныйУчет.УстановитьВыводВФайл(НаборЗаписейЗЛ.СуммаВзносовРаботодателя, "Значение");
УзелСотрудника = ЗарплатаКадры.ДобавитьУзелВДеревоXML(УзелРеестрДСВ, "ЗЛ", "");
ЗарплатаКадры.ДобавитьИнформациюВДерево(УзелСотрудника, НаборЗаписейЗЛ);
КонецЦикла;
КонецЕсли;
Если ВыборкаПоШапкеДокумента.СуммаДСВРаботодателя > 0 Тогда
УзелДСВ = ЗарплатаКадры.ДобавитьУзелВДеревоXML(УзелСЗВ, "ДСВ", "");
ФорматДСВ = ОбщегоНазначения.СкопироватьРекурсивно(ФорматСЗВ.ДСВ.Значение);
ФорматРеестрДСВ = ОбщегоНазначения.СкопироватьРекурсивно(ФорматДСВ.РеестрДСВ.Значение);
ФорматДСВ.Удалить("РеестрДСВ");
ФорматПлатежноеПоручение = ФорматДСВ.ПлатежноеПоручение.Значение;
ФорматПлатежноеПоручение.Реквизиты.Значение.Дата = Формат(ВыборкаПоШапкеДокумента.ДатаПоручения, "ДФ=yyyy-MM-dd");
ФорматПлатежноеПоручение.Реквизиты.Значение.Номер = ВыборкаПоШапкеДокумента.НомерПоручения;
ФорматПлатежноеПоручение.ДатаИсполнения.Значение = Формат(ВыборкаПоШапкеДокумента.ДатаИсполненияПоручения, "ДФ=yyyy-MM-dd");
ФорматПлатежноеПоручение.СуммаИтогоПП.Значение = ВыборкаПоШапкеДокумента.СуммаДСВОбщая;
ФорматДСВ.Период.Значение = ВыборкаПоШапкеДокумента.Год;
ФорматДСВ.НомерРеестра.Значение = ВыборкаПоШапкеДокумента.НомерПачки;
ФорматДСВ.СуммаВсегоВзносовРаботодателя.Значение = ВыборкаПоШапкеДокумента.СуммаДСВРаботодателя;
ФорматДСВ.КоличествоЗЛвРеестре.Значение = ВыборкаПоШапкеДокумента.ВзносыРаботодателяКоличество;
ПерсонифицированныйУчет.УстановитьВыводВФайл(ФорматДСВ.СуммаВсегоДСВРаботника, "Значение");
ПерсонифицированныйУчет.УстановитьВыводВФайл(ФорматДСВ.СуммаВсегоВзносовРаботодателя, "Значение");
ЗарплатаКадры.ДобавитьИнформациюВДерево(УзелДСВ, ФорматДСВ);
УзелРеестрДСВ = ЗарплатаКадры.ДобавитьУзелВДеревоXML(УзелДСВ, "РеестрДСВ", "");
ВыборкаДСВ.Сбросить();
Пока ВыборкаДСВ.Следующий() Цикл
Если ВыборкаДСВ.ВзносыРаботодателя = 0 Тогда
Продолжить;
КонецЕсли;
// Данные по физлицу
Фамилия = СокрЛП(ВыборкаДСВ.Фамилия);
Имя = СокрЛП(ВыборкаДСВ.Имя);
Отчество = СокрЛП(ВыборкаДСВ.Отчество);
НаборЗаписейЗЛ = ОбщегоНазначения.СкопироватьРекурсивно(ФорматРеестрДСВ.ЗЛ.Значение);
НаборЗаписейЗЛ.УТ2__СНИЛС.Значение = ВыборкаДСВ.СтраховойНомерПФР;
НаборЗаписейЗЛ.СуммаВзносовРаботодателя.Значение = ВыборкаДСВ.ВзносыРаботодателя;
НаборЗаписейФИО = НаборЗаписейЗЛ.УТ2__ФИО.Значение;
НаборЗаписейФИО.УТ2__Фамилия = ВРег(Фамилия);
НаборЗаписейФИО.УТ2__Имя = ВРег(Имя);
НаборЗаписейФИО.УТ2__Отчество = ВРег(Отчество);
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейЗЛ.УТ2__ФИО, "УТ2__Фамилия");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейЗЛ.УТ2__ФИО, "УТ2__Имя");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейЗЛ.УТ2__ФИО, "УТ2__Отчество");
ПерсонифицированныйУчет.УстановитьВыводВФайл(НаборЗаписейЗЛ.СуммаДСВРаботника, "Значение");
ПерсонифицированныйУчет.УстановитьВыводВФайл(НаборЗаписейЗЛ.СуммаВзносовРаботодателя, "Значение");
УзелСотрудника = ЗарплатаКадры.ДобавитьУзелВДеревоXML(УзелРеестрДСВ, "ЗЛ", "");
ЗарплатаКадры.ДобавитьИнформациюВДерево(УзелСотрудника, НаборЗаписейЗЛ);
КонецЦикла;
КонецЕсли;
КонецЕсли;
НаборЗаписейРуководитель.Руководитель.Значение.УТ2__Должность.Значение = ВРег(ВыборкаПоШапкеДокумента.ДолжностьРуководителя);
НаборЗаписейФИО = НаборЗаписейРуководитель.Руководитель.Значение.УТ2__ФИО.Значение;
НаборЗаписейФИО.УТ2__Фамилия = ВРег(ВыборкаПоШапкеДокумента.ФамилияРуководителя);
НаборЗаписейФИО.УТ2__Имя = ВРег(ВыборкаПоШапкеДокумента.ИмяРуководителя);
НаборЗаписейФИО.УТ2__Отчество = ВРег(ВыборкаПоШапкеДокумента.ОтчествоРуководителя);
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейРуководитель.Руководитель.Значение.УТ2__ФИО, "УТ2__Фамилия");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейРуководитель.Руководитель.Значение.УТ2__ФИО, "УТ2__Имя");
ПерсонифицированныйУчет.УстановитьВыводВФайлСвойстваЗначенияЭлемента(НаборЗаписейРуководитель.Руководитель.Значение.УТ2__ФИО, "УТ2__Отчество");
ЗарплатаКадры.ДобавитьИнформациюВДерево(УзелЕФС1, НаборЗаписейРуководитель);
НаборЗаписейДатаЗаполнения.ДатаЗаполнения.Значение = Формат(ВыборкаПоШапкеДокумента.Дата, "ДФ=yyyy-MM-dd");
ЗарплатаКадры.ДобавитьИнформациюВДерево(УзелЕФС1, НаборЗаписейДатаЗаполнения);
// Служебная информация о файле
НаборЗаписейСлужебнаяИнформация = ЗарплатаКадры.ЗагрузитьФорматНабораЗаписей(ДеревоФормата, "СлужебнаяИнформация");
Если ЗначениеЗаполнено(ВыборкаПоШапкеДокумента.ИмяФайлаДляПФР) Тогда
ЧастиИмениФайла = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СокрЛП(ВыборкаПоШапкеДокумента.ИмяФайлаДляПФР),"_");
НаборЗаписейСлужебнаяИнформация.АФ5__GUID.Значение = ЧастиИмениФайла[ЧастиИмениФайла.ВГраница()];
КонецЕсли;
НаборЗаписейСлужебнаяИнформация.АФ5__ДатаВремя.Значение = ПерсонифицированныйУчет.ПредставлениеДатыВФорматеdateTimeСЧасовымПоясом(ВыборкаПоШапкеДокумента.Дата);
НаборЗаписейСлужебнаяИнформация.АФ5__ПрограммаПодготовки.Значение = ВРег(РегламентированнаяОтчетность.НазваниеИВерсияПрограммы());
ЗарплатаКадры.ДобавитьИнформациюВДерево(ЗарплатаКадры.ДобавитьУзелВДеревоXML(УзелПФР, "СлужебнаяИнформация",""), НаборЗаписейСлужебнаяИнформация);
// Преобразуем дерево в строковое описание XML
ПотокВыгрузкиXML = ЗарплатаКадры.СоздатьПотокXML(, "UTF-8");
ЗарплатаКадры.ЗаписатьУзелДереваXMLВXML(ДеревоВыгрузки, ПотокВыгрузкиXML, "xsi", "http://www.w3.org/2001/XMLSchema", Ложь);
ТекстФайла = ЗарплатаКадры.ЗаписатьПотокXML(ПотокВыгрузкиXML);
Возврат СтрЗаменить(ТекстФайла, "__", ":");
КонецФункции
Исправил расширение под релиз 3.1.29.78
Проверено на следующих конфигурациях и релизах:
- Зарплата и управление персоналом, редакция 3.1, релизы 3.1.29.78