В практике доработки конфигураций 1С:Зарплата и Управление Персоналом (ЗУП) программисты часто сталкиваются с требованиями кадровиков изменить стандартное поведение программы. В данной ситуации мы рассмотрим кейс, когда перед разработчиком стоит задача изменить логику заполнения таблицы ЗаписиОСтаже в документе отчетности (ранее СЗВ-СТАЖ, ныне подраздел 1.2 формы ЕФС-1). Задача заключается в том, чтобы периоды стажа подтягивались напрямую из документа Табель с определенной группировкой, игнорируя стандартный алгоритм заполнения.
Кроме того, автор столкнулся с технической проблемой: при попытке отладки расширения таблица значений ЗаписиОСтаже в отладчике отображается пустой, хотя без точек останова данные заполняются (пусть и не так, как нужно).
Давайте разберем эту ситуацию со всех сторон: технической (отладка), методологической (как ЗУП хранит данные о стаже) и юридической (почему требование кадров может быть опасным).
Начнем с проблемы "исчезновения" данных в отладчике. Ситуация, когда под отладчиком коллекция пуста, а в рабочем режиме заполняется, может быть вызвана несколькими факторами платформы 1С:Предприятие.
ДанныеФормыКоллекция. Это не чистая ТаблицаЗначений. При передаче управления из формы в модуль объекта (или менеджера) происходит конвертация данных. Если вы перехватываете управление в расширении формы "После" или "Вместо" стандартного заполнения, отладчик может некорректно отображать состояние объекта, если контекст вызова смещен.Теперь перейдем к главному вопросу: почему попытка построить стаж на основании документа Табель является методологической ошибкой.
Многие пользователи и начинающие программисты ошибочно полагают, что документ Табель является первичным источником информации о том, работал сотрудник или болел, и, следовательно, именно он должен формировать стаж. В ЗУП 3.1 логика иная.
Разберем цепочку формирования данных для ПФР (СФР):
ВРНЕТРУД, ДЛОТПУСК, НЕОПЛ и т.д.В ЗУП 3.1 данные для отчетности собираются не по документам, а по регистрам сведений. Ключевым является регистр ПараметрыПериодовСтажаПФР. Он заполняется при проведении документов начислений и кадровых событий.
Почему Табель не подходит для стажа?
Документ Табель в ЗУП 3.1 предназначен преимущественно для уточнения фактически отработанного времени при расчете зарплаты (метод отклонений vs метод сплошной регистрации) и для печатной формы Т-13. Он не несет в себе информации о том:
Если мы будем заполнять отчетность по табелю, мы рискуем получить ситуацию, когда в стаже стоит "Работа", а взносы за этот период не начислены (например, ошибочно поставили "Я" вместо "НН"). Это приведет к грубым ошибкам при сверке разделов ЕФС-1.
Проанализируем истинную причину запроса кадровиков. Как выяснилось в ходе обсуждения, они хотят видеть в стаже периоды, которые в табеле отмечены особым образом, но типовая программа их игнорирует.
Чаще всего речь идет о льготном стаже (вредные условия труда) при неполной занятости в течение дня. Рассмотрим пример:
Сотрудник работает врачом (льготный стаж). В табеле за день стоит:
Кадровик ожидает, что этот день попадет в отчет с кодом особых условий. Однако программа этого не делает. Почему?
Существует законодательное требование (подтвержденное Правилами исчисления периодов работы, дающей право на досрочное назначение трудовой пенсии), согласно которому в льготный стаж включаются периоды работы, выполняемой постоянно в течение полного рабочего дня. Под полным рабочим днем понимается выполнение работы в условиях труда не менее 80% рабочего времени.
Посмотрим, как реагирует ЗУП 3.1:
Вместо того чтобы писать расширение, которое "насильно" затянет данные из табеля в отчет (что чревато юридическими последствиями и штрафами за недостоверные сведения), необходимо использовать штатные механизмы учета особых условий труда.
Рассмотрим правильные варианты настройки:
Вариант 1. Использование механизма Территорий.
Если сотрудники перемещаются между условиями труда (вредные / нормальные) в течение месяца, но полными сменами, используйте справочник Территории.
Перемещение между территориями или указывайте территорию в документе Табель (для целых дней).Вариант 2. Штатное расписание и Должности.
Убедитесь, что для позиции штатного расписания или должности корректно заполнены реквизиты в группе "Особые условия труда". Именно отсюда данные попадают в регистры учета стажа при начислении зарплаты.
Вариант 3. Документ "Перевод на другую работу".
Если изменение условий труда носит временный характер, оформите кадровый перевод. Это создаст запись в регистре ПараметрыПериодовСтажаПФР, и отчет заполнится корректно без вмешательства программиста.
Если вам всё же необходимо проанализировать, как именно формируются данные для стажа программно (для создания собственного отчета, а не для подмены регламентированного), обратите внимание на следующие объекты.
Основной менеджер, отвечающий за сбор данных:
// Примерный путь к процедурам сбора данных ПФР
Документы.СведенияОСтраховомСтажеЗастрахованныхЛицСЗВ_СТАЖ.ЗаполнитьСведенияОСтаже(...);
// Внутри вызываются методы общих модулей, например:
УчетСтажаПФР.СформироватьСведенияОСтаже(...);
Анализ данных в регистре сведений:
ВЫБРАТЬ
Стаж.Сотрудник,
Стаж.ДатаНачала,
Стаж.ДатаОкончания,
Стаж.ВидСтажаПФР,
Стаж.ОсобыеУсловияТруда
ИЗ
РегистрСведений.ПараметрыПериодовСтажаПФР КАК Стаж
ГДЕ
Стаж.Сотрудник = &Сотрудник
И Стаж.ДатаНачала МЕЖДУ &НачалоПериода И &КонецПериода
Попытка реализовать заполнение СЗВ-СТАЖ (ЕФС-1) на основании Табеля — это борьба со следствием, а не с причиной. Проблема заключается в том, что текущий кадровый учет в базе не соответствует требованиям для автоматического формирования льготного стажа.
Рекомендация:
ПараметрыПериодовСтажаПФР штатным путем.