Почему в базу-приемник не загружаются новые объекты при синхронизации данных через планы обмена

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

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

Причина: как БСП использует правила конвертации на стороне приемника

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

Для корректного обмена используются два взаимосвязанных набора правил конвертации:

  1. Правила для текущей базы (ExchangeRules): определяют, как объекты источника преобразуются в формат сообщения обмена при выгрузке.
  2. Правила корреспондента (CorrespondentExchangeRules): используются базой-приемником для понимания того, как интерпретировать входящие узлы XML и в какие объекты приемника их загружать.

Если изменить правила только в базе-источнике, она выгрузит XML с новыми тегами (например, справочника ЦеновыеГруппы). Но база-приемник, используя свою старую версию правил из регистра, просто проигнорирует неизвестные типы данных или не сможет сопоставить реквизиты ссылающегося объекта (Номенклатура).

Пошаговое решение проблемы

Разберем по шагам, как правильно обновить правила и настроить загрузку нового объекта в базу-приемник.

  1. Подготовка файла правил корреспондента: в конфигурации «Конвертация данных» 2.x выгрузим обновленный файл правил обмена ExchangeRules.xml. Для базы-приемника этот же файл выполняет роль правил корреспондента. Переименуем его в CorrespondentExchangeRules.xml.
  2. Загрузка правил в приемнике: откроем информационную базу-приемник (в нашем случае — «Розница»), перейдем в раздел Администрирование → Синхронизация данных → Настройки синхронизации данных. Откроем параметры нужного узла и выберем пункт загрузки комплекта правил. В диалоге выбора файлов заменим только правила корреспондента новым файлом CorrespondentExchangeRules.xml. Менять состав плана обмена и подписки в базе-приемнике не требуется, если обратный перенос этих данных не планируется.
  3. Проверка правил регистрации (ПРО): если новый справочник должен переноситься целиком, независимо от использования в номенклатуре, проверим файл правил регистрации на стороне источника. Справочник должен быть включен в правила регистрации, а в свойствах состава плана обмена для него должно быть установлено свойство Авторегистрация = Разрешить.

Важные нюансы настройки ПКО и поиска объектов

Если после обновления правил корреспондента данные все еще не загружаются, проанализируем настройки самих правил конвертации объектов (ПКО) в «Конвертации данных»:

  1. Флаг создания объекта: в ПКО нового справочника обратим внимание на флаг «Не создавать новый объект в приемнике, если он не найден». Если данный флаг активен, а объект сопоставляется впервые, программа не создаст запись, а ссылка в реквизите номенклатуры запишется пустой.
  2. Поля поиска: убедимся, что для справочника заданы поля поиска (например, признак «Искать объект приемника по внутреннему идентификатору» или флажки поиска по реквизитам Код / Наименование). Без корректных полей поиска алгоритм загрузки не сможет сопоставить элемент.
  3. Перенос по ссылке: если справочник не нужно передавать целиком, а требуется переносить только значения, выбранные в товарах, его не обязательно регистрировать в плане обмена. Достаточно оставить ПКО и указать его в правиле конвертации свойства (ПКС) номенклатуры. При выгрузке товара ссылка будет автоматически извлечена и записана в пакет сообщения.

Диагностика процесса обмена

Для контроля загрузки данных используем встроенные инструменты платформы и БСП:

  1. Журнал регистрации: ошибки синтаксиса в обработчиках событий (ПриЗагрузке, ПослеЗагрузки) перехватываются подсистемой обмена и фиксируются в журнале регистрации с отбором по событию синхронизации данных.
  2. Регистр сведений «Соответствия объектов информационных баз»: проверим, создаются ли записи соответствий между идентификаторами источника и ссылками приемника. Если соответствие не установилось, объект может попасть в форму сопоставления данных.
  3. Права доступа: убедимся, что учетная запись, под которой выполняется фоновое задание синхронизации, обладает правами на чтение и запись добавленного справочника. При нехватке прав запись блокируется без прерывания загрузки всего пакета.
← На главную