При осуществлении перехода с редакции 2.0 на редакцию 3.0 конфигурации «Бухгалтерия предприятия» специалисты нередко сталкиваются со сбоем на этапе выполнения обработчиков обновления информационной базы. В процессе работы алгоритмов переноса кадровых данных платформа может выдать фатальную ошибку: «Запись с такими ключевыми полями существует!».
Рассмотрим подробнее причины появления этой проблемы, особенности публикации исправлений фирмой «1С» и практические способы успешного завершения обновления.
Проанализируем техническую сторону процесса обновления. В редакции 2.0 и редакции 3.0 архитектура хранения кадрового учета существенно различается. При переходе с 2.0 на 3.0 запускаются фоновые процедуры конвертации данных, которые транслируют проведенные кадровые документы в периодические регистры сведений (в частности, в регистр Кадровая история сотрудников).
Если в исходной базе редакции 2.0 присутствует проведенный документ Кадровое перемещение, в котором установлен флаг Приказ на группу сотрудников, алгоритм обновления формирует записи в регистре для каждого сотрудника из табличной части. При наличии совпадающих измерений (период, организация, сотрудник) платформа фиксирует попытку записи дублирующего ключа и блокирует дальнейшее выполнение процедуры обновления.
На портале поддержки пользователей ошибка может иметь статус «Исправлена в выпущенной версии» (например, в релизе 3.0.53.x). Однако при попытке обновить базу 2.0 напрямую до этой версии Конфигуратор не видит данный файл обновления.
Разберем, почему так происходит: обычные файлы обновления .cfu предназначены для последовательной актуализации конфигураций в рамках одной редакции 3.0. Переход с 2.0 на 3.0 осуществляется только через специализированные дистрибутивы конвертации. Если фирма «1С» еще не выпустила обновленный дистрибутив перехода, содержащий исправление, применять стандартный .cfu последующих релизов 3.0 поверх 2.0 напрямую не удастся.
Выясним, какие действия можно предпринять для успешного обновления базы данных.
Это наиболее чистый и безопасный вариант, не требующий вмешательства в программный код обработчиков обновления.
Кадровое перемещение, в котором взведен флаг Приказ на группу сотрудников.Кадровое перемещение с аналогичными датами, подразделениями и окладами.Если групповых документов много или пересчитывать движения за прошлые периоды нежелательно, используем алгоритм с временным отключением документов:
Кадровое перемещение с групповым приказом в базе 2.0.Для программистов 1С доступен вариант корректировки логики заполнения регистра сведений непосредственно в коде обновления.
В конфигурации 3.0 перед запуском процедуры обновления информационной базы найдем обработчик, заполняющий регистр кадровой истории. Обдерем вызов записи набора записей в конструкцию защиты от ошибок:
Попытка
НаборЗаписей.Записать();
Исключение
// Пропуск дублирующей записи или логирование ошибки
ЗаписьЖурналаРегистрации("ОбновлениеИБ.КадровыеДанные",
УровеньЖурналаРегистрации.Предупреждение,
,
,
ОписаниеОшибки());
КонецПопытки;
Это позволит обработчику пропустить конфликтную дублирующую строку и успешно завершить процедуру перехода для остальных данных.
Если конфигурация существенно изменена или обновлять через шаблоны затруднительно, разберем альтернативный вариант переноса:
Использование одного из описанных способов позволяет полностью обойти ошибку записи ключевых полей и подготовить базу к полноценной работе в редакции 3.0.