При обновлении конфигурации «1С:Зарплата и Управление Персоналом» (ЗУП 3.0) пользователи иногда сталкиваются со сбоем на этапе обработки данных информационной базы. Процесс останавливается с сообщением вида: «Не удается выполнить обновление. {ОбщийМодуль.КадровыйУчетРасширенный.Модуль(11370)}: Ошибка при вызове метода контекста (Записать) НаборЗаписей.Записать; по причине: Запись с такими ключевыми полями существует! : ДанныеДляПодбораСотрудников...».
Рассмотрим подробно причины возникновения этой ошибки и разберем по шагам проверенные способы ее решения.
Проанализируем ситуацию: регистр сведений ДанныеДляПодбораСотрудников является служебным и формируется автоматически. При обновлении релизов программы платформа запускает обработчики обновления, которые перезаполняют кадровые интервалы и служебные наборы данных.
Ошибка возникает из-за нарушения уникальности ключевых полей (измерений) регистра сведений. Основные источники проблемы:
Перенос данных часто создаются дублирующиеся записи или кадровые приказы на одну и ту же дату по одному физическому лицу.Сотрудники или ФизическиеЛица, не объединение которых приводит к конфликту ключей аналитики.Если ошибка блокирует запуск информационной базы в пользовательском режиме (обновление прерывается на определенном проценте выполнения), применим обходной метод. Он позволяет пропустить проблемную запись, завершить обработчики обновления на 100%, а затем восстановить целостность данных.
Разберем данный процесс по шагам:
Конфигурация > Настройка поддержки и включим возможность изменения, установив для объектов режим «Объект редактируется с сохранением поддержки».Общие > Общие модули > КадровыйУчетРасширенный и откроем модуль.Записать() или обернем его в конструкцию Попытка ... Исключение.Пример изменения кода в общем модуле:
// Временно оборачиваем запись регистра в безопасный блок
Попытка
НаборЗаписей.Записать();
Исключение
// Пропускаем запись дублирующегося ключа для завершения обновления ИБ
ЗаписьЖурналаРегистрации("ОбновлениеИБ.ДанныеДляПодбора",
УровеньЖурналаРегистрации.Предупреждение,,,
ОписаниеОшибки());
КонецПопытки;
Чтобы вернуть конфигурацию на полную поддержку поставщика после правки кода, выполним следующие действия:
Настройка поддержки нажмем кнопку «Сохранить в файл» для получения текущей конфигурации поставщика (cf-файл).Конфигурация > Загрузить конфигурацию из файла и выберем сохраненный cf-файл.После того как база открылась, выясним причину дублирования данных по конкретному сотруднику (указанному в тексте ошибки) и исправим её в первичном учете.
Проанализируем последовательность действий:
ДанныеДляПодбораСотрудников последовательно перепроведем цепочку кадровых документов по данному физическому лицу (начиная с документа Прием на работу).Перенос данных (например, перенесенных из 7.7) удалим повторяющиеся строки в наборах записей кадровых регистров.После перепроведения первичных документов записи служебных регистров переформируются корректно, и при последующих обновлениях конфигурации ошибка возникать не будет.