При активной доработке и сопровождении правил обмена в конфигурации 1С:Конвертация данных 2.1 разработчики регулярно сталкиваются с ситуацией, когда после обновления рабочей базы (источника или приемника) требуется актуализировать структуру метаданных в КД. Однако попытка загрузить файл описания структуры метаданных поверх существующей конфигурации нередко приводит к критической ошибке платформы:
Ошибка при попытке вставки записи с неуникальным значением ссылки. таблица Reference7 (или Reference16, Reference37)
Разберем подробнее, почему возникает данная коллизия и как правильно обновить состав реквизитов и объектов, сохранив все ранее настроенные правила конвертации объектов (ПКО), правила конвертации свойств (ПКС) и алгоритмы.
Выясним причину такого поведения базы. Ошибка формируется на уровне СУБД или встроенной базы данных 1С при попытке записать объект с существующим уникальным идентификатором (UUID) в системные таблицы, соответствующие справочникам КД (например, СвойстваОбъектов или Объекты):
MD83Exp.epf) генерирует идентификаторы объектов и их реквизитов. При повторной загрузке «поверх» старой версии конфигурации встроенный механизм обновления КД 2.1 пытается сопоставить существующие записи. Если в конфигурации изменился составной тип реквизита, порядок свойств или удалились некоторые элементы, алгоритм дает сбой и пытается создать новую запись с уже занятой ссылкой.MD83Exp.epf некорректно обрабатывали предопределенные элементы и сложные типы метаданных.Рассмотрим основной и самый надежный регламент, который гарантирует корректность связей метаданных и исключает ошибки СУБД. Разберем процесс по шагам:
Выгрузка правил обмена и выгружаем нашу доработанную конвертацию в XML-файл на диск. Это гарантирует сохранность всех алгоритмов, обработчиков событий и сопоставлений.MD83Exp.epf из комплекта поставки КД 2.1.8. Выгружаем структуру метаданных в отдельный XML-файл.Загрузка структуры метаданных. Критически важный момент: не выбираем старую конфигурацию для обновления. Выбираем вариант создания новой конфигурации (или указываем новый номер релиза, чтобы создалась отдельная запись в справочнике Конфигурации).Загрузка правил обмена, выбираем сохраненный на первом шаге XML-файл с правилами. В окне сопоставления конфигураций указываем в качестве источника или приемника нашу вновь созданную конфигурацию с актуальной структурой.В результате все ПКО и ПКС автоматически привяжутся к новым метаданным, старые настройки сохранятся, а новые реквизиты станут доступны для добавления в правила.
Проанализируем ситуацию, когда типовая конфигурация претерпела минимальные точечные изменения — например, программист добавил всего 1–2 реквизита в конкретный справочник или документ. В таком случае полная перезагрузка структуры метаданных избыточна:
Конфигурации и находим нужную нам конфигурацию.Объекты и находим требуемый объект метаданных (например, документ РеализацияТоваровУслуг).Чтобы избежать подобных коллизий в будущем, применим следующие правила:
MD83Exp.epf снимаем флаги выгрузки движений, форм, макетов, картинок и прав доступа, если конвертация строится только на уровне данных. Это существенно снижает объем файла и исключает ошибки сопоставления.MD83Exp.epf и MD82Exp.epf из последнего официального релиза конфигурации «Конвертация данных».Удаление помеченных объектов.