Как исправить ошибку «Ошибка загрузки приоритетных данных из сообщения обмена» при внедрении РИБ на БСП?

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

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

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

Разберем причину возникновения ошибки

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

Рассмотрим фрагмент кода, на котором обычно происходит сбой:


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

    Если ПолучитьФункциональнуюОпцию("ИспользоватьСинхронизациюДанных") Тогда
        УзелИнформационнойБазы = ГлавныйУзел;
        Если УзелИнформационнойБазы <> Неопределено Тогда
            ВидТранспорта = РегистрыСведений.НастройкиТранспортаОбмена.ВидТранспортаСообщенийОбменаПоУмолчанию(УзелИнформационнойБазы);
            // Загрузка только параметров работы программы
            ПараметрыОбмена.ВидТранспортаСообщенийОбмена = ВидТранспорта;
            ПараметрыОбмена.ВыполнятьЗагрузку = Истина;
            ПараметрыОбмена.ВыполнятьВыгрузку = Ложь;
            ПараметрыОбмена.ТолькоПараметры = Истина;
            ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(УзелИнформационнойБазы, ПараметрыОбмена, Отказ);
        КонецЕсли;
    КонецЕсли;
Исключение
    // Запись в Журнал регистрации и вызов исключения
    ЗаписьЖурналаРегистрации(НСтр("ru = 'Обмен данными.Загрузка приоритетных данных'"), УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
    ВызватьИсключение НСтр("ru = 'Ошибка загрузки приоритетных данных из сообщения обмена.'");
КонецПопытки;

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

Анализируем состав плана обмена

Основная ошибка разработчиков заключается в том, что в состав плана обмена включают только бизнес-данные (документы, справочники номенклатуры, контрагентов), забывая о служебных объектах БСП. Выясним, какие именно объекты должны быть обязательно включены в состав плана обмена для корректной работы РИБ.

1. Справочник «Идентификаторы объектов метаданных»
Это, пожалуй, самый важный объект. БСП использует его для сопоставления типов данных между базами. Если этого справочника нет в обмене, система в подчиненном узле не сможет понять, к какому объекту метаданных относится та или иная запись в XML-файле обмена. В результате — ошибка загрузки.

2. Справочник «Группы пользователей» и «Пользователи»
Часто настройки прав и доступа завязаны на эти справочники. Без их миграции загрузка данных, имеющих ограничения по доступу, может завершиться неудачей.

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

4. Регистр сведений «Параметры работы программы»
В нем хранятся технические настройки инициализации. Именно этот регистр часто подразумевается под «приоритетными данными» или «параметрами работы».

5. Набор констант для синхронизации
Обратим внимание на список констант, которые необходимо включить в состав (особенно для современных ERP-систем и КА):

  1. ДетализироватьОбновлениеИБВЖурналеРегистрации
  2. ИспользоватьСинхронизациюДанных
  3. СведенияОбОбновленииИБ
  4. ПараметрыАдминистрированияИБ

Связь состава плана обмена и правил регистрации

Рассмотрим важный нюанс: наличие объекта в составе плана обмена — это лишь половина дела. Выясним, как работают Правила регистрации объектов (ПРО).

Даже если вы установили флажок у справочника ИдентификаторыОбъектовМетаданных в конфигураторе (в составе плана обмена), БСП может не выгрузить его данные, если это не прописано в правилах регистрации (XML-файл, который загружается в режиме 1С:Предприятие).

Существуют два правила, которые нужно запомнить:

  1. Если объект есть в составе плана обмена, но отсутствует в правилах регистрации — при записи объекта может возникать ошибка «Ошибка в правилах регистрации», либо объект просто никогда не попадет в файл обмена автоматически.
  2. Если вы используете РИБ «с фильтрами» (например, по организации), технические справочники (идентификаторы, версии подсистем) должны иметь режим выгрузки «Выгружать всегда», чтобы они гарантированно присутствовали в каждом узле.

Проанализируем ситуацию: если вы не указываете объект в правилах регистрации, но он есть в составе, он может мигрировать только «по ссылке» (если на него ссылается другой объект, например, документ). Но для системных справочников БСП этого недостаточно — они должны быть выгружены целиком при первой же синхронизации.

Пошаговая инструкция по исправлению ошибки

Для устранения проблемы «Ошибка загрузки приоритетных данных» выполним следующие действия:

  1. Откроем Конфигуратор и найдем наш план обмена.
  2. Перейдем на вкладку «Состав». Проверим наличие следующих объектов (обязательно для БСП 2.3 и выше):
    • Справочник ИдентификаторыОбъектовМетаданных
    • Справочник Пользователи
    • Справочник ГруппыПользователей
    • Регистр сведений ВерсииПодсистем
    • Регистр сведений ПараметрыРаботыПрограммы
    • Регистр сведений ИзменениеОбщихДанныхУзлов
  3. Если какого-то из этих объектов нет в составе — добавим их. При добавлении обратите внимание на свойство «Авторегистрация». Для системных справочников обычно устанавливают «Разрешить», если планируется использовать типовой механизм ПРО.
  4. Обновим конфигурацию базы данных.
  5. Запустим базу в режиме 1С:Предприятие и перейдем в раздел настроек синхронизации данных.
  6. Загрузим обновленные Правила регистрации объектов, в которых прописаны условия для новых включенных объектов.
  7. В главном узле выполним регистрацию всех записей справочника ИдентификаторыОбъектовМетаданных и ВерсииПодсистем для узла-приемника. Это можно сделать через обработку «Регистрация изменений для обмена данными».
  8. Сформируем новое сообщение обмена или создадим начальный образ заново.

Важность Журнала регистрации при отладке

Если после выполнения всех инструкций ошибка сохраняется, проанализируем Журнал регистрации в базе-приемнике. Перед тем как выдать общее сообщение об ошибке, система записывает туда подробный технический лог.

Посмотрим на типичные записи, которые помогут найти причину:

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

← На главную