Работа с Распределенными Информационными Базами (РИБ) требует строгого соблюдения регламентов, особенно когда речь идет об изменении структуры метаданных. Типичная ситуация: в центральной базе (ЦБ) устанавливается модуль обмена с сайтом (например, 1С-Битрикс), который добавляет множество новых объектов. После этого периферийные базы (ПБ) перестают принимать пакеты обновления, возникают ошибки синхронизации, а стандартные механизмы обновления «зацикливаются». Разберем подробно, как выйти из этой ситуации, восстановить обмен или хотя бы корректно собрать данные из узлов для последующего перехода на веб-клиент.
Когда мы устанавливаем модуль Битрикс, в конфигурацию вносятся масштабные изменения: добавляются новые справочники, константы, регистры сведений и, что критично, новые планы обмена. Система РИБ при получении сообщения из ЦБ видит изменение конфигурации и требует обновления. Однако из-за сложности структуры (предопределенные данные, новые реквизиты в существующих документах, таких как ЗаказКлиента или РеализацияТоваровУслуг) автоматическое обновление в ПБ может завершиться с ошибкой или сообщением об отключении обновления предопределенных данных.
Проанализируем основные причины сбоев:
ОбновлениеПредопределенныхДанных установлено неверно, система не сможет создать эти объекты, что приведет к ошибкам в коде.Если штатная синхронизация не может применить обновление конфигурации, мы применим метод «ручного» обновления. Для этого нам потребуется временно разорвать связь с главным узлом, обновить конфигурацию напрямую из файла и восстановить связь. Рассмотрим этот процесс по шагам.
Шаг 1. Подготовка файла конфигурации. В центральной базе переходим в «Конфигурация» — «Сохранить конфигурацию в файл...» и сохраняем 1cv8.cf.
Шаг 2. Отвязка периферийной базы от главного узла. В периферийной базе необходимо снять признак того, что у базы есть главный узел. Это можно сделать, запустив базу с параметром /ResetMasterNode, либо программно, используя следующий код в обработке:
// Программный разрыв связи с главным узлом
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
Шаг 3. Загрузка конфигурации. Теперь, когда база стала автономной, открываем конфигуратор ПБ. Переходим в меню «Конфигурация» — «Загрузить конфигурацию из файла...» и выбираем файл 1cv8.cf, полученный из центральной базы. После этого нажимаем F7 (Обновить конфигурацию базы данных).
Шаг 4. Восстановление связи. После успешного обновления структуры базы данных нам нужно вернуть базу в состав РИБ. Выясним ссылку на главный узел (обычно это узел с кодом «ЦБ» или «001») и выполним код:
// Восстановление связи с главным узлом
СсылкаНаУзел = ПланыОбмена.НайтиПоКоду("КодВашейЦентральнойБазы");
Если Не СсылкаНаУзел.Пустая() Тогда
ПланыОбмена.УстановитьГлавныйУзел(СсылкаНаУзел);
КонецЕсли;
Если при обновлении вы видите сообщения о том, что обновление предопределенных данных для справочников Битрикса отключено, это может заблокировать работу модуля. Рассмотрим, как включить автоматическое обновление этих данных.
Выясним причину: в платформе 8.3 для каждого узла есть настройка режима обновления предопределенных элементов. Нам нужно установить её в значение Авто. Выполним следующий код в периферийной базе:
// Включение обновления предопределенных данных для главного узла
Узел = ПланыОбмена.УстановитьГлавныйУзел(ПланыОбмена.ГлавныйУзел());
ПланыОбмена.УстановитьОбновлениеПредопределенныхДанных(ПланыОбмена.ГлавныйУзел(), РежимОбновленияПредопределенныхДанных.Авто);
После выполнения этого кода попробуем снова запустить процесс синхронизации или повторить реструктуризацию в конфигураторе.
Часто проблема кроется в том, что в очереди обмена накопилось слишком много «мусора» или устаревших данных, которые не могут быть корректно обработаны новой конфигурацией. Разберем, как очистить состав отправляемых данных.
Важно: Это действие удалит информацию о том, какие данные должны были уйти в ПБ. Используйте это, только если вы планируете обновить ПБ вручную через .cf файл. Это позволит «обнулить» состояние обмена и начать синхронизацию с чистого листа.
Если ваша конечная задача — просто собрать данные из периферийных узлов и навсегда отключить РИБ (перейти на веб-клиент), то восстанавливать саму синхронизацию не обязательно. Рассмотрим использование обработки «Универсальный обмен данными в формате XML».
Проанализируем алгоритм действий:
.cf (как описано в Решении 1, шаги 1–3). Это необходимо, чтобы структура таблиц в ЦБ и ПБ была идентичной.Этот метод гарантирует перенос данных без участия механизмов ПланыОбмена, которые в данный момент работают нестабильно.
Чтобы избежать подобных ситуаций при масштабных изменениях (например, установке обновлений от 1С или сторонних модулей), рассмотрим правильный регламент:
Состав отправляемых данных пусто во всех узлах..dt не только центральной базы, но и каждой периферийной перед запуском синхронизации после обновления конфигурации.Следуя этим инструкциям, мы сможем либо восстановить работоспособность распределенной системы, либо безопасно извлечь из неё накопленные данные для перехода на более современную архитектуру работы через веб-клиент.