При формировании отчетности по форме СЗВ-ТД (которая сейчас является частью подраздела 1.1 формы ЕФС-1) пользователи программного продукта 1С:Зарплата и управление персоналом 3.1 часто сталкиваются с неприятной ситуацией: в колонках мероприятий дата приказа заполнена, а номер документа основания остается пустым. При этом ручное редактирование в самой форме отчета зачастую заблокировано, что ставит бухгалтера или кадровика в тупик. Давайте подробно разберем, почему это происходит, как работает программный код в типовых конфигурациях и какими способами можно восстановить корректное заполнение данных.
Одной из наиболее частых причин «исчезновения» номера является работа алгоритма удаления префиксов. В системе 1С по умолчанию включена или может быть настроена опция "Удалять префиксы организации и информационной базы из номеров кадровых приказов". Проанализируем, как это влияет на результат. Если номер вашего приказа содержит сложные символы, например, несколько дефисов (ЗПК-00071к-12), стандартная библиотека префиксации может дать сбой.
Алгоритм ищет разделители, чтобы отсечь системную часть номера (префикс организации и префикс информационной базы). В ситуациях, когда в номере встречается два и более дефиса, функция обработки номеров может ошибочно принять за префикс всю строку до последнего дефиса или вовсе вернуть пустое значение, если структура номера не соответствует ожидаемому шаблону. Рассмотрим подробнее программную логику, которая отвечает за этот процесс.
В системе за вывод номера отвечает экспортная функция НомерНаПечать. В актуальных релизах 1С:ЗУП 3.1 её логика выглядит следующим образом:
Функция НомерНаПечать(Знач Номер, Знач НомерПриказа = Неопределено) Экспорт
Если ЗначениеЗаполнено(НомерПриказа) Тогда
Возврат СокрЛП(НомерПриказа);
КонецЕсли;
НастройкиПечатныхФорм = ЗарплатаКадры.НастройкиПечатныхФорм();
Если НастройкиПечатныхФорм.УдалятьПрефиксыОрганизацииИИБИзНомеровКадровыхПриказов Тогда
Номер = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Номер, Истина, Истина);
КонецЕсли;
Возврат Номер;
КонецФункции
Из кода видно, что если включена настройка удаления префиксов, вызывается метод ПрефиксацияОбъектовКлиентСервер.НомерНаПечать. Именно этот метод может превратить сложный номер в пустую строку или «тыкву», если в номере присутствуют лишние разделители.
Чтобы решить проблему с «ломающимися» номерами, разработчики фирмы «1С» ввели в кадровые документы специальный реквизит — "Номер для печати" (в конфигураторе это поле часто называется ПечатныйНомер). Выясним, как это работает на практике:
Важный нюанс: если вы заполнили поле «Номер для печати» уже после того, как создали и провели документ СЗВ-ТД, изменения в отчете не появятся сами собой. Мероприятия в СЗВ-ТД фиксируются в специальном регистре сведений МероприятияТрудовойДеятельности в момент проведения кадрового приказа.
Если в вашей организации принято использовать номера с префиксами и вы не хотите, чтобы программа их удаляла, можно отключить соответствующую настройку. Разберем по шагам:
После этого программа перестанет преобразовывать номера, и они будут попадать в СЗВ-ТД в том виде, в котором они записаны в поле Номер (включая лидирующие нули и префиксы). Однако помните, что для ПФР (СФР) наличие системных префиксов типа «ЦБ» может быть нежелательным.
Если документов много и ручная правка каждого приказа невозможна, проанализируем ситуацию с точки зрения автоматизации. Мы можем воспользоваться обработкой «Групповое изменение реквизитов»:
Прием на работу).Часто пользователи исправляют данные в приказе, но в СЗВ-ТД номер всё равно остается пустым. Выясним причину: документ СЗВ-ТД «запоминает» состояние записи на момент своего заполнения. Чтобы обновить сведения, выполните следующие действия:
МероприятияТрудовойДеятельности.Если вы не хотите менять настройки префиксации и не желаете заставлять пользователей заполнять лишнее поле, можно доработать поведение системы с помощью расширения. Рассмотрим пример перехвата функции НомерНаПечать. Мы можем добавить проверку: если стандартная функция возвращает пустую строку, но основной номер документа при этом заполнен — возвращать основной номер как есть.
Проанализируем пример кода для расширения:
&Вместо("НомерНаПечать")
Функция Мой_НомерНаПечать(Знач Номер, Знач НомерПриказа = Неопределено)
Результат = ПродолжитьВызов(Номер, НомерПриказа);
// Если после типовой обработки номер стал пустым, а исходный номер был
Если ПустаяСтрока(Результат) И НЕ ПустаяСтрока(Номер) Тогда
Возврат Номер; // Возвращаем исходный номер с префиксами
КонецЕсли;
Возврат Результат;
КонецФункции
Такой подход гарантирует, что в СЗВ-ТД никогда не попадет «пустота», если в самом документе-основании номер физически присутствует. Это избавляет от необходимости ручного контроля поля "Номер для печати" в каждом новом документе.
Подводя итог, можно сказать, что проблема чаще всего кроется в конфликте формата вашего номера (дефисы, точки, сложные префиксы) и алгоритма очистки префиксов в 1С. Самым «чистым» решением с точки зрения типовой методологии является использование поля «Номер для печати», так как оно создано специально для обхода подобных ограничений. Если же проблема носит массовый характер, стоит проверить общую настройку удаления префиксов в дополнительных настройках программы.