Как исправить ошибки при восстановлении подчиненного узла РИБ в 1С:Бухгалтерия 3.0?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия
← На главную

При обновлении типовых конфигураций 1С (в частности, 1С:Бухгалтерия предприятия 3.0 КОРП) в распределенных информационных базах (РИБ) иногда возникает сбой передачи обновленной конфигурации в периферийный узел. Распространенным способом решения этой проблемы является временное отключение главного узла, обновление конфигурации базы-приемника вручную из файла .cf и последующая привязка главного узла обратно.

Однако после выполнения этих действий разработчики и администраторы часто сталкиваются со следующими проблемами:

  1. Ошибка при проведении документов: Для состава плана обмена Удалить... не указана регистрация объекта...
  2. Циклическое требование программы завершить синхронизацию конфигурации с сообщением Не удалось провести синхронизацию.

Рассмотрим подробно причины возникновения данных ошибок и разберем по шагам варианты их исправления.

Причина 1. Выбор устаревшего (депрекейт) плана обмена

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

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


{ОбщийМодуль.ОбменДаннымиСобытия.Модуль(102)}: Для состава плана обмена УдалитьПоОрганизации не указана регистрация объекта Документ.СписаниеСРасчетногоСчета
ВызватьИсключение СтрокаСообщения;

Решение: Проанализируем состав планов обмена в конфигурации. При назначении главного узла необходимо выбирать узел актуального (действующего) плана обмена, а не устаревшего с префиксом Удалить.

Код отвязки и корректного восстановления главного узла выглядит следующим образом:


// 1. Отвязать главный узел в подчиненной базе:
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);

// 2. После загрузки актуального CF в режиме Конфигуратора,
// устанавливаем в качестве главного узла элемент актуального плана обмена:
ГлавныйУзел = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоКоду("ЦБ"); // Укажите актуальный план обмена и код узла
ПланыОбмена.УстановитьГлавныйУзел(ГлавныйУзел);

Причина 2. Зависшая регистрация изменений конфигурации в Центральном узле

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

Разберем алгоритм решения этой проблемы по шагам:

  1. Формирование сообщения обмена в центральном узле: Сформируйте новый файл выгрузки из центральной базы.
  2. Загрузка сообщения в подчиненном узле: Выполните сеанс обмена в подчиненной базе. Поскольку конфигурация в периферийной базе уже совпадает с центральной (загружена из .cf), процесс не изменит структуры данных, но сформирует корректное ответное сообщение обмена.
  3. Прием ответа в центральном узле: Загрузите ответный файл в центральную базу. Получив подтверждение, центральный узел автоматически снимет регистрацию изменений конфигурации для данного подчиненного узла.

Альтернативное решение: Снятие регистрации изменений конфигурации вручную

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


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

// Снимаем регистрацию изменений конфигурации для узла
ПланыОбмена.УдалитьРегистрациюИзменений(УзелПериферии, Неопределено);

Проверка служебных констант БСП

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

Выполнение этих шагов позволяет полностью восстановить корректную работу РИБ без потери данных и повторного пересоздания начального образа подчиненного узла.

← На главную