При работе в программе «1С:Зарплата и управление персоналом 8» (релиз 3.1.14.436 и соседние) многие пользователи столкнулись с крайне неприятной ситуацией. При обычном перепроведении старого, уже отправленного в ПФР документа (например, Прием на работу или Кадровый перевод), система автоматически помечает мероприятие как отмененное и генерирует новую запись с новым уникальным идентификатором (UUID). В результате при формировании очередного отчета СЗВ-ТД в него попадают лишние строки: отмена старого мероприятия и создание точно такого же нового.
В этой статье мы подробно разберем причины такого поведения системы, проанализируем изменения в регистрах сведений и выясним, как окончательно устранить эту проблему, не прибегая к ручной корректировке каждой записи.
Основная причина «зацикливания» мероприятий кроется в масштабном обновлении архитектуры хранения данных о трудовой деятельности. Проанализируем ситуацию: в версиях, начиная с 3.1.14.436, разработчики изменили структуру регистра сведений МероприятияТрудовойДеятельностиПереданные.
В этом регистре появилось новое измерение — Организация. До обновления привязка к организации осуществлялась косвенно, а после добавления нового поля система при записи документа пытается сопоставить текущие данные с теми, что уже числятся как переданные. Рассмотрим механизм возникновения ошибки подробнее:
МероприятияТрудовойДеятельностиПереданные, чтобы проверить, передавалось ли это событие ранее.Организация в этом регистре не отработала или отработала с ошибкой, программа «не видит» старую запись, так как ищет ее с учетом нового измерения.Другая техническая тонкость, которую мы обнаружим при детальном изучении регистра МероприятияТрудовойДеятельности, связана с полем ОснованиеУвольнения. Это поле имеет тип ОпределяемыйТип.ОснованиеУвольнения.
В проблемных релизах был изменен состав этого типа данных. В результате значение «пустой ссылки», которое хранилось в старых записях, технически перестало быть идентичным «пустой ссылке» в новой конфигурации. Проанализируем, к чему это приводит: даже в документах типа Прием на работу, где поля основания увольнения вообще нет, система при сравнении старой записи регистра и новой видит различие в этих «пустотах». Для программы это сигнал о том, что данные документа изменились, и необходимо сформировать отменяющее мероприятие для ПФР.
Самый правильный и надежный способ — установка обновления, в котором данная ошибка официально исправлена. Разработчиками эта проблема была зафиксирована под номером 10224955.
Для исправления ситуации нам необходимо обновить информационную базу до следующих релизов (или более новых):
После обновления до указанных версий механизм сравнения данных при перепроведении начинает корректно обрабатывать различия в пустых ссылках и учитывать заполнение организации в регистрах.
Если по каким-то причинам оперативное обновление невозможно, мы можем попытаться исправить данные в регистрах самостоятельно. Рассмотрим шаги, которые помогут локализовать проблему:
Мероприятия трудовой деятельности переданные.Организация. Если это поле не заполнено для старых записей, это и является причиной дублирования.ОснованиеУвольнения. Посмотрим на пример программного сравнения, который срабатывает при проведении документа:
// Пример логики, приводящей к ошибке
Если ЗаписьРегистраСтарая.ОснованиеУвольнения <> ЗаписьРегистраНовая.ОснованиеУвольнения Тогда
// Даже если оба значения выглядят как "Пусто",
// из-за разницы типов система считает их разными
МероприятиеИзменено = Истина;
КонецЕсли;
Для исправления можно воспользоваться универсальной обработкой «Групповое изменение реквизитов» и принудительно проставить значение Организация в регистре МероприятияТрудовойДеятельностиПереданные для всех записей, где оно пустое. Это позволит системе правильно идентифицировать ранее отправленные мероприятия.
Чтобы избежать массового появления «отмененных» записей в отчетах, мы рекомендуем придерживаться следующего алгоритма:
СЗВ-ТД обязательно проверьте, не появились ли в нем строки с признаком «Отмена». Если такие строки есть и вы их не планировали, значит, в вашей базе сработал описанный выше баг.Таким образом, мы выяснили, что проблема носит чисто технический характер и связана с изменением структуры метаданных. Совместная работа по анализу регистров и своевременное обновление программы позволят вам сохранить чистоту учета трудовой деятельности и избежать штрафных санкций за некорректную подачу сведений в ПФР.