Как настроить автоматический обмен данными в УТ 11 по правилам Конвертации данных 2.1

Программист 1С:Управление торговлей Управленческий учет IT и автоматизация бизнеса
← На главную

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

Понимаем разницу в архитектуре обмена

Прежде всего, проанализируем ситуацию. В «Управлении торговлей 11» существует два основных способа синхронизации:

  1. Синхронизация через универсальный формат: использует технологию XDTO и не требует внешних файлов правил (они «зашиты» в код и макеты конфигурации).
  2. Обмен по правилам конвертации: классический метод КД 2.1, где используются файлы ПравилаКонвертации.xml и ПравилаРегистрации.xml.

Если вы уже настроили правила в Конвертации данных 2.1, вам нужен второй вариант. Основная сложность заключается в том, что в новых релизах БСП создание обмена по правилам КД 2.1 через стандартный помощник может быть скрыто или ограничено. Нам потребуется задействовать механизмы планов обмена и специальных регистров сведений.

Настройка правил регистрации данных — ключ к автоматизации

Для того чтобы обмен работал автоматически (по расписанию), система должна знать, какие именно объекты нужно выгружать. При ручном обмене вы выбираете данные фильтрами, а в автоматическом — за это отвечают Правила регистрации данных (ПРД). Рассмотрим, как это работает:

План обмена фиксирует изменения объектов. Как только вы записываете документ или элемент справочника, в ТаблицуРегистрацииИзменений этого плана обмена записывается ссылка. Без ПРД система либо не зарегистрирует ничего, либо будет регистрировать всё подряд, что приведет к огромным пакетам выгрузки. Выясним, как создать файл правил регистрации в КД 2.1:

  1. В конфигурации «Конвертация данных 2.1» создайте новый объект «Правила регистрации данных».
  2. Укажите объекты, которые должны участвовать в обмене (в вашем случае — товары и документы их движений).
  3. Настройте фильтры (например, только по определенным складам или организациям).
  4. Выгрузите результат в XML-файл.

Загрузка правил в регистр «Правила обмена данными»

Проанализируем, куда именно в УТ 11 нужно поместить созданные файлы. В конфигурациях на базе БСП существует специальный регистр сведений ПравилаОбменаДанными. Именно он связывает конкретный План обмена с вашими XML-файлами. Рассмотрим алгоритм действий:

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

В этом регистре вы увидите записи для всех настроенных синхронизаций. Чтобы загрузить свои правила:

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

Использование программного кода для регистрации изменений

Иногда типовых правил регистрации недостаточно. Посмотрим на пример кода, который можно использовать в модуле объекта или в обработчике правил, чтобы принудительно зарегистрировать объект на узле обмена:


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

// Если нужно зарегистрировать набор записей регистра
НаборЗаписей = РегистрыНакопления.ТоварыНаСкладах.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ДокументСсылка);
ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, НаборЗаписей);

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

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

После того как правила загружены и регистрация настроена, нам нужно заставить систему обмениваться данными без участия пользователя. Разберем, как настроить расписание:

  1. Перейдите в раздел «Администрирование» — «Синхронизация данных».
  2. Найдите вашу настройку в списке «Настройки синхронизации данных».
  3. Откройте «Сценарии синхронизации».
  4. Создайте новый сценарий, укажите в нем ваш план обмена, выберите вид транспорта (например, локальный каталог или FTP) и настройте расписание (например, каждые 10 минут).

Отладка правил конвертации внутри БСП

Часто при автоматическом обмене возникают ошибки, которые не видны при ручной выгрузке. Проанализируем ситуацию: как понять, почему обмен «падает»? В БСП предусмотрен механизм отладки. В регистре Правила обмена данными можно установить флаг «Режим отладки выгрузки». Это позволит системе создать внешний файл модуля, который вы сможете открыть в Конфигураторе и поставить точки останова в обработчиках ПередВыгрузкой или ПриВыгрузке.

Важно помнить, что УТ 11.1 и УТ 11.3 сильно различаются по структуре метаданных. При настройке в КД 2.1 обязательно используйте актуальные описания (.xml файлы метаданных), выгруженные из обеих баз с помощью обработки MD83Exp.epf. Если вы попытаетесь обратиться к реквизиту, который был переименован или удален в версии 11.3, обмен прервется с ошибкой XML-парсера.

Альтернативный вариант: Использование внешней обработки

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


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

// Вызов стандартной обработки
ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
ОбработкаОбмена.ИмяФайлаПравилОбмена = ПараметрыОбмена.ИмяФайлаПравил;
ОбработкаОбмена.ИмяФайлаСообщенияОбмена = ПараметрыОбмена.ИмяФайлаДанных;
ОбработкаОбмена.ЗагрузитьПравилаОбмена();
ОбработкаОбмена.ВыполнитьВыгрузку();

Этот способ проще в реализации «на скорую руку», но он менее надежен, так как не использует механизм квитирования (подтверждения получения данных), который есть в полноценных планах обмена БСП. Поэтому для постоянного обмена между УТ 11.1 и 11.3 мы рекомендуем именно полноценную интеграцию через Планы обмена и регистр Правила обмена данными.

← На главную