Как формируется стаж для СЗВ-СТАЖ и ЕФС-1 в ЗУП 3.1 и можно ли заполнять его на основании Табеля?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом
← На главную

Постановка задачи

В практике доработки конфигураций 1С:Зарплата и Управление Персоналом (ЗУП) программисты часто сталкиваются с требованиями кадровиков изменить стандартное поведение программы. В данной ситуации мы рассмотрим кейс, когда перед разработчиком стоит задача изменить логику заполнения таблицы ЗаписиОСтаже в документе отчетности (ранее СЗВ-СТАЖ, ныне подраздел 1.2 формы ЕФС-1). Задача заключается в том, чтобы периоды стажа подтягивались напрямую из документа Табель с определенной группировкой, игнорируя стандартный алгоритм заполнения.

Кроме того, автор столкнулся с технической проблемой: при попытке отладки расширения таблица значений ЗаписиОСтаже в отладчике отображается пустой, хотя без точек останова данные заполняются (пусть и не так, как нужно).

Давайте разберем эту ситуацию со всех сторон: технической (отладка), методологической (как ЗУП хранит данные о стаже) и юридической (почему требование кадров может быть опасным).

Технические нюансы отладки в расширениях

Начнем с проблемы "исчезновения" данных в отладчике. Ситуация, когда под отладчиком коллекция пуста, а в рабочем режиме заполняется, может быть вызвана несколькими факторами платформы 1С:Предприятие.

  1. Тип данных ДанныеФормыКоллекция. В управляемых формах табличные части представлены типом ДанныеФормыКоллекция. Это не чистая ТаблицаЗначений. При передаче управления из формы в модуль объекта (или менеджера) происходит конвертация данных. Если вы перехватываете управление в расширении формы "После" или "Вместо" стандартного заполнения, отладчик может некорректно отображать состояние объекта, если контекст вызова смещен.
  2. Фоновые задания. В современных версиях ЗУП многие тяжелые операции заполнения могут выполняться в длительных операциях (фоновых заданиях). Если отладка фоновых заданий не включена в настройках подключения к базе, вы просто не попадаете внутрь процесса реального заполнения, а видите лишь пустую оболочку на клиенте до момента возврата результата.
  3. Оптимизация компилятора. Иногда платформа оптимизирует код так, что значения переменных не видны, если они явно не читаются в дальнейшем коде внутри текущей процедуры.

Архитектура хранения стажа в ЗУП 3.1

Теперь перейдем к главному вопросу: почему попытка построить стаж на основании документа Табель является методологической ошибкой.

Многие пользователи и начинающие программисты ошибочно полагают, что документ Табель является первичным источником информации о том, работал сотрудник или болел, и, следовательно, именно он должен формировать стаж. В ЗУП 3.1 логика иная.

Разберем цепочку формирования данных для ПФР (СФР):

  1. Кадровые документы (Прием, Перевод, Увольнение) — определяют плановые параметры: должность, подразделение, график работы, наличие особых условий труда (вредность, территориальные условия).
  2. Документы отсутствий (Больничный лист, Отпуск, Отпуск без сохранения оплаты) — фиксируют отклонения. Именно они порождают записи с кодами ВРНЕТРУД, ДЛОТПУСК, НЕОПЛ и т.д.
  3. Начисление зарплаты и взносов — это самый важный этап. Для ПФР стаж неразрывно связан с уплатой взносов. Период работы включается в стаж, только если за него начислены взносы.

В ЗУП 3.1 данные для отчетности собираются не по документам, а по регистрам сведений. Ключевым является регистр ПараметрыПериодовСтажаПФР. Он заполняется при проведении документов начислений и кадровых событий.

Почему Табель не подходит для стажа?

Документ Табель в ЗУП 3.1 предназначен преимущественно для уточнения фактически отработанного времени при расчете зарплаты (метод отклонений vs метод сплошной регистрации) и для печатной формы Т-13. Он не несет в себе информации о том:

Если мы будем заполнять отчетность по табелю, мы рискуем получить ситуацию, когда в стаже стоит "Работа", а взносы за этот период не начислены (например, ошибочно поставили "Я" вместо "НН"). Это приведет к грубым ошибкам при сверке разделов ЕФС-1.

