Как исправить ошибку дублирования мероприятий в СЗВ-ТД при перепроведении документов в 1С:ЗУП 3.1?

Программист 1С:Зарплата и Управление Персоналом
← На главную

При работе в программе «1С:Зарплата и управление персоналом 8» (релиз 3.1.14.436 и соседние) многие пользователи столкнулись с крайне неприятной ситуацией. При обычном перепроведении старого, уже отправленного в ПФР документа (например, Прием на работу или Кадровый перевод), система автоматически помечает мероприятие как отмененное и генерирует новую запись с новым уникальным идентификатором (UUID). В результате при формировании очередного отчета СЗВ-ТД в него попадают лишние строки: отмена старого мероприятия и создание точно такого же нового.

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

Разберем причину возникновения проблемы: архитектурные изменения

Основная причина «зацикливания» мероприятий кроется в масштабном обновлении архитектуры хранения данных о трудовой деятельности. Проанализируем ситуацию: в версиях, начиная с 3.1.14.436, разработчики изменили структуру регистра сведений МероприятияТрудовойДеятельностиПереданные.

В этом регистре появилось новое измерение — Организация. До обновления привязка к организации осуществлялась косвенно, а после добавления нового поля система при записи документа пытается сопоставить текущие данные с теми, что уже числятся как переданные. Рассмотрим механизм возникновения ошибки подробнее:

  1. Вы открываете документ, созданный в старой версии программы (например, 3.1.14.395).
  2. При перепроведении система обращается к регистру МероприятияТрудовойДеятельностиПереданные, чтобы проверить, передавалось ли это событие ранее.
  3. Если при обновлении информационной базы обработка заполнения нового поля Организация в этом регистре не отработала или отработала с ошибкой, программа «не видит» старую запись, так как ищет ее с учетом нового измерения.
  4. Система делает вывод, что данные изменились, аннулирует старый Идентификатор мероприятия и создает новый.

Проблема «пустого» основания увольнения

Другая техническая тонкость, которую мы обнаружим при детальном изучении регистра МероприятияТрудовойДеятельности, связана с полем ОснованиеУвольнения. Это поле имеет тип ОпределяемыйТип.ОснованиеУвольнения.

В проблемных релизах был изменен состав этого типа данных. В результате значение «пустой ссылки», которое хранилось в старых записях, технически перестало быть идентичным «пустой ссылке» в новой конфигурации. Проанализируем, к чему это приводит: даже в документах типа Прием на работу, где поля основания увольнения вообще нет, система при сравнении старой записи регистра и новой видит различие в этих «пустотах». Для программы это сигнал о том, что данные документа изменились, и необходимо сформировать отменяющее мероприятие для ПФР.

Решение 1: Обновление конфигурации до исправленного релиза

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

Для исправления ситуации нам необходимо обновить информационную базу до следующих релизов (или более новых):

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

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

Если по каким-то причинам оперативное обновление невозможно, мы можем попытаться исправить данные в регистрах самостоятельно. Рассмотрим шаги, которые помогут локализовать проблему:

  1. Откроем через меню «Все функции» (или «Функции для технического специалиста») регистр сведений Мероприятия трудовой деятельности переданные.
  2. Проверим наличие колонки Организация. Если это поле не заполнено для старых записей, это и является причиной дублирования.
  3. Выясним причину расхождения в поле ОснованиеУвольнения. Посмотрим на пример программного сравнения, который срабатывает при проведении документа:

// Пример логики, приводящей к ошибке
Если ЗаписьРегистраСтарая.ОснованиеУвольнения <> ЗаписьРегистраНовая.ОснованиеУвольнения Тогда
    // Даже если оба значения выглядят как "Пусто", 
    // из-за разницы типов система считает их разными
    МероприятиеИзменено = Истина;
КонецЕсли;

Для исправления можно воспользоваться универсальной обработкой «Групповое изменение реквизитов» и принудительно проставить значение Организация в регистре МероприятияТрудовойДеятельностиПереданные для всех записей, где оно пустое. Это позволит системе правильно идентифицировать ранее отправленные мероприятия.

Рекомендации по работе с СЗВ-ТД после обновления

Чтобы избежать массового появления «отмененных» записей в отчетах, мы рекомендуем придерживаться следующего алгоритма:

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

← На главную