Как исправить ошибку с неуникальным значением ссылки при обновлении конфигурации в Конвертации данных 2

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

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

Ошибка при попытке вставки записи с неуникальным значением ссылки. таблица Reference7 (или Reference16, Reference37)

Разберем подробнее, почему возникает данная коллизия и как правильно обновить состав реквизитов и объектов, сохранив все ранее настроенные правила конвертации объектов (ПКО), правила конвертации свойств (ПКС) и алгоритмы.

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

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

  1. Сбой сопоставления внутренних идентификаторов: Обработка выгрузки метаданных (MD83Exp.epf) генерирует идентификаторы объектов и их реквизитов. При повторной загрузке «поверх» старой версии конфигурации встроенный механизм обновления КД 2.1 пытается сопоставить существующие записи. Если в конфигурации изменился составной тип реквизита, порядок свойств или удалились некоторые элементы, алгоритм дает сбой и пытается создать новую запись с уже занятой ссылкой.
  2. Ограничение архитектуры КД 2.1: Прямое обновление конфигурации метаданных внутри одной карточки изначально работает нестабильно в сложных конфигурациях со множеством реквизитов.
  3. Использование устаревшей версии обработки выгрузки: Старые версии MD83Exp.epf некорректно обрабатывали предопределенные элементы и сложные типы метаданных.

Способ 1. Загрузка новой версии конфигурации с переносом правил (рекомендуемый)

Рассмотрим основной и самый надежный регламент, который гарантирует корректность связей метаданных и исключает ошибки СУБД. Разберем процесс по шагам:

  1. Сохраняем текущие правила: В исходной базе «Конвертации данных» открываем обработку Выгрузка правил обмена и выгружаем нашу доработанную конвертацию в XML-файл на диск. Это гарантирует сохранность всех алгоритмов, обработчиков событий и сопоставлений.
  2. Выгружаем структуру обновленной конфигурации: В обновленной рабочей базе (например, «Розница» или «Управление торговлей») запускаем актуальную обработку MD83Exp.epf из комплекта поставки КД 2.1.8. Выгружаем структуру метаданных в отдельный XML-файл.
  3. Загружаем структуру как новую конфигурацию: Переходим в базу «Конвертации данных», открываем обработку Загрузка структуры метаданных. Критически важный момент: не выбираем старую конфигурацию для обновления. Выбираем вариант создания новой конфигурации (или указываем новый номер релиза, чтобы создалась отдельная запись в справочнике Конфигурации).
  4. Загружаем правила конвертации: Открываем обработку Загрузка правил обмена, выбираем сохраненный на первом шаге XML-файл с правилами. В окне сопоставления конфигураций указываем в качестве источника или приемника нашу вновь созданную конфигурацию с актуальной структурой.

В результате все ПКО и ПКС автоматически привяжутся к новым метаданным, старые настройки сохранятся, а новые реквизиты станут доступны для добавления в правила.

Способ 2. Ручное добавление новых реквизитов

Проанализируем ситуацию, когда типовая конфигурация претерпела минимальные точечные изменения — например, программист добавил всего 1–2 реквизита в конкретный справочник или документ. В таком случае полная перезагрузка структуры метаданных избыточна:

  1. Открываем в КД справочник Конфигурации и находим нужную нам конфигурацию.
  2. Переходим в подчиненный справочник Объекты и находим требуемый объект метаданных (например, документ РеализацияТоваровУслуг).
  3. В табличной части или списке свойств объекта нажимаем кнопку добавления и вручную создаем реквизит, точно указав его имя (с учетом регистра), синоним и тип данных.
  4. После сохранения свойства оно сразу становится доступным для выбора в таблице ПКС нужного правила.

Дополнительные рекомендации по стабильной работе с КД 2.1

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

  1. Оптимизируем состав выгрузки метаданных: При работе с MD83Exp.epf снимаем флаги выгрузки движений, форм, макетов, картинок и прав доступа, если конвертация строится только на уровне данных. Это существенно снижает объем файла и исключает ошибки сопоставления.
  2. Используем актуальные версии обработок: Всегда берем файлы MD83Exp.epf и MD82Exp.epf из последнего официального релиза конфигурации «Конвертация данных».
  3. Очищаем базу от дублей метаданных: Если в базе КД накопилось множество промежуточных версий конфигураций, помечаем устаревшие версии на удаление и выполняем стандартную процедуру Удаление помеченных объектов.
← На главную