Ошибка неуникальности записи в регистре «Присоединенные файлы» при обновлении 1С: Как исправить?

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

При обновлении конфигурации «1С:Бухгалтерия предприятия» (или других типовых решений на базе Библиотеки Стандартных Подсистем) специалисты часто сталкиваются с ошибкой реструктуризации базы данных, указывающей на неуникальное значение поля ПрисоединенныйФайл в регистре сведений ПрисоединенныеФайлы.

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

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

Разберем механику процесса обновления. Ошибка возникает не из-за дублей в исходных данных базы, а непосредственно в момент физической перестройки (реструктуризации) таблиц СУБД платформой «1С:Предприятие».

Если в процессе сравнения и объединения конфигураций платформа по какой-то причине (например, из-за изменения определяемых типов или состава типов БСП) теряет автоматическую связь между измерением ПрисоединенныйФайл в основной конфигурации и аналогичным измерением в обновлении, она интерпретирует это как две раздельные операции:

  1. Удаление существующего измерения ПрисоединенныйФайл.
  2. Создание нового измерения с таким же наименованием ПрисоединенныйФайл.

Во время создания нового измерения в процессе реструктуризации платформа копирует данные во временную таблицу. Так как связь со старым измерением потеряна, новое ключевое поле заполняется значением по умолчанию (пустой ссылкой). В результате для всех имеющихся строк регистра в ключевом поле образуется одинаковое пустое значение, что приводит к нарушению уникальности первичного ключа и ошибке СУБД.

Способ 1. Ручная установка соответствия объектов (Рекомендуемый)

Рассмотрим самый быстрый и корректный способ решения проблемы без снятия с поддержки и удаления метаданных.

Выполним следующие шаги в режиме «Конфигуратор»:

  1. Откроем окно сравнения и объединения конфигураций (меню Конфигурация — Сравнить, объединить с конфигурацией из файла...).
  2. В дереве объектов найдем регистр сведений ПрисоединенныеФайлы и развернем его измерение ПрисоединенныйФайл.
  3. Посмотрим на статус сопоставления: если против измерения отображается оператор удаления для старого измерения и добавления для нового, значит, платформа потеряла внутреннее соответствие.
  4. Вызовем контекстное меню правой кнопкой мыши на измерении и выберем команду Установить соответствие.
  5. В opened окне вручную укажем соответствие между измерением из текущей базы и измерением из файла обновления.
  6. Запустим процесс объединения и сохраним конфигурацию базы данных (клавиша F7).

Явная установка соответствия исключает удаление и повторное создание колонки в таблице СУБД, сохраняя все существующие ссылки и их уникальность.

Способ 2. Загрузка конфигурации из файла (.cf)

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

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

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

Способ 3. Снятие флага объединения с регистра

Если структура регистра сведений ПрисоединенныеФайлы не терпит изменений в новом релизе, можно просто исключить его из обработки:

  1. В окне сравнения и объединения найдем регистр сведений ПрисоединенныеФайлы.
  2. Снимем флаг объединения напротив данного регистра сведений или отдельно напротив измерения ПрисоединенныйФайл.
  3. Завершим процедуру объединения и обновим конфигурацию базы данных.
← На главную