С развитием электронного документооборота и введением формы СЗВ-ТД (а позднее и ЕФС-1), работодатели столкнулись с жестким требованием контролирующих органов: указывать код выполняемой функции по ОКЗ. В определенный период в программе 1С:Зарплата и управление персоналом 3.1 возникла ситуация, когда при мероприятии «ПРИЕМ» код заполнялся корректно, а при мероприятии «УВОЛЬНЕНИЕ» оставался пустым. Рассмотрим причины этой проблемы и разберем все способы её решения: от простых настроек до программной правки кода.
Первоначально, согласно альбому форматов ПФР 2021 года, код ОКЗ считался обязательным только для мероприятий «ПРИЕМ» и «ПЕРЕВОД». Программные продукты 1С были настроены соответствующим образом: поле КодПоОКЗ в документе «Увольнение» просто не выводилось или игнорировалось при выгрузке. Однако позднее требования изменились, и контролирующие органы начали требовать заполнение кода ОКЗ для всех кадровых событий, включая увольнение, приостановление и возобновление трудового договора.
Проанализируем ситуацию: если в вашем релизе 1С при формировании отчета поле остается пустым, это означает, что либо конфигурация устарела, либо в кадровых данных сотрудника допущена ошибка. Выясним причину, изучив настройки программы.
Прежде чем приступать к программированию, проверим базовые настройки учета. Код ОКЗ в 1С:ЗУП привязан к справочнику ТрудовыеФункции. Рассмотрим алгоритм проверки:
Важный нюанс: если сотрудник работает в организации давно, его кадровые документы «Прием на работу» могли быть созданы до того, как заполнение трудовых функций стало обязательным. В этом случае при увольнении программа не находит «источник» кода. Попробуйте обновить данные в документе Увольнение или временно указать трудовую функцию в кадровом переводе.
Для автоматического решения проблемы фирма 1С выпустила специальные патчи. Если ваша база находится на поддержке и включена загрузка исправлений, проверьте наличие патча EF_70016573.
Данное исправление принудительно включает заполнение блока КодВФпоОКЗ для мероприятия «Увольнение» в XML-файле выгрузки. Если после установки патча код всё равно не появляется, необходимо перепровести документ Увольнение и перезаполнить форму СЗВ-ТД (ЕФС-1).
Если обновление конфигурации по каким-то причинам невозможно, мы можем самостоятельно внести изменения в программный код через расширение конфигурации. Перед внесением правок рекомендуется выполнить анализ состава расширений на наличие ошибок. Рассмотрим, как включить доступность поля КодПоОКЗ для мероприятия «Увольнение».
Нам необходимо изменить логику работы общего модуля ЭлектронныеТрудовыеКнижкиКлиентСервер. В этом модуле есть процедура ИменаДоступныхПолейВидовМероприятий, которая определяет, какие данные доступны для каждого типа события.
Разберем пример кода, который нужно добавить в расширение:
&После("ИменаДоступныхПолейВидовМероприятий")
Процедура Расш_ИменаДоступныхПолейВидовМероприятий(ДоступныеПоля)
// Находим ключ для Увольнения и добавляем в список доступных полей КодПоОКЗ
ТипУвольнение = ПредопределенноеЗначение("Перечисление.ВидыМероприятийТрудовойДеятельности.Увольнение");
Если ДоступныеПоля.Содержит(ТипУвольнение) Тогда
ТекущиеПоля = ДоступныеПоля[ТипУвольнение];
Если Найти(ТекущиеПоля, "КодПоОКЗ") = 0 Тогда
ДоступныеПоля[ТипУвольнение] = ТекущиеПоля + ",КодПоОКЗ,ТрудоваяФункция";
КонецЕсли;
КонецЕсли;
КонецПроцедуры
После применения этого кода в форме документа Сведения о трудовой деятельности при выборе мероприятия «Увольнение» появится возможность вручную или автоматически заполнить код ОКЗ.
Все данные для отчетности СЗВ-ТД и ЕФС-1 собираются из регистра сведений МероприятияТрудовойДеятельности. Если документ Увольнение не делает запись в колонку КодПоОКЗ, отчет будет пустым.
Рассмотрим использование внешней обработки для массового заполнения пропущенных кодов в регистре. Проанализируем логику работы такой обработки:
МероприятияТрудовойДеятельности, где поле КодПоОКЗ пустое, а вид мероприятия — Увольнение.Пример фрагмента кода для записи в регистр:
НаборЗаписей = РегистрыСведений.МероприятияТрудовойДеятельности.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ДокументУвольнение);
НаборЗаписей.Прочитать();
Для Каждого Запись Из НаборЗаписей Цикл
Если Запись.ВидМероприятия = Перечисления.ВидыМероприятийТрудовойДеятельности.Увольнение Тогда
Запись.КодПоОКЗ = ПолученныйКодИзСправочника;
Запись.ТрудоваяФункция = СсылкаНаТрудовуюФункцию;
КонецЕсли;
КонецЦикла;
НаборЗаписей.Записать();
Важно помнить, что с 1 января 2023 года форма СЗВ-ТД была заменена подразделом 1.1 формы ЕФС-1. Правила заполнения кода ОКЗ стали еще строже. С точки зрения 1С, объекты метаданных остались практически теми же, но изменились алгоритмы формирования XML-файла. В актуальных релизах 1С:ЗУП (начиная с 3.1.24 и выше) проблема с незаполнением кода ОКЗ при увольнении решена на уровне ядра конфигурации. Если вы до сих пор используете старые релизы (например, 3.1.18 или 3.1.23), настоятельно рекомендуем выполнить обновление, так как ручные правки могут не учитывать новые требования к формату выгрузки ЕФС-1.
Подводя итог, можно сказать, что отсутствие кода ОКЗ при увольнении — это решаемая техническая задача. Разберем краткий чек-лист для исправления ситуации:
Помните, что СФР (бывший ПФР) проверяет входящие файлы по жестким XSD-схемам. Отсутствие тега КодВФпоОКЗ приведет к отказу в приеме отчета с кодом ошибки 30 или 50. Своевременная настройка программы позволит избежать штрафов и обеспечит корректное ведение электронных трудовых книжек сотрудников.