Как разблокировать редактирование конфигурации при ошибке distributed IB tools в 1С

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При попытке доработать информационную базу разработчики нередко сталкиваются с ситуацией, когда дерево метаданных полностью заблокировано: нельзя добавить новые объекты, скорректировать модули, изменить свойства или даже сменить режим совместимости конфигурации. В окне настройки поддержки при этом отсутствует кнопка включения возможности изменения, а система выдает системное сообщение: «configuration change locked out by distributed IB tools» (в русскоязычной локализации — «Изменение конфигурации заблокировано средствами распределенной информационной базы»). Выясним причину такого поведения платформы и разберем по шагам, как снять блокировку и сделать базу доступной для доработок.

Причина блокировки конфигуратора

Проанализируем ситуацию: данное сообщение указывает на то, что текущая база данных является подчиненным (периферийным) узлом распределенной информационной базы (РИБ). Архитектура РИБ в платформе 1С устроена таким образом, что все доработки метаданных должны выполняться исключительно в главном узле. В подчиненную базу изменения структуры могут попадать только штатным путем — через загрузку файлов обмена из центральной базы.

Пока в системе определена связь с главным узлом (функция ПланыОбмена.ГлавныйУзел() возвращает ссылку на вышестоящую базу), платформа аппаратно блокирует любые интерактивные изменения в Конфигураторе. Даже если конфигурация в главном узле полностью снята с поддержки или имеет возможность изменения, дочерний узел останется недоступным для правки до тех пор, пока связь не будет разорвана.

Обязательная подготовка перед отключением

Прежде чем выполнять любые манипуляции по изменению структуры распределенной базы, выполним предварительные действия:

  1. Создадим резервную копию. Для этого зайдем в меню «Администрирование» — «Выгрузить информационную базу...» и сохраним файл выгрузки на надежный диск.
  2. Завершим работу всех активных сеансов пользователей и фоновых заданий, чтобы обеспечить монопольный доступ к информационной базе.
  3. Обязательно закроем Конфигуратор, так как изменение настроек распределенной базы требует отсутствия блокировок со стороны конфигуратора.

Способ 1. Программное отключение главного узла через код 1С

Рассмотрим основной способ преобразования периферийной базы в автономную. Для этого необходимо сбросить ссылку на главный узел с помощью метода ПланыОбмена.УстановитьГлавныйУзел(), передав в него параметр Неопределено.

Обратите внимание: данный метод должен выполняться строго в серверном контексте (на сервере или в модуле с признаком исполнения на сервере). Создадим внешнюю обработку или выполним команду в режиме «1С:Предприятие»:


&НаСервере
Процедура ОтключитьГлавныйУзелНаСервере()
    Если ЗначениеЗаполнено(ПланыОбмена.ГлавныйУзел()) Тогда
        ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
    КонецЕсли;
КонецПроцедуры

После выполнения этого кода периферийный узел моментально теряет статус подчиненного и превращается в обычную независимую информационную базу. Теперь можно запускать Конфигуратор и переходить к настройке поддержки.

Способ 2. Отвязка узла через параметры командной строки

Если нет возможности запустить режим «1С:Предприятие» или база аварийно завершает работу при старте из-за ошибок в данных, разберем альтернативный вариант сброса главного узла средствами платформы без написания программного кода.

Для этого воспользуемся специальным ключом командной строки запуска Конфигуратора /ResetMasterNode:

  1. Откроем список информационных баз при запуске 1С.
  2. Выделим нужную базу, нажмем кнопку «Изменить» и перейдем на страницу «Дополнительные параметры запуска».
  3. В поле параметров впишем команду /ResetMasterNode.
  4. Запустим базу в режиме Конфигуратора. Платформа в процессе запуска выполнит отсоединение от РИБ и откроет конфигурацию.
  5. После успешного открытия обязательно удалим данный ключ из параметров запуска, чтобы он не срабатывал при последующих сессиях.

Также эту операцию можно выполнить через терминал или командную строку Windows:

1cv8.exe DESIGNER /IBConnectionString "строка_подключения" /ResetMasterNode

Если же база требует запуска специального скрипта, а интерактивный доступ в режиме предприятия заблокирован, можно передать обработку на исполнение ключом /Execute <ПутьКФайлу>.

Действия в Конфигураторе после снятия главного узла

После того как связь с главным узлом была разорвана любым из описанных способов, конфигурация перестает блокироваться механизмом распределенной базы, однако она все еще находится на поддержке поставщика. Разберем по шагам, как разрешить редактирование объектов:

  1. Откроем Конфигуратор и перейдем в главное меню: «Конфигурация» — «Поддержка» — «Настройка поддержки...».
  2. Убедимся, что кнопка «Включить возможность изменения» стала активной, и нажмем ее.
  3. В появившемся окне подтверждения укажем желаемые правила поддержки для объектов конфигурации (например, установим флаг «Редактируется с сохранением поддержки»).
  4. После этого станет доступным изменение любых метаданных, включая свойство «Режим совместимости» в свойствах корневого элемента конфигурации.

Особенности для типовых конфигураций (на базе БСП)

Посмотрим на нюансы работы с базами, созданными на основе Библиотеки стандартных подсистем. При первом запуске такой базы в режиме «1С:Предприятие» после отключения узла может открыться системный диалог с предупреждением о потере связи с вышестоящей базой. В этом окне следует подтвердить отключение узла от РИБ для продолжения автономной работы.

Также рекомендуется проверить системные константы через функции для технического специалиста:

  1. Константа Настройка подчиненного узла РИБ завершена — для полностью автономной базы этот признак должен быть сброшен.
  2. Константа Это автономное рабочее место — при необходимости отключается.
  3. Регистрация изменений: если обмен больше не планируется, имеет смысл очистить таблицы регистрации изменений с помощью метода ОбменДанными.УдалитьРегистрациюИзменений(), чтобы предотвратить неоправданный рост таблиц базы данных.

Как вернуть базу обратно в состав РИБ

Если отвязка от главного узла требовалась лишь на время (например, для экстренного исправления ошибок в модулях или аварийного восстановления), восстановим структуру РИБ обратно с помощью команды:


&НаСервере
Процедура ПодключитьГлавныйУзелНаСервере(СсылкаНаУзел)
    ПланыОбмена.УстановитьГлавныйУзел(СсылкаНаУзел);
КонецПроцедуры

Важно: при повторном подключении конфигурация подчиненного узла должна оставаться абсолютно идентичной конфигурации центрального узла. Если в процессе отключения метаданные были скорректированы, последующий обмен данными завершится критической ошибкой несоответствия версий конфигураций.

← На главную