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

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

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

Причина блокировки приема сообщений обмена

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

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

Основные факторы, приводящие к остановке обмена:

  1. Необходимость реструктуризации базы данных. Новые метаданные требуют монопольного обновления конфигурации базы данных в подчиненном узле через «Конфигуратор» или в пакетном режиме.
  2. Активные сеансы пользователей. Если в подчиненной базе работают пользователи или запущены фоновые задания, автоматическое применение изменений конфигурации блокируется.
  3. Ошибки прав доступа. Если была добавлена новая роль или изменены существующие права, служебный пользователь, под которым выполняется синхронизация, может потерять доступ к обновленным объектам.

Диагностика через Журнал регистрации

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

Установим отбор по событию «Данные.Обмен данными.Загрузка» или по уровню важности «Ошибка» и «Предупреждение». В журнале будет зафиксировано системное сообщение, указывающее на необходимость обновления конфигурации (например, «Получены изменения конфигурации. Необходимо обновить конфигурацию базы данных») либо на конфликт прав доступа.

Пошаговый алгоритм штатного обновления подчиненного узла

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

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

Автоматическое обновление конфигурации базы данных через командную строку

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

1cv8.exe DESIGNER /F "C:\Bases\SubNode" /UpdateDBCfg /DisableStartupMessages

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

Восстановление синхронизации при рассинхронизации конфигураций

Если штатное применение сообщения обмена завершается критической ошибкой несоответствия версий, применим процедуру ручного выравнивания конфигураций:

  1. В главном узле через «Конфигуратор» выгрузим файл конфигурации: «Конфигурация» — «Сохранить конфигурацию в файл...» (получаем файл .cf).
  2. В подчиненном узле временно отключим признак подчиненности. Для этого во внешней обработке выполним программный код: ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
  3. В конфигураторе подчиненного узла выполним полную загрузку файла: «Конфигурация» — «Загрузить конфигурацию из файла...» и нажмем F7 для применения изменений структуры.
  4. Восстановим связь с главным узлом РИБ, выполнив программный код:
    
    Узел = ПланыОбмена.Полный.НайтиПоКоду("ЦУ");
    ПланыОбмена.УстановитьГлавныйУзел(Узел);
    
  5. Повторим штатную процедуру обмена данными между узлами.
← На главную