В процессе эксплуатации распределенных информационных баз (РИБ) нередки ситуации, когда связь с главным узлом безвозвратно теряется. Это может произойти по разным причинам: отказ оборудования на стороне главного сервера, случайное удаление базы-источника или просто организационные изменения в компании, при которых обмен данными становится неактуальным. База данных, оставшись в статусе подчиненного узла, накладывает жесткие ограничения на работу: в ней заблокировано изменение конфигурации, нельзя редактировать предопределенные элементы, а в таблицах регистрации изменений продолжают накапливаться миллионы «мусорных» записей.
В этой статье мы подробно разберем, как правильно и безопасно отключить подчиненный узел РИБ, очистить накопившиеся транзакции и перевести конфигурацию 1С:Предприятие в полноценный, самостоятельный (автономный) режим работы. Мы рассмотрим как классический программный метод, актуальный для старых конфигураций вроде 1С:Управление торговлей 10.3, так и альтернативные варианты, включая запуск со специальными параметрами платформы.
Проанализируем классический программный метод деактивации связи с главным узлом. Платформа 1С:Предприятие предоставляет встроенный метод для управления конфигурацией распределенной базы данных. Чтобы снять признак подчиненности, нам необходимо вызвать метод УстановитьГлавныйУзел() и передать в него значение Неопределено.
Для реализации этого способа нам понадобится запустить базу в режиме «Предприятие» и выполнить следующий фрагмент кода. Сделать это можно с помощью внешней обработки (например, используя стандартную обработку «Групповая обработка справочников и документов» или создав простую обработку в конфигураторе):
// Программный код для отключения подчиненности РИБ
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
Рассмотрим подробнее, что происходит в этот момент внутри системы. Платформа вносит изменения в служебные таблицы базы данных, удаляя ссылку на родительский узел. В результате этого действия:
Если у вас нет возможности или желания писать программный код, разработчики платформы «1С:Предприятие» предусмотрели специальный ключ запуска, предназначенный именно для таких аварийных ситуаций. Этот метод работает на всех современных версиях платформы 8.3.
Разберем по шагам, как воспользоваться этим механизмом:
/ResetMasterNode (или на русском языке: /РесетМастерНоде).Важное предупреждение: после того как база успешно запустилась в автономном режиме, обязательно вернитесь в настройки запуска и удалите параметр /ResetMasterNode. Если этого не сделать, система будет выдавать предупреждение при каждом последующем запуске программы пользователями, что создаст ненужные неудобства.
Просто отключить связь с главным узлом — это лишь половина дела. В старых базах, которые годами работали в режиме РИБ, накапливается гигантский объем зарегистрированных изменений для обмена. Когда обмен перестает функционировать, эти записи зависают в таблицах базы данных. Если узел не очищен, система продолжит тратить ресурсы на обслуживание этих данных, что приведет к замедлению работы СУБД и росту размера базы.
Выясним причину возможных сбоев при простом удалении узла. В теме на форуме часто советуют просто удалить узел из плана обмена. Однако, если база большая, прямое удаление объекта через метод Удалить() или интерактивно из списка может вызвать зависание программы, ошибку нехватки памяти (Out of Memory) или превышение таймаута транзакции в SQL. Это происходит потому, что платформа пытается очистить миллионы строк связанных регистраций в рамках одной транзакции.
Чтобы избежать подобных проблем, выполним очистку порциями или воспользуемся стандартными инструментами:
ПланыОбмена.УдалитьРегистрациюИзменений(), передавая туда ссылку на конкретный узел. Рассмотрим пример безопасной очистки:
// Пример программного удаления регистрации изменений для узла
СсылкаНаУзел = ПланыОбмена.ПолныйОбмен.НайтиПоКоду("001"); // Код вашего старого главного узла
Если ЗначениеЗаполнено(СсылкаНаУзел) Тогда
ПланыОбмена.УдалитьРегистрациюИзменений(СсылкаНаУзел);
Сообщить("Регистрация изменений успешно очищена.");
КонецЕсли;
Только после того как все таблицы регистрации изменений для этого узла будут полностью очищены, можно безопасно переходить к физическому удалению самого узла из справочника плана обмена.
Разберем несколько важных правил, о которых часто забывают даже опытные администраторы:
ЭтотУзел). Он олицетворяет вашу текущую информационную базу. Удалять нужно именно тот узел, который ранее соответствовал главному офису или другим периферийным базам.Проанализируем ситуацию, когда база данных работает под управлением СУБД (MS SQL, PostgreSQL и др.) в клиент-серверном режиме. После выполнения программного кода или запуска базы с ключом /ResetMasterNode, сервер 1С:Предприятия может продолжать кэшировать старый статус базы данных, считая её подчиненной.
Чтобы изменения гарантированно вступили в силу для всех активных сеансов и фоновых процессов, настоятельно рекомендуется выполнить следующие действия:
1C:Enterprise 8.3 Server Agent или ragent).Хотя классическая конфигурация УТ 10.3 не содержит в себе Библиотеку стандартных подсистем (БСП), многие доработанные или обновленные базы используют ее механизмы. В современных конфигурациях (таких как УТ 11, КА 2, ERP) простого вызова ПланыОбмена.УстановитьГлавныйУзел(Неопределено) недостаточно.
В таких системах существуют специальные константы, которые хранят состояние интеграции. Чтобы полностью завершить перевод базы в автономный режим, вам потребуется открыть «Функции для технического специалиста» (или «Все функции») и вручную сбросить (очистить) значения следующих констант:
НастройкаПодчиненногоУзлаРИБЗавершенаЭтоАвтономноеРабочееМестоЕсли эти константы останутся заполненными, логика БСП будет продолжать считать базу частью распределенной сети, что заблокирует некоторые административные функции или вызовет ошибки при обновлении конфигурации.
Перевод подчиненной базы РИБ в самостоятельный статус — процедура несложная, но требующая аккуратности и последовательности. Снятие признака подчиненности через программный код или параметр /ResetMasterNode, последующая полная очистка зарегистрированных изменений и удаление связанных служебных настроек позволят вам получить чистую, быструю и полностью управляемую автономную базу данных.