Как сделать подчиненный узел РИБ корневым или автономным в 1С:Предприятие?

Программист 1С v8.3 (Обычные формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При эксплуатации распределенных информационных баз (РИБ) нередко возникает ситуация, когда центральный узел выводится из эксплуатации, а периферийная база остается единственной рабочей. При попытке обновить конфигурацию или внести изменения в структуру метаданных администратор сталкивается с сообщением о том, что изменения конфигурации заблокированы средствами информационной базы. Это происходит из-за того, что подчиненный узел ожидает обновлений исключительно от своего главного узла.

Разберем подробно, как отвязать подчиненную базу от РИБ, сделать ее полностью автономной или назначить корневым узлом для новой цепочки обмена.

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

Проанализируем самый быстрый и распространенный вариант — программный сброс ссылки на главный узел плана обмена. Для выполнения этой операции запустим базу в режиме 1С:Предприятие от имени пользователя с полными административными правами и откроем внешнюю обработку или консоль кода.

В теле процедуры выполним следующий код:

ПланыОбмена.УстановитьГлавныйУзел(Неопределено);

Рассмотрим, что происходит в момент выполнения этой строки: платформа очищает внутреннюю ссылку на ведущий узел для текущей информационной базы. Сразу после этого блокировка редактирования метаданных снимается, и база становится автономной.

Способ 2. Отвязка через командную строку (параметр /ResetMasterNode)

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

Разберем по шагам запуск команды для различных вариантов развертывания базы данных:

  1. Для файлового варианта информационной базы выполним команду в командной строке (cmd):
    
    "C:\Program Files\1cv8\common\1cestart.exe" CONFIG /F "C:\Bases\MyBase" /ResetMasterNode
    
  2. Для клиент-серверного варианта (SQL) сформируем следующую команду:
    
    "C:\Program Files\1cv8\common\1cestart.exe" CONFIG /S "ServerName\BaseName" /ResetMasterNode
    

При выполнении данной команды конфигуратор запустится в фоновом режиме, сбросит признак подчиненности узла и автоматически завершит работу.

Важный нюанс: обновление предопределенных данных

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

Чтобы база корректно инициализировала новые предопределенные элементы при обновлении, проверим и восстановим автоматический режим обновления предопределенных данных с помощью программного кода:


ПланыОбмена.УстановитьОбновлениеПредопределенныхДанныхИнформационнойБазы(РежимОбновленияПредопределенныхДанных.Авто);

Если после обновления релизов в базе все же возникли ошибки поиска системных предопределенных значений, выполним процедуру Тестирование и исправление информационной базы в конфигураторе, установив флаг Создавать предопределенные элементы.

Очистка регистрации изменений и настройка узлов

После отвязки узла текущая база все еще хранит информацию о зарегистрированных изменениях для старого главного узла. Это может приводить к лишней нагрузке на СУБД и неоправданному росту таблиц регистрации.

Разберем последовательность завершающих действий:

  1. Откроем планы обмена в режиме 1С:Предприятие и найдем старый главный узел.
  2. Очистим накопленные таблицы регистрации изменений с помощью метода ПланыОбмена.УдалитьРегистрациюИзменений():
    
    ВыборкаУзлов = ПланыОбмена.ПоОрганизациям.Выбрать();
    Пока ВыборкаУзлов.Следующий() Цикл
        ТекущийУзел = ВыборкаУзлов.Ссылка;
        Если ТекущийУзел <> ПланыОбмена.ПоОрганизациям.ЭтотУзел() Тогда
            ПланыОбмена.УдалитьРегистрациюИзменений(ТекущийУзел);
        КонецЕсли;
    КонецЦикла;
    
  3. Удалим старый главный узел из состава плана обмена, если дальнейший обмен с ним не планируется.
  4. Если текущую базу необходимо сделать новой главной (корневой) для создания других узлов, отредактируем наименование и код узла ЭтотУзел, после чего создадим новые подчиненные образы через метод ПланыОбмена.СоздатьНачальныйОбраз().

Проверка регламентных заданий

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

← На главную