Как исправить ошибку «Запись с такими ключевыми полями существует» при обновлении ЗУП до релиза 3.1.17.94

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

При переходе на новые версии конфигурации «1С:Зарплата и управление персоналом 8» (ЗУП) пользователи нередко сталкиваются с техническими сложностями. Одной из наиболее резонансных проблем стало обновление до версии 3.1.17.94. Проблема проявляется на этапе выполнения отложенных обработчиков обновления и блокирует дальнейшую работу с базой. В этой статье мы подробно разберем, почему возникает ошибка в регистре МероприятияТрудовойДеятельностиПереданные, и какими способами можно восстановить работоспособность системы.

Анализируем суть проблемы и причины возникновения ошибки

Рассмотрим ситуацию: в процессе обновления системы на этапе обработки данных возникает критическая ошибка: «Запись с такими ключевыми полями существует! : МероприятияТрудовойДеятельностиПереданные». В тексте ошибки часто фигурирует пустой уникальный идентификатор (GUID) вида 00000000-0000-0000-0000-000000000000.

Выясним причину такого поведения системы. В релизе 3.1.17.94 разработчики 1С изменили структуру хранения данных в регистре сведений Мероприятия трудовой деятельности переданные. Для корректной работы с электронными трудовыми книжками (ЭТК) потребовалось перенести данные из старых структур в новые. За этот процесс отвечает специальный обработчик обновления ПереносДанныхМероприятийТрудовойДеятельности.

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

  1. Некорректные ручные правки: Если бухгалтеры или расчетчики вручную корректировали документы СЗВ-ТД или пытались «поправить» записи непосредственно в регистрах, это могло привести к потере связи между мероприятием и его идентификатором.
  2. Ошибки при обмене с ПФР: При многократной отправке одних и тех же сведений или при загрузке протоколов с ошибками в регистре могли появиться дублирующие записи с пустыми GUID.
  3. Удаление документов без очистки движений: Иногда при программном или некорректном удалении документов СЗВ-ТД записи в регистре сведений остаются «сиротами», что и вызывает конфликт при попытке их конвертации.

Эта проблема официально зарегистрирована в реестре ошибок 1С под номером 10229410.

Подготовительный этап: проверка данных и резервное копирование

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

Важно: Перед любыми манипуляциями с регистрами обязательно создайте полную резервную копию информационной базы (файл .dt или выгрузка средствами SQL-сервера). Если обновление уже запущено и «упало» с ошибкой, рекомендуется откатиться к копии, сделанной до начала обновления.

Проверим логическую целостность базы. Для этого выполним стандартную процедуру «Тестирование и исправление» (ТиИ):

  1. Зайдите в Конфигуратор.
  2. Меню «Администрирование» — «Тестирование и исправление».
  3. Установите флажки на пунктах «Проверка логической целостности» и «Очистка пустых ссылок».
  4. Выберите вариант «Очищать объекты» при наличии ссылок на несуществующие объекты.

Решение №1: Использование специализированной обработки

Для исправления этой конкретной ошибки фирма 1С выпускала внешнюю обработку ИсправлениеДублейМероприятийТрудовойДеятельности.epf. Это самый безопасный и эффективный метод.

Разберем алгоритм работы с обработкой:

  1. Запустите базу в режиме «1С:Предприятие» (желательно на релизе, предшествующем проблемному, например, 3.1.14 или 3.1.16).
  2. Откройте обработку через «Файл» — «Открыть».
  3. Нажмите кнопку «Найти дубли» (или аналогичную по смыслу). Программа просканирует регистр Мероприятия трудовой деятельности переданные на предмет пустых GUID и записей с одинаковыми ключами.
  4. Нажмите «Исправить». Обработка либо удалит мусорные записи, либо присвоит им корректные уникальные идентификаторы, исключая коллизию при обновлении.

Решение №2: Ручное удаление проблемных записей

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

  1. Перейдите в меню «Сервис и настройки» — «Функции для технического специалиста» (в старых версиях — «Все функции»).
  2. Найдите в списке Регистры сведений и выберите Мероприятия трудовой деятельности переданные.
  3. В открывшемся списке установите отбор по полю Идентификатор мероприятия (GUID), указав значение 00000000-0000-0000-0000-000000000000 или просто пустое поле.
  4. Если такие записи найдены, проанализируйте их: к каким сотрудникам и документам СЗВ-ТД они относятся.
  5. Удалите дублирующиеся или пустые записи. Помните, что ключевыми полями здесь являются ДокументОснование, ФизическоеЛицо и ИдентификаторМероприятия.

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


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	Мероприятия.Регистратор,
    |	Мероприятия.НомерСтроки,
    |	Мероприятия.ФизическоеЛицо
    |ИЗ
    |	РегистрСведений.МероприятияТрудовойДеятельностиПереданные КАК Мероприятия
    |ГДЕ
    |	Мероприятия.ИдентификаторМероприятия = ЗНАЧЕНИЕ(УникальныйИдентификатор.Пустой)";

Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
    Выборка = Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
        Сообщить("Пустой GUID в документе: " + Выборка.Регистратор);
    КонецЦикла;
КонецЕсли;

Решение №3: Обход ошибки через более новый релиз

Проанализируем опыт пользователей: многие отмечают, что ошибка 3.1.17.94 была исправлена в последующих сборках. Если ваша текущая версия позволяет «перепрыгнуть» проблемный релиз, мы рекомендуем обновляться сразу до версии 3.1.17.101 или выше (вплоть до актуальных веток 3.1.18+ или 3.1.23+).

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

Подведение итогов и рекомендации

Мы рассмотрели одну из самых неприятных ошибок обновления ЗУП, связанную с переходом на новый механизм учета трудовой деятельности. Подводя итог, выделим основные правила успешного обновления:

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

← На главную