При настройке обмена данными между конфигурациями (например, Управление торговлей и Бухгалтерия предприятия) пользователи часто сталкиваются с технической ошибкой: "Значение префикса программы не уникально (e41c9bb2-...)". В этой статье мы подробно разберем, почему возникает эта ситуация, как работают внутренние идентификаторы 1С:Предприятие и какими способами можно восстановить работоспособность синхронизации.
Разберем ситуацию, которая приводит к подобным сбоям. В современных конфигурациях на базе Библиотеки стандартных подсистем (БСП) для идентификации баз в распределенной системе используется не только буквенный префикс (например, "УТ" или "БП"), но и уникальный глобальный идентификатор в формате GUID. Этот идентификатор генерируется один раз при создании базы или первом включении механизма синхронизации.
Проанализируем сценарий появления ошибки: администратор создает копию работающей базы (например, для тестов или для новой организации), просто копируя файл 1Cv8.1CD или разворачивая бэкап SQL на другом сервере. Вместе с данными копируются и все служебные идентификаторы. Когда система пытается установить связь через прямое подключение (COM), она обнаруживает, что удаленная база имеет точно такой же уникальный код, как и текущая, либо этот код уже занят существующей настройкой обмена. Система воспринимает это как попытку синхронизации базы «самой с собой» и блокирует процесс.
Рассмотрим самый простой и рекомендуемый способ, который появился в последних версиях БСП. Если база данных была скопирована, нам необходимо принудительно заставить программу сгенерировать новый код для «этого узла» плана обмена.
Важно: После выполнения этой команды система сгенерирует новый GUID для текущей базы. Это должно решить проблему конфликта идентификаторов при создании новой настройки обмена.
Иногда кнопка в меню Еще может отсутствовать или быть неактивной. В этом случае мы можем изменить код узла вручную через служебные инструменты. Посмотрим на этот процесс по шагам:
ОбменЗарплата3Бухгалтерия3 или СинхронизацияДанныхЧерезУниверсальныйФормат).e41c9bb2...), на который ругается система.Проанализируем ситуацию, когда стандартная смена кода в плане обмена не помогает. Информация о префиксах и связях баз дублируется в нескольких служебных регистрах. Если там остались «хвосты» от старых попыток настройки, их нужно вычистить. Для этого можно воспользоваться штатной обработкой `Групповое изменение реквизитов` или более гибкими инструментами, такими как обработка «Корректор» и универсальные обработки для работы с регистрами сведений.
Нам необходимо проверить и, при необходимости, изменить данные в следующих объектах:
ОбщиеНастройкиУзловИнформационныхБаз. Здесь хранится соответствие узлов и их префиксов.НастройкиТранспортаОбменаДанными. Проверьте, нет ли там записей с конфликтующим идентификатором.ИдентификаторИнформационнойБазы.Рассмотрим пример программного кода, который можно запустить во внешней обработке или через консоль кода, чтобы полностью «обнулить» идентификатор базы, заставив систему считать её уникальной:
// Программный сброс идентификатора информационной базы
Процедура ОбновитьИдентификаторБазы()
НовыйИД = Новый УникальныйИдентификатор();
Константы.ИдентификаторИнформационнойБазы.Установить(НовыйИД);
Сообщить("Установлен новый уникальный идентификатор базы: " + Строка(НовыйИД));
// Также необходимо обновить коды в планах обмена
// Для каждого плана обмена из метаданных выполняем обновление
Для Каждого ПланОбмена Из Метаданные.ПланыОбмена Цикл
УзелОбъекта = ПланыОбмена[ПланОбмена.Имя].ЭтотУзел().ПолучитьОбъект();
Если УзелОбъекта <> Неопределено Тогда
УзелОбъекта.Код = Строка(НовыйИД);
УзелОбъекта.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Выясним, к чему может привести изменение префиксов и идентификаторов, если база уже не пустая. Перед выполнением вышеуказанных действий обязательно создайте резервную копию.
ТОРГ-000001), что может вызвать вопросы у бухгалтерии.Для минимизации рисков мы рекомендуем придерживаться следующего алгоритма:
ПолныеПрава или АдминистраторСистемы) для записи служебных регистров.Таким образом, решив проблему с неуникальностью префикса e41c9bb2-..., мы устраняем фундаментальную коллизию идентификации баз, возникшую в результате копирования данных.