Как правильно обновить периферийную базу (РИБ) при значительном разрыве в версиях конфигурации?

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

Обновление распределенных информационных баз, особенно при пропуске большого количества релизов (например, переход с версии 2.2 на 2.3), часто сопровождается критическими ошибками. Одной из самых частых проблем является ошибка Ошибка загрузки приоритетных данных из сообщения обмена. Рассмотрим, почему это происходит и как безопасно выполнить обновление, не нарушив целостность структуры данных.

Почему возникают ошибки при прямом обновлении РИБ?

Когда мы обновляем периферийную базу (ПФ) «напрямую» через механизм обмена, мы сталкиваемся с тем, что структура метаданных центральной базы (ЦУ) и периферийной базы временно становится несовместимой. Механизм Планы обмена требует строгой синхронизации. Если разрыв между релизами слишком велик, правила конвертации или логика работы узлов в новой конфигурации могут полностью противоречить данным, полученным из старого сообщения обмена. Попытка «протащить» обновление через цепочку релизов таким способом зачастую приводит к неисправимым ошибкам в таблицах регистрации изменений.

Методика безопасного обновления: превращение ПФ в центральную базу

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

  1. Выполнение обмена данными. Перед началом работ убедитесь, что обе стороны (ЦУ и ПФ) обменялись всеми накопившимися данными.
  2. Отвязка базы. Используйте параметр запуска /ResetMasterNode для запуска Конфигуратора периферийной базы. Это действие отключает признак подчиненного узла.
  3. Обновление конфигурации. Теперь, когда база больше не является подчиненной, вы можете беспрепятственно обновить её конфигурацию до нужного релиза, используя актуальный файл .cf или .cfu.
  4. Запуск в режиме «Предприятие». После обновления при запуске программа может предложить восстановить связь с главным узлом. Если вы планируете продолжать работу в РИБ, вы можете воспользоваться этим предложением, либо настроить привязку программно.

Программное восстановление статуса периферийной базы

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

Рассмотрим пример кода, который необходимо выполнить в Консоли кода или через внешнюю обработку в обновленной базе:


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

// Устанавливаем текущий узел как подчиненный главному
ПланыОбмена.УстановитьГлавныйУзел(УзелСсылка);

Важно помнить: если при выполнении этого кода в качестве параметра передать Неопределено, база будет окончательно отвязана от обмена и станет самостоятельной (автономной).

На что обратить внимание при массовом обновлении

Если вы обслуживаете большое количество баз (например, 90 ПФ), важно соблюдать строгую последовательность:

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

← На главную