При попытке доработать информационную базу разработчики нередко сталкиваются с ситуацией, когда дерево метаданных полностью заблокировано: нельзя добавить новые объекты, скорректировать модули, изменить свойства или даже сменить режим совместимости конфигурации. В окне настройки поддержки при этом отсутствует кнопка включения возможности изменения, а система выдает системное сообщение: «configuration change locked out by distributed IB tools» (в русскоязычной локализации — «Изменение конфигурации заблокировано средствами распределенной информационной базы»). Выясним причину такого поведения платформы и разберем по шагам, как снять блокировку и сделать базу доступной для доработок.
Проанализируем ситуацию: данное сообщение указывает на то, что текущая база данных является подчиненным (периферийным) узлом распределенной информационной базы (РИБ). Архитектура РИБ в платформе 1С устроена таким образом, что все доработки метаданных должны выполняться исключительно в главном узле. В подчиненную базу изменения структуры могут попадать только штатным путем — через загрузку файлов обмена из центральной базы.
Пока в системе определена связь с главным узлом (функция ПланыОбмена.ГлавныйУзел() возвращает ссылку на вышестоящую базу), платформа аппаратно блокирует любые интерактивные изменения в Конфигураторе. Даже если конфигурация в главном узле полностью снята с поддержки или имеет возможность изменения, дочерний узел останется недоступным для правки до тех пор, пока связь не будет разорвана.
Прежде чем выполнять любые манипуляции по изменению структуры распределенной базы, выполним предварительные действия:
Рассмотрим основной способ преобразования периферийной базы в автономную. Для этого необходимо сбросить ссылку на главный узел с помощью метода ПланыОбмена.УстановитьГлавныйУзел(), передав в него параметр Неопределено.
Обратите внимание: данный метод должен выполняться строго в серверном контексте (на сервере или в модуле с признаком исполнения на сервере). Создадим внешнюю обработку или выполним команду в режиме «1С:Предприятие»:
&НаСервере
Процедура ОтключитьГлавныйУзелНаСервере()
Если ЗначениеЗаполнено(ПланыОбмена.ГлавныйУзел()) Тогда
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
КонецЕсли;
КонецПроцедуры
После выполнения этого кода периферийный узел моментально теряет статус подчиненного и превращается в обычную независимую информационную базу. Теперь можно запускать Конфигуратор и переходить к настройке поддержки.
Если нет возможности запустить режим «1С:Предприятие» или база аварийно завершает работу при старте из-за ошибок в данных, разберем альтернативный вариант сброса главного узла средствами платформы без написания программного кода.
Для этого воспользуемся специальным ключом командной строки запуска Конфигуратора /ResetMasterNode:
/ResetMasterNode.Также эту операцию можно выполнить через терминал или командную строку Windows:
1cv8.exe DESIGNER /IBConnectionString "строка_подключения" /ResetMasterNode
Если же база требует запуска специального скрипта, а интерактивный доступ в режиме предприятия заблокирован, можно передать обработку на исполнение ключом /Execute <ПутьКФайлу>.
После того как связь с главным узлом была разорвана любым из описанных способов, конфигурация перестает блокироваться механизмом распределенной базы, однако она все еще находится на поддержке поставщика. Разберем по шагам, как разрешить редактирование объектов:
Посмотрим на нюансы работы с базами, созданными на основе Библиотеки стандартных подсистем. При первом запуске такой базы в режиме «1С:Предприятие» после отключения узла может открыться системный диалог с предупреждением о потере связи с вышестоящей базой. В этом окне следует подтвердить отключение узла от РИБ для продолжения автономной работы.
Также рекомендуется проверить системные константы через функции для технического специалиста:
Настройка подчиненного узла РИБ завершена — для полностью автономной базы этот признак должен быть сброшен.Это автономное рабочее место — при необходимости отключается.ОбменДанными.УдалитьРегистрациюИзменений(), чтобы предотвратить неоправданный рост таблиц базы данных.Если отвязка от главного узла требовалась лишь на время (например, для экстренного исправления ошибок в модулях или аварийного восстановления), восстановим структуру РИБ обратно с помощью команды:
&НаСервере
Процедура ПодключитьГлавныйУзелНаСервере(СсылкаНаУзел)
ПланыОбмена.УстановитьГлавныйУзел(СсылкаНаУзел);
КонецПроцедуры
Важно: при повторном подключении конфигурация подчиненного узла должна оставаться абсолютно идентичной конфигурации центрального узла. Если в процессе отключения метаданные были скорректированы, последующий обмен данными завершится критической ошибкой несоответствия версий конфигураций.