Проблема "рваных" периодов и правило 80%

Проанализируем истинную причину запроса кадровиков. Как выяснилось в ходе обсуждения, они хотят видеть в стаже периоды, которые в табеле отмечены особым образом, но типовая программа их игнорирует.

Чаще всего речь идет о льготном стаже (вредные условия труда) при неполной занятости в течение дня. Рассмотрим пример:

Сотрудник работает врачом (льготный стаж). В табеле за день стоит:

Кадровик ожидает, что этот день попадет в отчет с кодом особых условий. Однако программа этого не делает. Почему?

Существует законодательное требование (подтвержденное Правилами исчисления периодов работы, дающей право на досрочное назначение трудовой пенсии), согласно которому в льготный стаж включаются периоды работы, выполняемой постоянно в течение полного рабочего дня. Под полным рабочим днем понимается выполнение работы в условиях труда не менее 80% рабочего времени.

Посмотрим, как реагирует ЗУП 3.1:

  1. Если в табеле указан полный день работы во вредных условиях — документ СЗВ-СТАЖ (ЕФС-1) заполняется кодом особых условий автоматически.
  2. Если в табеле день разбит на части (например, есть явки по разным видам времени или условиям), и доля льготного времени недостаточна или неоднозначна — программа не включает этот день в льготный стаж, чтобы обезопасить организацию от штрафов.

Решение проблемы без программирования

Вместо того чтобы писать расширение, которое "насильно" затянет данные из табеля в отчет (что чревато юридическими последствиями и штрафами за недостоверные сведения), необходимо использовать штатные механизмы учета особых условий труда.

Рассмотрим правильные варианты настройки:

Вариант 1. Использование механизма Территорий.

Если сотрудники перемещаются между условиями труда (вредные / нормальные) в течение месяца, но полными сменами, используйте справочник Территории.

Вариант 2. Штатное расписание и Должности.

Убедитесь, что для позиции штатного расписания или должности корректно заполнены реквизиты в группе "Особые условия труда". Именно отсюда данные попадают в регистры учета стажа при начислении зарплаты.

Вариант 3. Документ "Перевод на другую работу".

Если изменение условий труда носит временный характер, оформите кадровый перевод. Это создаст запись в регистре ПараметрыПериодовСтажаПФР, и отчет заполнится корректно без вмешательства программиста.

Пример программного доступа к данным стажа

Если вам всё же необходимо проанализировать, как именно формируются данные для стажа программно (для создания собственного отчета, а не для подмены регламентированного), обратите внимание на следующие объекты.

Основной менеджер, отвечающий за сбор данных:


// Примерный путь к процедурам сбора данных ПФР
Документы.СведенияОСтраховомСтажеЗастрахованныхЛицСЗВ_СТАЖ.ЗаполнитьСведенияОСтаже(...);
// Внутри вызываются методы общих модулей, например:
УчетСтажаПФР.СформироватьСведенияОСтаже(...);

Анализ данных в регистре сведений:


ВЫБРАТЬ
	Стаж.Сотрудник,
	Стаж.ДатаНачала,
	Стаж.ДатаОкончания,
	Стаж.ВидСтажаПФР,
	Стаж.ОсобыеУсловияТруда
ИЗ
	РегистрСведений.ПараметрыПериодовСтажаПФР КАК Стаж
ГДЕ
	Стаж.Сотрудник = &Сотрудник
	И Стаж.ДатаНачала МЕЖДУ &НачалоПериода И &КонецПериода

Выводы

Попытка реализовать заполнение СЗВ-СТАЖ (ЕФС-1) на основании Табеля — это борьба со следствием, а не с причиной. Проблема заключается в том, что текущий кадровый учет в базе не соответствует требованиям для автоматического формирования льготного стажа.

Рекомендация:

  1. Не модифицируйте алгоритм заполнения регламентированной отчетности через расширения, опирающиеся на табель. Это создает высокий риск сдачи некорректных данных.
  2. Объясните заказчику (кадровикам), что программа работает согласно законодательству (правило 80% времени для льготников).
  3. Если периоды действительно должны войти в стаж, скорректируйте учет с помощью кадровых переводов или настройки территорий, чтобы данные попали в регистр ПараметрыПериодовСтажаПФР штатным путем.
← На главную