При работе с расширениями в 1С:Предприятие, особенно при одновременном подключении нескольких из них, можно столкнуться со специфической платформенной ошибкой: «Найдены дублирующиеся записи в менеджере имен базы данных». Эта ошибка возникает при запуске базы данных и, как правило, указывает на глубокий внутренний конфликт метаданных, который не всегда очевиден при поверхностном анализе.
Проблема часто проявляется после подключения очередного расширения. При этом простая проверка на наличие объектов с одинаковыми именами в конфликтующих расширениях может не дать результата. Разберем по шагам, в какую сторону двигаться для диагностики и устранения этой ошибки.
Прежде чем переходить к сложным методам, стоит выполнить стандартные процедуры, которые часто помогают решить проблемы, связанные с кэшем и ошибками платформы.
Обновление платформы 1С
Как показывает практика, подобные ошибки часто связаны с недоработками в конкретных версиях платформы. Разработчики 1С регулярно выпускают исправления. Если вы используете не последнюю версию платформы в своей ветке (например, 8.3.24), первым делом стоит обновиться до самого свежего релиза. Часто проблема исчезает просто после обновления.
Тестирование и исправление (ТИИ)
После обновления платформы или в качестве самостоятельного шага необходимо запустить Тестирование и исправление информационной базы. Важно сделать это с максимальным набором флагов, включая те, что относятся к расширениям.
Иногда выполнение ТИИ на новой версии платформы решает проблему, так как исправленные механизмы корректно обрабатывают и исправляют внутренние коллизии.
Если стандартные методы не помогли, значит, проблема глубже. Ошибка «Найдены дублирующиеся записи...» почти всегда указывает не на дублирование имен объектов, а на дублирование их внутренних уникальных идентификаторов (GUID).
Каждый объект метаданных (справочник, документ, роль и т.д.) имеет уникальный идентификатор GUID. Когда вы подключаете два расширения, в которых есть собственные (не заимствованные) объекты с одинаковыми GUID, платформа не может корректно сопоставить их с таблицами в базе данных и выдает эту ошибку.
Откуда берутся дублирующиеся GUID?
.cfe, а потом на его основе создали второе расширение (например, для другого проекта). В итоге оба расширения содержат объекты с идентичными GUID.GUID мог не смениться.Чтобы найти конфликтующие объекты, необходимо проанализировать внутреннюю структуру расширений. Для этого выгрузим их в файлы формата XML.
Порядок действий:
GUID.
Для этого можно использовать любой инструмент для сравнения содержимого папок (например, Total Commander, WinMerge) или текстовый редактор с функцией поиска по файлам (например, VS Code, Notepad++).
Ищите строки вида <uuid>...</uuid>. Найдя уникальный идентификатор в одном расширении, выполните поиск по этому же значению в файлах второго расширения. Особое внимание уделите собственным, не заимствованным объектам.
GUID в обоих расширениях, необходимо сгенерировать для него новый, уникальный идентификатор в одном из расширений.
Самый надежный способ — пересоздать объект вручную. Удалите конфликтующий объект (например, справочник «ДополнительныеСвойства») в одном из расширений, а затем создайте его заново с тем же именем и настройками. При создании нового объекта платформа автоматически присвоит ему уникальный GUID.
Важно: если с этим объектом связаны данные, его удаление может привести к их потере. Перед удалением убедитесь, что вы сможете восстановить данные или что их потеря некритична.
Предостережение: В обсуждениях могут встречаться советы по прямому вмешательству в системные таблицы СУБД (например, в таблицу Params). Делать это категорически не рекомендуется. Это является нарушением лицензионного соглашения, может привести к полной и безвозвратной потере данных и лишает вас технической поддержки.
Таким образом, решая проблему «дублирующихся записей в менеджере имен», мы смещаем фокус с имен объектов на их внутренние идентификаторы, что позволяет найти и устранить истинную причину конфликта.