Администрирование · 9 мин
Как снять признак распределенной базы 1С
Как снять признак распределенной информационной базы в 1С: сброс главного узла, обработки, очистка планов обмена и проверка результата.
Признак распределенной информационной базы (УРБД, а в современных конфигурациях — механизм планов обмена и РИБ) появляется, когда база участвует в обмене данными как главный или подчиненный узел. После отказа от обмена, переноса базы или восстановления из копии этот признак часто мешает: база требует регистрации изменений, отказывается работать как самостоятельная, а при загрузке выгрузки выдает сообщение «Из распределенной информационной базы нельзя загрузить данные в обычную».
Снять признак можно несколькими способами: штатным сбросом главного узла, универсальной обработкой, а в крайнем случае — правкой служебных таблиц в файловой копии. Выбор зависит от того, есть ли у вас доступ к конфигуратору, какая версия платформы используется и нужно ли сохранить настройки обмена.
Ниже разобраны все рабочие методы с условиями применения, рисками и проверкой результата. Перед любыми действиями сделайте резервную копию базы — это единственный способ откатиться, если что-то пойдет не так.
Как понять, что база имеет признак распределенной
Перед снятием признака убедитесь, что проблема именно в нем. Типичные симптомы: при загрузке файла выгрузки (.dt) появляется ошибка о невозможности загрузки в распределенную базу; при попытке изменить конфигурацию система сообщает, что база является подчиненным узлом; в журнале регистрации видны ошибки обмена с несуществующим главным узлом.
Проверить статус программно можно одной строкой в консоли кода или через «Выполнить произвольное выражение» (Ctrl+Shift+F9 в толстом клиенте):
Сообщить(ПланыОбмена.ГлавныйУзел());Если выражение возвращает ссылку на узел плана обмена — база является подчиненным узлом распределенной базы. Если возвращает Неопределено, но обмены все равно настроены, значит база — главный узел, и признак «распределенности» снимается иначе (через удаление узлов обмена).
Подготовка: резервная копия и анализ обменов
Обязательный первый шаг — выгрузка базы через конфигуратор (Администрирование → Выгрузить информационную базу) или копирование файла 1Cv8.1CD для файлового варианта. Для серверной базы сделайте выгрузку средствами СУБД или .dt. Без копии откат после снятия признака невозможен, а данные регистрации изменений будут удалены безвозвратно.
Второй шаг — зафиксируйте, какие планы обмена есть в базе и какие узлы активны. Откройте список планов обмена в режиме предприятия (обычно раздел «Администрирование» → «Синхронизация данных») и выпишите узлы. Если обмен еще нужен хотя бы с одним узлом, снимать признак полностью нельзя — сначала решите вопрос с миграцией обмена.
Способ 1. Сброс главного узла штатными средствами
Это основной и рекомендуемый метод, если база — подчиненный узел. Выполняется в режиме предприятия под пользователем с полными правами через внешнюю обработку, консоль кода или команду «Выполнить произвольное выражение»:
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);После выполнения база перестает считаться подчиненным узлом: снимается блокировка на загрузку данных и изменение конфигурации. Сами планы обмена и узлы при этом не удаляются — их можно почистить отдельно, если обмен больше не нужен.
Если база — главный узел (ГлавныйУзел() возвращает Неопределено, но обмены настроены), достаточно удалить или пометить на удаление все узлы планов обмена, кроме предопределенного «Этот узел». После этого база фактически становится автономной.
- 1Сделайте выгрузку .dt или копию файла базы
- 2Откройте базу в режиме предприятия под полными правами
- 3Выполните код ПланыОбмена.УстановитьГлавныйУзел(Неопределено)
- 4Проверьте, что ПланыОбмена.ГлавныйУзел() возвращает Неопределено
- 5Удалите лишние узлы планов обмена и очистите регистрацию изменений
Способ 2. Внешние обработки для снятия признака
Если нет возможности запустить консоль кода (тонкий клиент, ограниченные права), используют готовые внешние обработки (.epf) сброса главного узла — их легко найти на профильных ресурсах по запросу «сброс главного узла РИБ». Обработка открывается через Файл → Открыть и выполняет тот же вызов УстановитьГлавныйУзел(Неопределено), иногда с дополнительной очисткой регистрации изменений.
Проверяйте обработку перед запуском: откройте ее модуль в конфигураторе и убедитесь, что она делает именно сброс узла, а не удаление данных. Сторонние обработки из непроверенных источников могут содержать произвольный код с полными правами.
Способ 3. Правка файловой базы через tool_1cd
Крайний вариант — когда база не открывается ни в предприятии, ни в конфигураторе, либо пароль администратора утерян. Для файловых баз существует утилита tool_1cd, которая читает формат 1Cv8.1CD напрямую и позволяет редактировать служебные таблицы.
Признак главного узла хранится в служебных таблицах (исторически — в таблицах вида _SystemSettings/DBSchema и связанных записях планов обмена). Методика: экспортировать нужную таблицу в XML, найти и удалить записи, ссылающиеся на главный узел, затем импортировать таблицу обратно. Точный состав таблиц зависит от версии платформы, поэтому работайте по актуальной документации к утилите.
Этот способ не поддерживается вендором и при ошибке может повредить файл базы. Работайте только с копией файла, никогда — с оригиналом. Для клиент-серверных баз прямая правка таблиц СУБД еще опаснее и на практике почти не оправдана.
Очистка регистрации изменений после снятия признака
Даже после сброса главного узла в базе остаются таблицы регистрации изменений по каждому узлу обмена. В долго работавших РИБ они могут занимать значительную часть объема базы и замедлять запись объектов, ведь платформа продолжает регистрировать изменения для существующих узлов.
Очистка выполняется программно: для каждого узла вызывается ПланыОбмена.УдалитьРегистрациюИзменений(Узел) либо узел удаляется целиком — регистрация при этом очищается автоматически. После удаления узлов имеет смысл выполнить тестирование и исправление с включенной реструктуризацией и сжатием таблиц (для файловой базы), чтобы физически уменьшить файл.
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ ПланОбмена.Полный ГДЕ НЕ ЭтотУзел");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ПланыОбмена.УдалитьРегистрациюИзменений(Выборка.Ссылка);
КонецЦикла;Проверка результата и типичные ошибки
После снятия признака проверьте три вещи: ГлавныйУзел() возвращает Неопределено; база без ошибок загружается из .dt в пустую базу (именно эта операция раньше блокировалась); конфигуратор позволяет обновить конфигурацию базы без сообщений о подчиненном узле.
Как проверить результат
Возвращает Неопределено
Возвращает ссылку на узел — признак не снят
Загрузка проходит без ошибок
Ошибка «из распределенной базы нельзя загрузить»
Остался только предопределенный узел «Этот узел»
Активные узлы с зарегистрированными изменениями
Частые вопросы
Чем отличается снятие признака УРБД от отключения обмена в РИБ?
УРБД — старый механизм распределенных баз платформы 7.7 и ранних версий 8.x; в современных конфигурациях используется РИБ на планах обмена. В обоих случаях снятие признака сводится к отвязке базы от главного узла, но в РИБ дополнительно нужно чистить узлы и регистрацию изменений.
Можно ли снять признак без конфигуратора и без полных прав?
Нет, штатные способы требуют полных прав в режиме предприятия. Если прав нет, обратитесь к администратору базы. Обход через правку файла 1Cv8.1CD возможен, но это аварийный метод с риском повреждения данных.
Что делать с ошибкой «Из распределенной базы нельзя загрузить данные»?
Она означает, что база, из которой сделана выгрузка, является подчиненным узлом. Снимите признак в исходной базе через УстановитьГлавныйУзел(Неопределено), затем повторите выгрузку — после этого .dt загрузится в обычную базу.
Потеряются ли данные при сбросе главного узла?
Сами прикладные данные (документы, справочники) не удаляются. Теряется только служебная информация об обмене: связь с главным узлом и, при очистке, зарегистрированные к отправке изменения.
Нужно ли снимать признак, если база просто переезжает на другой сервер?
Нет. Перенос файловой базы копированием или развертывание .dt на новом сервере сохраняет структуру обмена, и РИБ продолжит работать. Снимать признак нужно только при отказе от обмена или превращении копии в самостоятельную базу.
Как сделать из подчиненного узла самостоятельную рабочую базу?
Разверните копию узла, сбросьте главный узел через УстановитьГлавныйУзел(Неопределено), удалите лишние узлы планов обмена, очистите регистрацию изменений и выполните тестирование и исправление. После этого база работает автономно.
Что важно запомнить
Снятие признака распределенной базы сводится к сбросу главного узла командой ПланыОбмена.УстановитьГлавныйУзел(Неопределено) с последующей очисткой узлов и регистрации изменений. Всегда начинайте с резервной копии, а прямую правку файла базы оставляйте как последний вариант на случай, когда штатные средства недоступны.