Как настроить нетиповой обмен данными по правилам КД 2.1 в 1С 8.3 и исправить ошибку формата правил?

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

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

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

Причины возникновения ошибки «Ошибка формата правил»

Выясним, почему штатный механизм синхронизации данных подсистемы БСП (Библиотека Стандартных Подсистем) не принимает обычные XML-файлы из КД 2.1:

  1. Переход на формат EnterpriseData (КД 3.0): Современные типовые конфигурации 1С на платформе 8.3 работают по технологии EnterpriseData (Конвертация данных 3.0). В этой архитектуре правила обмена хранятся непосредственно в модулях конфигурации или передаются в виде обработок, а не подгружаются в виде одиночных внешних файлов XML.
  2. Требования к составу комплекта правил: Подсистема синхронизации БСП при работе с файловыми правилами ожидает специальный ZIP-архив определенной структуры. В нем должны присутствовать правила выгрузки источника (ExchangeRules.xml), правила регистрации (RegistrationRules.xml) и правила приемника (CorrespondentExchangeRules.xml). Простой XML-файл, выгруженный из КД 2.1, не соответствует данному формату.

Использование обработки «Универсальный обмен данными в формате XML» с узлами обмена

Если требуется использовать правила из КД 2.1 без переработки всего обмена под формат КД 3.0, необходимо задействовать обработку УниверсальныйОбменДаннымиXML в связке с планом обмена для регистрации изменений.

Рассмотрим порядок настройки отбора и выгрузки по зарегистрированным изменениям:

  1. Проверка состава плана обмена в Конфигураторе: Все доработанные или нетиповые объекты (справочники, документы, реквизиты), данные которых планируется передавать, должны быть внесены в состав используемого плана обмена. В противном случае платформа не будет фиксировать изменения этих объектов.
  2. Создание узла обмена: Регистрация изменений в 1С ведется строго для корреспондентов (узлов приемников). В режиме «1С:Предприятие» откройте соответствующий план обмена и создайте новый элемент (узел) для целевой базы. Нельзя выбирать предопределенный узел ЭтотУзел, так как для него изменения не накапливаются.
  3. Настройка выгрузки в обработке: В обработке «Универсальный обмен данными в формате XML» откройте вкладку выгрузки и выберите созданный узел обмена. При использовании кнопки установки узла регистрируются или выбираются только изменения, принадлежащие данному конкретному корреспонденту.
  4. Контроль зарегистрированных изменений: Проверить и скорректировать список объектов, находящихся на очереди для выгрузки, можно с помощью стандартной обработки РегистрацияИзмененийДляОбменаДанными.

Автоматизация регулярного обмена через регламентное задание

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

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


ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
ОбработкаОбмена.РежимОбмена = "Выгрузка";
ОбработкаОбмена.ИмяФайлаПравилОбмена = "C:\Exchange\Rules.xml";
ОбработкаОбмена.ИмяФайлаОбмена = "C:\Exchange\Data.xml";

// Указываем узел-приемник, для которого зарегистрированы изменения
ОбработкаОбмена.УзелОбмена = ПланыОбмена.МойПланОбмена.НайтиПоКоду("БП");

// Загружаем правила и запускаем выгрузку
ОбработкаОбмена.ЗагрузитьПравилаОбмена();
ОбработкаОбмена.ВыполнитьВыгрузку();

На стороне базы-приемника (например, «Бухгалтерия предприятия 3.0») программный код загрузки данных из сформированного XML-файла выглядит следующим образом:


ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
ОбработкаОбмена.РежимОбмена = "Загрузка";
ОбработкаОбмена.ИмяФайлаОбмена = "C:\Exchange\Data.xml";

// Задаем флаги безопасной записи данных
ОбработкаОбмена.ЗагружатьДанныеВРежимеОбмена = Истина;
ОбработкаОбмена.ЗаписыватьВИнформационнуюБазуТолькоИзмененныеОбъекты = Истина;

ОбработкаОбмена.ВыполнитьЗагрузку();

Формирование ZIP-архива правил для БСП

Рассмотрим альтернативный вариант, позволяющий подгрузить правила КД 2.1 в штатную синхронизацию БСП без написания программного кода:

  1. Выгрузите правила конвертации из КД 2.1 и сохраните файл под именем ExchangeRules.xml.
  2. Выгрузите правила регистрации объектов и сохраните файл под именем RegistrationRules.xml.
  3. Упакуйте оба файла в один ZIP-архив.
  4. В мастере настройки синхронизации данных БСП укажите полученный ZIP-архив при загрузке комплекта правил обмена.

Рекомендуемый подход: Перевод обмена на КД 3.0

Если конфигурация «1С:Общепит 3.0» активно развивается и обновляется следом за типовой «Бухгалтерией предприятия 3.0», оптимальным техническим решением является перенос правил обмена на платформу Конвертация данных 3.0.

Это дает следующие преимущества:

← На главную