Ошибка «Запись с такими ключевыми полями существует!» в регистре «Данные для подбора сотрудников» при обновлении 1С:ЗУП: как исправить?

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

При обновлении конфигурации «1С:Зарплата и Управление Персоналом» (ЗУП 3.0) пользователи иногда сталкиваются со сбоем на этапе обработки данных информационной базы. Процесс останавливается с сообщением вида: «Не удается выполнить обновление. {ОбщийМодуль.КадровыйУчетРасширенный.Модуль(11370)}: Ошибка при вызове метода контекста (Записать) НаборЗаписей.Записать; по причине: Запись с такими ключевыми полями существует! : ДанныеДляПодбораСотрудников...».

Рассмотрим подробно причины возникновения этой ошибки и разберем по шагам проверенные способы ее решения.

Причины возникновения ошибки

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

Ошибка возникает из-за нарушения уникальности ключевых полей (измерений) регистра сведений. Основные источники проблемы:

  1. Перенос данных из старых систем: При переносе базы из «1С:Зарплата и Кадры 7.7» или других конфигураций в документах Перенос данных часто создаются дублирующиеся записи или кадровые приказы на одну и ту же дату по одному физическому лицу.
  2. Внутреннее совместительство: Если на одно физическое лицо в один день оформлены основной прием и прием по внутреннему совместительству с одинаковыми реквизитами (организация, подразделение, должность), алгоритм обновления может попытаться сформировать две одинаковые записи в регистре.
  3. Задвоение справочников: Наличие дублей в справочниках Сотрудники или ФизическиеЛица, не объединение которых приводит к конфликту ключей аналитики.

Способ 1. Временная обходная блокировка ошибки в коде и завершение обновления

Если ошибка блокирует запуск информационной базы в пользовательском режиме (обновление прерывается на определенном проценте выполнения), применим обходной метод. Он позволяет пропустить проблемную запись, завершить обработчики обновления на 100%, а затем восстановить целостность данных.

Разберем данный процесс по шагам:

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

Пример изменения кода в общем модуле:


// Временно оборачиваем запись регистра в безопасный блок
Попытка
    НаборЗаписей.Записать();
Исключение
    // Пропускаем запись дублирующегося ключа для завершения обновления ИБ
    ЗаписьЖурналаРегистрации("ОбновлениеИБ.ДанныеДляПодбора", 
        УровеньЖурналаРегистрации.Предупреждение,,, 
        ОписаниеОшибки());
КонецПопытки;
  1. Обновим конфигурацию базы данных (клавиша F7).
  2. Запустим программу в режиме «1С:Предприятие». Дождемся завершения процедуры обновления ИБ до 100%.
  3. После успешного входа в программу вернемся в Конфигуратор, раскомментируем строки кода обратно и сохраним конфигурацию БД.

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

  1. В режиме Настройка поддержки нажмем кнопку «Сохранить в файл» для получения текущей конфигурации поставщика (cf-файл).
  2. Перейдем в меню Конфигурация > Загрузить конфигурацию из файла и выберем сохраненный cf-файл.
  3. Подтвердим обновление базы данных. Конфигурация снова станет полностью находящейся на поддержке.

Способ 2. Устранение некорректных кадровых данных по сотруднику

После того как база открылась, выясним причину дублирования данных по конкретному сотруднику (указанному в тексте ошибки) и исправим её в первичном учете.

Проанализируем последовательность действий:

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

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

← На главную