Как отключить подчиненный узел РИБ и перевести базу 1С в автономный режим

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

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

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

Способ 1. Программное отключение через УстановитьГлавныйУзел

Проанализируем классический программный метод деактивации связи с главным узлом. Платформа 1С:Предприятие предоставляет встроенный метод для управления конфигурацией распределенной базы данных. Чтобы снять признак подчиненности, нам необходимо вызвать метод УстановитьГлавныйУзел() и передать в него значение Неопределено.

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


// Программный код для отключения подчиненности РИБ
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);

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

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

Способ 2. Отключение через параметры запуска платформы (без программирования)

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

Разберем по шагам, как воспользоваться этим механизмом:

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

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

Очистка зарегистрированных изменений: почему это критически важно

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

Выясним причину возможных сбоев при простом удалении узла. В теме на форуме часто советуют просто удалить узел из плана обмена. Однако, если база большая, прямое удаление объекта через метод Удалить() или интерактивно из списка может вызвать зависание программы, ошибку нехватки памяти (Out of Memory) или превышение таймаута транзакции в SQL. Это происходит потому, что платформа пытается очистить миллионы строк связанных регистраций в рамках одной транзакции.

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

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

// Пример программного удаления регистрации изменений для узла
СсылкаНаУзел = ПланыОбмена.ПолныйОбмен.НайтиПоКоду("001"); // Код вашего старого главного узла
Если ЗначениеЗаполнено(СсылкаНаУзел) Тогда
    ПланыОбмена.УдалитьРегистрациюИзменений(СсылкаНаУзел);
    Сообщить("Регистрация изменений успешно очищена.");
КонецЕсли;

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

Ограничения и важные нюансы при удалении узлов

Разберем несколько важных правил, о которых часто забывают даже опытные администраторы:

Особенности работы в клиент-серверном варианте (SQL)

Проанализируем ситуацию, когда база данных работает под управлением СУБД (MS SQL, PostgreSQL и др.) в клиент-серверном режиме. После выполнения программного кода или запуска базы с ключом /ResetMasterNode, сервер 1С:Предприятия может продолжать кэшировать старый статус базы данных, считая её подчиненной.

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

  1. Завершить все активные сеансы пользователей в консоли администрирования серверов 1С.
  2. Перезапустить службу сервера «1С:Предприятие» (служба 1C:Enterprise 8.3 Server Agent или ragent).
  3. Очистить серверный кэш базы данных при необходимости.

Что делать, если в базе используются современные библиотеки (БСП)

Хотя классическая конфигурация УТ 10.3 не содержит в себе Библиотеку стандартных подсистем (БСП), многие доработанные или обновленные базы используют ее механизмы. В современных конфигурациях (таких как УТ 11, КА 2, ERP) простого вызова ПланыОбмена.УстановитьГлавныйУзел(Неопределено) недостаточно.

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

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

Заключение

Перевод подчиненной базы РИБ в самостоятельный статус — процедура несложная, но требующая аккуратности и последовательности. Снятие признака подчиненности через программный код или параметр /ResetMasterNode, последующая полная очистка зарегистрированных изменений и удаление связанных служебных настроек позволят вам получить чистую, быструю и полностью управляемую автономную базу данных.

← На главную