При обновлении конфигурации «Бухгалтерия предприятия» с редакции 2.0 на редакцию 3.0 во время выполнения обработчиков обновления в режиме «1С:Предприятие» может возникнуть критическая ошибка:
{ОбщийМодуль.ЗарплатаКадрыОбновлениеСПредыдущейРедакции.Модуль}: Ошибка при вызове метода контекста (Записать) НовыйРегистратор.Движения.ПлановыеНачисления.Записать(); по причине: Запись с такими ключевыми полями существует! : ПлановыеНачисления: ххххххх (Регистр сведений: Плановые начисления; Номер строки: 2)
В более свежих релизах БП 3.0 аналогичная ошибка возникает на вызове ДокументПереноса.Движения.ПлановыеНачисления.Записать(). Проанализируем причины этой проблемы и разберем по шагам варианты ее решения.
В редакции 2.0 и редакции 3.0 структура подсистемы учета зарплаты и кадров существенно различается. В процессе обновления запускаются специализированные процедуры из общего модуля ЗарплатаКадрыОбновлениеСПредыдущейРедакции, которые считывают накопленные кадровые данные редакции 2.0 и формируют новые документы переноса и движения по регистрам сведений БП 3.0.
Ошибка уникальности ключа записи в регистре сведений ПлановыеНачисления возникает в следующих ситуациях:
Кадровое перемещение организаций или Прием на работу в организацию), оформленных на одного сотрудника одной датой или содержащих одинаковый состав начислений (в том числе когда один из документов не проведен или помечен на удаление).Период, Сотрудник, Начисление), что приводит к конфликту ключа уникальности.Разберем базовые технические требования перед выполнением обновления:
1С:Предприятие 8.3 соответствует требованиям релиза конфигурации.2.0.66.44 сразу на 3.0.57.10).Самая распространенная причина ошибки — наличие непроведенных, дублирующихся или некорректных кадровых документов в базе 2.0. Выполним следующие действия в исходной базе до запуска обновления:
Кадровые перемещения организаций, Приемы на работу в организацию, Ввод сведений о плановых начислениях работников организаций.Для быстрой локализации проблемы в исходной базе редакции 2.0 можно выполнить следующий проверочный запрос в консоли запросов:
ВЫБРАТЬ
ПлановыеНачисления.Период КАК Период,
ПлановыеНачисления.Сотрудник КАК Сотрудник,
ПлановыеНачисления.ВидРасчетаИзмерение КАК ВидРасчета,
КОЛИЧЕСТВО(*) КАК КоличествоЗаписей
ИЗ
РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК ПлановыеНачисления
СГРУППИРОВАТЬ ПО
ПлановыеНачисления.Период,
ПлановыеНачисления.Сотрудник,
ПлановыеНачисления.ВидРасчетаИзмерение
ИМЕЮЩИЕ
КОЛИЧЕСТВО(*) > 1
Если запрос возвращает строки, необходимо открыть документы-регистраторы для указанных сотрудников и дат, после чего устранить задвоение записей.
Если расчет зарплаты и кадровый учет организации фактически ведутся в специализированной конфигурации (например, «1С:Зарплата и управление персоналом»), переносить детальную историю кадровых начислений в БП 3.0 нет необходимости.
В этом случае в исходной базе БП 2.0 перейдем в меню Предприятие — Настройка параметров учета — Зарплата и кадры и переключим признак ведения учета зарплаты в положение «Во внешней программе». При таком варианте алгоритмы обновления пропускают конвертацию регистра ПлановыеНачисления, и процедура обновления завершается без ошибок.
Если обновление уже запущено на копии базы и прервалось ошибкой, выясним конкретный проблемный документ с помощью отладчика:
Запись с такими ключевыми полями существует!.
ДокументПереноса.Движения.ПлановыеНачисления.Записать();
ДокументПереноса или НовыйРегистратор, а также просмотрим содержимое коллекции ДокументПереноса.Движения.ПлановыеНачисления.