Как настроить автоматическую синхронизацию данных между старой УТ 11.0 и новой УТ 11.5 по правилам КД 2.0?

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

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

В этой статье мы разберем, как организовать регулярный автоматический обмен данными через файлы, используя привычные правила КД 2.0, и при этом вписать это в стандартные или околостандартные механизмы систем, чтобы избежать написания громоздкого кода с нуля.

Проблема выбора механизма: КД 2.0 против EnterpriseData

Рассмотрим ситуацию подробнее. В УТ 11.5 стандартная синхронизация через «Другую программу» по умолчанию ожидает использование формата EnterpriseData. Однако в УТ 11.0 версии 11.0.x механизмы БСП настолько старые, что внедрение туда поддержки EnterpriseData потребует колоссальных трудозатрат и масштабного обновления конфигурации.

Проанализируем доступные варианты. Если нам нужно перекидывать документы (например, превращать Заявку в Реализацию), самый быстрый путь — это создание правил в Конвертации данных 2.0. Но как заставить их работать автоматически по расписанию? Выясним, какие шаги для этого необходимы.

Шаг 1. Подготовка метаданных и создание правил

Прежде всего, нам понадобятся актуальные структуры обеих баз. Для этого используем обработку MD82Exp.epf (выгрузка описания конфигурации), которая идет в комплекте с КД 2.0. Выгружаем структуры из источника (УТ 11.0) и приемника (УТ 11.5).

Загружаем структуры в базу Конвертации данных и создаем правила обмена (ПКО, ПВД). На этом этапе важно помнить: в УТ 11.5 структура многих справочников (например, Партнеры и Контрагенты) значительно отличается от УТ 11.0. Поэтому в правилах необходимо тщательно прописать алгоритмы поиска и синхронизации по уникальным идентификаторам или кодам.

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

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

  1. В конфигураторе УТ 11.0 создадим новый ПланОбмена (например, УдаленныйОбменСУТ115).
  2. В состав плана обмена включим те типы документов, которые планируем передавать.
  3. В конфигураторе УТ 11.5 создадим симметричный план обмена (это необходимо для корректной работы механизмов очистки номеров сообщений).
  4. Создадим узлы плана обмена в обеих базах: ЭтотУзел (текущая база) и УзелПриемник/Источник.

Шаг 3. Подключение правил в УТ 11.5 (Приемник)

Многие разработчики теряются, не находя кнопки «Загрузить правила» в интерфейсе синхронизации УТ 11.5. Разберем, где они прячутся. Современная БСП продолжает поддерживать старый формат обмена через регистр сведений ПравилаДляОбменаДанными.

Для активации обмена по правилам КД 2.0 в новой базе нам нужно:

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

Важный момент: В УТ 11.5 при загрузке данных может сработать жесткий контроль заполнения реквизитов или бизнес-логика модулей объектов. Чтобы этого избежать, в правилах конвертации объектов (ПКО) рекомендуется использовать обработчик ПриЗагрузке, устанавливая флаг ОбменДанными.Загрузка = Истина;.

Шаг 4. Автоматизация выгрузки и загрузки

Теперь выясним, как запустить этот процесс без участия пользователя. В старой УТ 11.0 мы не сможем полноценно вписаться в современную панель мониторинга синхронизации, поэтому пойдем по пути «малой крови».

Рассмотрим использование типовой обработки УниверсальныйОбменДаннымиВФорматеXML. Она уже встроена в большинство конфигураций. Нам нужно создать регламентное задание, которое будет программно вызывать эту обработку. Пример логики вызова может выглядеть так:


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

На стороне УТ 11.5 настраивается аналогичное регламентное задание на загрузку. Программа будет проверять наличие файла в папке и, если он появился, инициализировать загрузку через ту же универсальную обработку. Если нужен готовый механизм вместо собственного кода регламентных заданий, «Автообмен» запускает обмены по расписанию по готовым XML-правилам КД 2, использует планы обмена для регистрации изменений и поддерживает запуск через COM или веб-сервис.

Альтернативный вариант: Использование COM-соединения

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

В этом случае в УТ 11.5 пишется внешняя обработка, которая:

  1. Устанавливает соединение с базой УТ 11.0 через V83.COMConnector.
  2. Выбирает документы по определенному фильтру (например, дата или признак в доп. реквизите).
  3. Обходит выборку и программно создает соответствующие объекты в текущей базе.

Этот метод «быстрее» в реализации для разовых или простых задач, но сложнее в поддержке, если структура метаданных начнет часто меняться.

Резюме для реализации «малой кровью»

Подведем итог нашего исследования. Чтобы получить результат минимальными усилиями:

  1. Используйте КД 2.0 для создания правил, так как это дает максимальную гибкость в преобразовании данных.
  2. Создайте простейшие Планы обмена в обеих базах только для фиксации изменений.
  3. Вместо сложной интеграции в дебри БСП, используйте программный вызов УниверсальныйОбменДаннымиВФорматеXML через регламентные задания.
  4. Для хранения правил в УТ 11.5 используйте регистр ПравилаДляОбменаДанными, что позволит системе «узнать» ваши правила.

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

← На главную