При внедрении дополнительных отраслевых модулей или расширений в типовые решения 1С (например, при интеграции модуля «Учет спецодежды и инвентаря» в конфигурацию КУФИБ для Казахстана от компании «1С-Рейтинг») технические специалисты часто сталкиваются со специфической проблемой. В процессе сравнения и объединения конфигураций платформа автоматически сопоставляет два закрытых (защищенных) модуля. Один из этих модулей принадлежит основной конфигурации, а второй — устанавливаемому дополнению.
Попытка объединить такие модули стандартным способом приводит к тому, что один модуль затирает другой, поскольку их программный код закрыт для редактирования и слияния. В этой статье мы подробно разберем причины возникновения этой коллизии и рассмотрим несколько эффективных практических способов ее решения.
Давайте проанализируем внутренние механизмы работы платформы 1С. Когда мы запускаем процедуру «Сравнить, объединить с конфигурацией из файла», сопоставление объектов происходит не только по их символическим именам в дереве метаданных. Главным ориентиром для платформы служат внутренние уникальные идентификаторы объектов — GUID (Globally Unique Identifier).
Разработчики отраслевых решений и дополнительных модулей часто используют один и тот же шаблон (каркас) системы защиты для разных своих продуктов. В результате защищенные модули в основной конфигурации и во внешнем модуле имеют абсолютно идентичные внутренние GUID. Для платформы 1С это однозначный сигнал: перед ней один и тот же объект, даже если в дереве метаданных они называются по-разному. Стандартное интерактивное меню сравнения и объединения не позволяет вручную «разорвать» эту связь, если GUID объектов совпадают.
Ниже мы подробно рассмотрим три практических метода решения этой проблемы.
Этот метод является наиболее простым и не требует вмешательства в структуру XML-файлов конфигурации. Мы создадим чистую базу-посредник, перенесем туда объекты специальным образом, а затем интегрируем их в рабочую конфигурацию.
Рассмотрим этот процесс по шагам:
Конфигураторе..cf) дополнительного модуля.temp_module.cf).temp_module.cf.Важное замечание: При использовании этого метода новые скопированные объекты потеряют связь с поддержкой поставщика оригинального модуля. Если для вас критически важно сохранить автоматическое обновление этого модуля в будущем, воспользуйтесь рекомендациями по восстановлению поддержки, описанными в конце статьи, или перейдите ко второму способу.
Если нам необходимо полностью контролировать процесс и гарантировать, что новые объекты не будут конфликтовать со старыми, сохранив при этом правильную структуру метаданных, мы можем прибегнуть к механизму выгрузки конфигурации в файлы XML.
Проанализируем этот алгоритм подробнее:
Конфигураторе.ОбщиеМодули), и его имя совпадает с именем модуля в конфигурации.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.Конфигураторе выберем пункт «Конфигурация» — «Разработка конфигурации» — «Загрузить конфигурацию из файлов...» и укажем нашу измененную папку..cf.Теперь при сравнении и объединении с основной конфигурацией платформа увидит измененный модуль как совершенно новый независимый объект, так как его GUID больше не совпадает с GUID модуля защиты основной конфигурации.
Прежде чем приступать к сложным техническим манипуляциям с копированием объектов или изменением XML-файлов, мы рекомендуем обратиться к официальной поддержке разработчика (в данном случае — «1С-Рейтинг»).
Крупные разработчики отраслевых решений часто выпускают специализированные файлы поставки, предназначенные именно для совместного использования их продуктов. Посмотрим, почему это важно:
.cfu или специальный .cf), в котором внутренние коллизии модулей защиты уже устранены на уровне исходного кода поставки.Если вы применили Способ 1 и перенесли объекты в режиме копирования, эти объекты больше не связаны с конфигурацией поставщика дополнительного модуля. Выясним, как можно вернуть их на поддержку для упрощения будущих обновлений:
.cf) дополнительного модуля.Применяя эти методы, мы сможем успешно обойти ограничение платформы на автоматическое сопоставление идентичных по GUID закрытых модулей защиты, обеспечив корректную и стабильную работу всех установленных программных продуктов 1С.