Как отключить РИБ и разблокировать конфигурацию в 1С:Розница?

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

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

В этой статье мы подробно разберем, почему возникает блокировка конфигурации (знаменитые «серые замочки»), как правильно использовать технологический ключ /ResetMasterNode, почему программные методы могут выдавать ошибки контекста и какие шаги необходимо выполнить в пользовательском режиме 1С, чтобы окончательно очистить базу от «следов» интеграции распределенной сети.

Выясняем причину: почему база оказалась заблокированной?

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

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

Попытки отключить синхронизацию стандартным способом из интерфейса такой базы часто приводят к ошибке: «Действие недоступно для главного узла распределенной ИБ» или к полному запрету на изменение настроек обмена. Нам потребуется снять признак подчиненности принудительно.

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

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

Выполним процедуру по шагам:

  1. Полностью завершите работу всех пользователей в информационной базе. Перед проведением любых низкоуровневых операций обязательно сделайте резервную копию (скопируйте файл 1Cv8.1CD для файловой базы или сделайте бэкап СУБД для клиент-серверной).
  2. Откройте командную строку Windows (cmd) или терминал.
  3. Сформируйте команду запуска конфигуратора, указав путь к исполняемому файлу нужного релиза платформы, путь к базе, имя администратора, пароль и управляющий ключ /ResetMasterNode.

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


"C:\Program Files\1cv8\8.3.16.1030\bin\1cv8.exe" DESIGNER /F"C:\Users\User\Documents\1C\Retail2" /N"Администратор" /P"ПарольАдмина" /ResetMasterNode

Рассмотрим параметры этой команды подробнее:

Важная особенность поведения платформы: на современных релизах платформы (начиная с версий 8.3.14) запуск с этим ключом не выводит никаких диалоговых окон с подтверждением. Конфигуратор запускается, выполняет операцию в фоновом режиме и мгновенно закрывается. Не пугайтесь — это штатное поведение. При следующем обычном открытии этой базы признак подчиненности будет снят, а конфигурация разблокируется.

Способ 2. Программный сброс главного узла

Если по каким-то причинам запуск через командную строку неудобен, мы можем прибегнуть к программному методу отвязки с помощью встроенного языка 1С. Для этого используется метод менеджера планов обмена УстановитьГлавныйУзел().

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

В современных конфигурациях, работающих под управлением управляемых форм (таких как «1С:Розница 2.3» или «3.0»), стандартным режимом запуска является тонкий клиент. Выполнить этот метод напрямую в контексте клиента нельзя.

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


&НаСервере
Процедура ОтвязатьБазуНаСервере()
    
    // Передаем Неопределено, чтобы очистить ссылку на главный узел
    ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
    
    Сообщить("Связь с главным узлом успешно разорвана. База переведена в автономный режим.");
    
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьОтключение(Команда)
    ОтвязатьБазуНаСервере();
КонецПроцедуры

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

Очистка следов обмена на уровне БСП (Библиотеки стандартных подсистем)

Просто сбросить главный узел на уровне платформы (через /ResetMasterNode или программно) в современных конфигурациях недостаточно. Конфигурация «1С:Розница» построена с использованием Библиотеки стандартных подсистем (БСП), которая хранит собственные метаданные о состоянии интеграции в константах и регистрах сведений.

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

  1. Запустите информационную базу в режиме «1С:Предприятие» под пользователем с полными правами.
  2. Откройте меню «Функции для технического специалиста» (в старых версиях — «Все функции»). Если этого меню нет, включите его в настройках параметров системы.
  3. Перейдите в раздел Константы и найдите следующие записи:
    • Настройка подчиненного узла РИБ завершена — снимите этот флаг (установите значение в Ложь).
    • Это автономное рабочее место — снимите этот флаг (установите в Ложь).
    • Главный узел — если данная константа присутствует в вашей версии БСП, очистите её значение.
  4. Перейдите в раздел Планы обмена. Откройте тот план обмена, по которому функционировал ваш РИБ. Нажмите на предопределенный элемент, который ранее соответствовал вашему Главному узлу (обычно он помечен специальной пиктограммой), и физически удалите его или пометьте на удаление, если физическое удаление интерактивно заблокировано.

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

Как правильно удалить РИБ из НАСТОЯЩЕЙ центральной базы?

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

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

  1. Перейдите в раздел меню Администрирование, далее выберите пункт Синхронизация данных.
  2. Откройте ссылку Настройки синхронизации данных.
  3. В появившемся списке выделите тот подчиненный узел, связь с которым вы хотите прекратить.
  4. Нажмите кнопку Еще на панели управления и выберите команду Удалить настройку синхронизации.
  5. Система БСП автоматически пометит на удаление соответствующий узел в планах обмена, очистит зарегистрированные изменения для этого узла и удалит связанные служебные регистры сведений.
  6. Запустите стандартную обработку «Удаление помеченных объектов» и окончательно удалите данный узел из информационной базы.

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

← На главную