Как восстановить синхронизацию РИБ в 1С:Розница 2.2 при сбое обновления конфигурации?

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

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

Разберем подробный регламент действий, который позволяет восстановить работоспособность периферийного узла, корректно обновить его структуру метаданных вручную через файл .cf и возобновить штатный обмен данными.

Причины сбоя синхронизации при обновлении

Проанализируем основные факторы, приводящие к блокировке обмена в РИБ:

  1. Зависание или ошибка передачи структуры конфигурации. Центральный узел регистрирует изменение метаданных и отправляет образ конфигурации в сообщении обмена. Если файл обмена велик или в процессе чтения возник сбой, периферийный узел не может применить обновление штатным механизмом.
  2. Незавершенные процедуры обновления БСП. После обновления метаданных должны отработать фоновые и отложенные обработчики обновления информационной базы. Если запустить обмен до их завершения, возникает конфликт версий подсистем.
  3. Сбой счетчиков номеров сообщений. Если периферийную базу восстанавливали из резервной копии, номера принятых и отправленных пакетов перестают совпадать, из-за чего обе базы отвергают входящие файлы.
  4. Повторная регистрация конфигурации в центре. Если периферийный узел уже обновлен вручную, а в центральной базе осталась висеть регистрация изменений конфигурации, центр при каждом обмене будет пытаться перезаписать метаданные периферии.

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

Если штатное обновление через файл обмена падает с ошибками, наиболее надежным решением является временное отключение признака подчиненного узла РИБ, прямое обновление конфигурации из файла и повторная привязка к центральному узлу.

Рассмотрим по шагам выполнение этой процедуры:

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

Устранение сопутствующих проблем

Рассмотрим типовые ошибки, которые могут возникнуть в процессе настройки и первого запуска синхронизации:

  1. Ошибка несоответствия префикса узла. Если программа выдает предупреждение о несовпадении префиксов, проверяем соответствие реквизита Префикс у предопределенного (текущего) узла плана обмена в периферии значению константы ПрефиксУзлаРаспределеннойИнформационнойБазы (или ПрефиксИнформационнойБазы). Коды узлов и префиксы в обеих базах должны строго совпадать.
  2. Нарушение нумерации сообщений. Если пакеты отклоняются из-за неверного номера сообщения, открываем узлы плана обмена в обеих базах и вручную выравниваем счетчики: в свойствах узла устанавливаем НомерОтправленного = 0 и НомерПринятого = 0. После этого выполняем полную выгрузку данных из центра в периферию.
  3. Кэш конфигурации. Если после обновления метаданных справочников возникают нетипичные ошибки обращения к полям, необходимо закрыть сеансы и удалить локальные каталоги кэша пользователя в AppData\Local\1C и AppData\Roaming\1C.

Выполнение описанного алгоритма гарантирует восстановление структуры метаданных и сохранение целостности идентификаторов объектов без необходимости полного пересоздания начального образа узла.

← На главную