Как в 1С:ЗУП разбить периоды стажа по договорам ГПХ в отчете СЗВ-СТАЖ (ЕФС-1), если программа объединяет их в одну строку?

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

При подготовке отчетности в фонды (ранее ПФР, ныне СФР) пользователи 1С:Зарплата и Управление Персоналом часто сталкиваются с ситуацией, когда несколько последовательных договоров гражданско-правового характера (ГПХ) объединяются программой в один непрерывный период. Рассмотрим подробно, почему это происходит, как этого требуют контролирующие органы и какие существуют способы решения данной задачи в конфигурации.

Суть проблемы: требования фонда против логики 1С

Рассмотрим ситуацию, описанную в теме. В течение отчетного года с физическим лицом было заключено несколько договоров ГПХ, идущих подряд («стык в стык»):

  1. С 01.01 по 28.02.
  2. С 01.03 по 31.05.
  3. С 01.06 по 15.08 и так далее.

С точки зрения программы, сотрудник работал непрерывно весь год. При формировании отчета СЗВ-СТАЖ (или подраздела 1.2 формы ЕФС-1) система анализирует периоды, видит, что разрывов между ними нет (дата окончания одного периода + 1 день = дата начала следующего), и «схлопывает» их в одну запись: 01.01.2022 - 31.12.2022.

Однако контролирующие органы (ПФР/СФР) часто отказываются принимать такой отчет. Их позиция обоснована тем, что каждый договор ГПХ — это отдельный юридический факт и отдельное основание для начисления страховых взносов. В базе данных фонда эти договоры могут числиться под разными номерами, и отчетность по стажу должна коррелировать с этими данными. Поэтому требуется, чтобы каждый период договора был выделен в отчете отдельной строкой, даже если между ними нет перерыва в днях.

Решение 1: Ручная корректировка в форме отчета

Самый быстрый и доступный способ исправить ситуацию без привлечения программиста — воспользоваться возможностями интерфейса самого отчета в 1С. Разберем этот процесс по шагам.

В типовых конфигурациях ЗУП 3.1 форма отчета СЗВ-СТАЖ (и аналогичных форм) поддерживает расшифровку данных по конкретному застрахованному лицу.

  1. Сформируем отчет и найдем в табличной части сотрудника, у которого объединились периоды.
  2. Выполним двойной щелчок левой кнопкой мыши по ФИО сотрудника (или по строке с его данными).
  3. Откроется вспомогательная форма «Сведения о стаже», в которой детально представлены периоды работы.
  4. В этой форме мы можем вручную редактировать периоды. Нам необходимо изменить дату окончания первой строки (например, поставить дату окончания первого договора) и добавить новые строки для последующих договоров, указав соответствующие даты начала и окончания.
  5. После внесения изменений нажмем «ОК». В основной форме отчета данные обновятся.

Важно: При переформировании отчета (кнопка «Заполнить») ручные правки будут утеряны, поэтому данный метод подходит для разовых корректировок перед отправкой.

Решение 2: Технический анализ и логика «склеивания» периодов

Для понимания того, как программа принимает решение об объединении периодов, обратимся к программному коду конфигурации. Проанализируем механизм, который был найден в ходе обсуждения.

Логика объединения периодов, как правило, находится в общих модулях, отвечающих за персонифицированный учет (например, ПерсонифицированныйУчет или модули заполнения форм статистики). Алгоритм работает следующим образом: система перебирает таблицу периодов стажа, отсортированную по датам, и сравнивает текущую запись с предыдущей.

Рассмотрим фрагмент кода, который демонстрирует этот принцип:


// Пример логики склеивания периодов
Если ТекущаяЗапись.ДатаНачалаПериода = ПредшествующаяЗапись.ДатаОкончанияПериода + 86400 
    ИЛИ ТекущаяЗапись.ДатаНачалаПериода = ПредшествующаяЗапись.ДатаОкончанияПериода Тогда
    
    // Если параметры стажа совпадают (вид стажа, терр. условия и т.д.)
    // то продлеваем предыдущую запись
    ПредшествующаяЗапись.ДатаОкончанияПериода = ТекущаяЗапись.ДатаОкончанияПериода;
    
КонецЕсли;

Здесь число 86400 — это количество секунд в одних сутках. Условие проверяет непрерывность временной шкалы:

Если условие выполняется и прочие параметры (код стажа «ДОГОВОР», отсутствие особых условий труда) идентичны, 1С считает эти периоды единым целым в целях оптимизации размера файла XML. Стандарт обмена данными ПФР допускает объединение смежных периодов с одинаковыми параметрами, однако на практике, как мы выяснили, инспекторы требуют детализацию.

Почему сложно изменить это программно?

Попытка изменить этот код напрямую в конфигурации (снять с поддержки и закомментировать условие склейки) может быть нетривиальной задачей по следующим причинам:

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

Альтернативные способы обхода проблемы

Если сотрудников по договорам ГПХ очень много и ручная правка через «двойной клик» занимает слишком много времени, рассмотрим другие варианты действий.

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

Алгоритм 1С объединяет строки только тогда, когда все параметры стажа совпадают. Если мы сможем сделать так, чтобы параметры отличались, периоды разобьются автоматически. Например:

2. Редактирование выгрузки (XML)

Если отчет уже сформирован и сотрудников сотни:

  1. Выгрузим файл отчета в формате XML на диск.
  2. Воспользуемся сторонним ПО для подготовки отчетности (многие бесплатные программы от операторов связи или самого фонда позволяют загружать XML).
  3. Загрузим отчет в стороннюю программу. Зачастую там редактирование таблиц реализовано удобнее, или автоматическая проверка укажет на ошибки и предложит инструменты для разбиения периодов.
  4. Выгрузим исправленный файл и отправим его.

Резюме

Проблема объединения периодов ГПХ в ЗУП 3.1 является особенностью штатного алгоритма сжатия данных. Наиболее надежным и безопасным способом решения для бухгалтера является ручная разбивка периодов в форме расшифровки сотрудника (по двойному клику). Вмешательство в программный код (модуль ПерсонифицированныйУчет) возможно, но требует высокой квалификации программиста для корректной модификации алгоритмов свертки данных без нарушения работы других отчетов.

← На главную