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

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

Переход с редакции Зарплата и Управление Персоналом 2.5 на современную 3.1 часто сопровождается техническими сложностями. Одной из самых распространенных и неприятных проблем является прерывание загрузки с ошибкой записи объекта в регистр сведений. Чаще всего это касается регистра Записи о стаже до начала эксплуатации или Начальные остатки отпусков.

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

Причина возникновения ошибки: конфликт ключевых полей

Проанализируем текст ошибки, который выдает система. Типовое сообщение выглядит так: Ошибка при вызове метода контекста (Записать): Запись с такими ключевыми полями существует!. В контексте регистра сведений ЗаписиОСтажеДоНачалаЭксплуатации это означает, что для одного физического лица на одну и ту же дату начала периода система пытается создать две абсолютно идентичные записи.

Основная причина кроется в ситуации, когда сотрудник в исходной базе ЗУП 2.5 одновременно работает по основному месту работы и по договору гражданско-правового характера (ГПХ). Алгоритм переноса (особенно в старых релизах или при «Полном переносе») считывает периоды стажа для обоих видов занятости. Поскольку в регистре Записи о стаже до начала эксплуатации ключевыми полями являются Организация, Физическое лицо и Дата начала, две записи за один и тот же период по одному человеку вызывают конфликт уникальности.

Решение 1: Временная отмена проведения договоров ГПХ

Это самый быстрый и эффективный способ «обмануть» механизм переноса, не прибегая к программированию. Рассмотрим этот алгоритм по шагам:

  1. Поиск проблемных сотрудников. В тексте ошибки 1С всегда указывает конкретную фамилию (например, «Окулов Владимир Михайлович»). Перейдем в исходную базу ЗУП 2.5.
  2. Анализ документов. Найдем все действующие договоры ГПХ по данному сотруднику, которые пересекаются с периодом переноса (обычно это начало текущего года).
  3. Снятие с проведения. На время выполнения выгрузки отменим проведение документов Договор на выполнение работ с физ. лицом. Если таких сотрудников много, можно воспользоваться обработкой Групповая обработка справочников и документов.
  4. Повторный перенос. Запустим процедуру переноса данных заново. После того как данные будут успешно загружены в ЗУП 3.1, мы сможем вернуть документы в исходное состояние в базе 2.5 (если она еще будет использоваться) и, при необходимости, вручную дозаполнить стаж в новой базе.

Решение 2: Переход на «Рекомендованный» перенос

Проанализируем методику самого процесса. Фирма 1С предлагает два варианта переноса:

1. Полный перенос: переносится вся кадровая история и документы расчетов. Именно здесь чаще всего возникают дубли в стаже и остатках.

2. Рекомендованный перенос: переносятся только данные для расчета среднего заработка (за последние 2-3 года) и остатки на дату начала эксплуатации.

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

Решение 3: Исправление ошибок в остатках отпусков

Иногда ошибка записи возникает в регистре Начальные остатки отпусков (Сообщение 14 в обсуждении). Это происходит из-за некорректного ведения учета в ЗУП 2.5, когда по одному сотруднику введены несколько документов Остатки отпусков на одну дату или есть «наслоение» периодов в регистре накопления Фактические отпуска.

Для исправления ситуации в базе 2.5 выполним следующие действия:

  1. Откроем регистр сведений Остатки отпусков и проверим наличие дублей по сотруднику.
  2. Если записи дублируются, необходимо оставить только одну актуальную строку, объединив количество дней отпуска.
  3. Проверим, нет ли по сотруднику документов Корректировка записей регистров, которые могли создать «мусорные» записи в кадровых регистрах.

Решение 4: Техническая правка правил обмена (для программистов)

Если обновление конфигурации до актуального релиза невозможно, а документов ГПХ слишком много, можно внести изменения в правила конвертации. Рассмотрим, как это сделать через конфигурацию 1С:Конвертация данных 2.0:

Выгрузим правила из конфигурации ЗУП 3.1 (обработка Выгрузка правил для версии...). Загрузим их в КД 2.0. Найдем правило конвертации объектов (ПКО) для регистра сведений ЗаписиОСтажеДоНачалаЭксплуатации.

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


// Пример логики в обработчике ПередЗагрузкой для исключения дублей
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ РегистрСведений.ЗаписиОСтажеДоНачалаЭксплуатации 
               ГДЕ ФизическоеЛицо = &ФизЛицо И ДатаНачала = &ДатаНачала";
Запрос.УстановитьПараметр("ФизЛицо", Объект.ФизическоеЛицо);
Запрос.УстановитьПараметр("ДатаНачала", Объект.ДатаНачала);

Если НЕ Запрос.Выполнить().Пустой() Тогда
    Отказ = Истина; // Если такая запись уже есть, пропускаем загрузку новой
КонецЕсли;

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

Особенности переноса из ЗиК 7.7: ошибка преобразования к «Булево»

При переносе из старой Зарплаты и Кадров 7.7 может возникнуть ошибка Преобразование значения к типу Булево не может быть выполнено. Проанализируем причину: в 7.7 реквизиты документов (например, по уходу за ребенком) могут иметь неопределенное значение, которое конвертер 3.1 не может корректно интерпретировать как Истина или Ложь.

Как показывает практика (сообщения 15-16), самым простым решением является удаление или исправление документов Изменение условий оплаты отпуска по уходу за ребенком в базе 7.7 за периоды, которые уже не актуальны для текущих расчетов (например, если ребенок уже вырос). Если документы важны, необходимо зайти в них в 7.7 и убедиться, что все флажки и переключатели установлены в явное положение.

Чек-лист перед запуском переноса

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

Подводя итог, отметим, что ошибка «Запись с такими ключевыми полями существует» — это в большинстве случаев следствие «двойного стажа» сотрудника-договорника. Использование Рекомендованного переноса и временное снятие с проведения мешающих документов ГПХ позволяют решить проблему в 90% случаев без привлечения разработчиков.

← На главную