При сравнении и объединении конфигураций в 1С программисты часто сталкиваются с неприятной ситуацией: в дереве объектов появляются два одинаковых по имени реквизита, справочника или документа. Одно имя отображается как существующее в основной конфигурации, а второе — как новое из файла. Это происходит потому, что платформа идентифицирует объекты не по их строковому представлению (имени), а по уникальному внутреннему идентификатору — UUID (или GUID).
Разберем подробно, почему это происходит и какими способами можно восстановить правильную связь между объектами, чтобы избежать «удаления-добавления» и потери данных.
Проанализируем ситуацию: почему раньше объекты «узнавали» друг друга, а теперь перестали? Основная причина — нарушение цепочки поддержки или независимое создание объектов. Рассмотрим типичные сценарии:
UUID текущей базы заменяются идентификаторами из файла.Склады, они получат разные уникальные номера, даже если их структура полностью совпадает.Это самый простой и безопасный метод, который позволяет «подсказать» платформе, что два объекта с разными UUID на самом деле являются одним и тем же. Рассмотрим порядок действий:
После этой процедуры система предложит объединить свойства этих объектов. В дальнейшем, при следующих обновлениях, платформа будет помнить эту связь, так как идентификатор объекта в вашей базе может быть скорректирован или связь будет зафиксирована в правилах поддержки.
Если объектов много или ручное сопоставление по каким-то причинам не помогает, воспользуемся низкоуровневым методом. Платформа 8.3 позволяет работать с конфигурацией как с набором текстовых файлов. Проанализируем этот процесс:
XML файл, описывающий нужный объект метаданных (например, для справочника это будет файл в папке Catalogs).UUID. Он выглядит примерно так:
<Properties>
<Name>ИмяРеквизита</Name>
<Synonym/>
<Comment/>
<Type>
<v8:Type>xs:string</v8:Type>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip/>
</Properties>
<Uuid>550e8400-e29b-41d4-a716-446655440000</Uuid>
<Uuid> на тот идентификатор, который используется в эталонной конфигурации.Важно: Этот метод требует крайней осторожности. Перед началом работы обязательно создайте резервную копию базы данных (dt-файл).
Если вы уверены, что конфигурации являются «родственными», но задвоение все равно происходит, попробуем исключить технические ошибки платформы. Проанализируем шаги по очистке окружения:
/ClearCache. Это принудительно очистит локальные временные файлы, которые могут содержать старые описания метаданных.Посмотрим на ситуацию со стороны данных. Если вы просто удалите один из задвоенных объектов (тот, что «старый»), то при обновлении конфигурации базы данных все данные, накопленные в этом объекте (например, значения в колонке таблицы), будут безвозвратно удалены. Чтобы этого не произошло, придерживайтесь следующей стратегии:
Помните, что залог успешного обновления — это сохранение идентичности UUID. Старайтесь всегда использовать механизм сравнения и объединения и следите за тем, чтобы цепочка поддержки конфигурации не прерывалась.