Как настроить обмен данными по расписанию между 1С:БП 3.0 и 1С:ERP 2 со своими правилами?

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

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

Почему в типовой настройке БП 3.0 и ERP 2 нет загрузки правил Конвертации данных 2.1?

Проанализируем архитектуру современных конфигураций 1С. И БП 3.0, и ERP 2 давно переведены на современный формат обмена — EnterpriseData (он же Конвертация данных 3.0 или КД 3.0). Основные отличия форматов заключаются в следующем:

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

Из-за этого логика КД 3.0 реализована исключительно программно и «зашита» в общих модулях конфигурации. В первую очередь за это отвечает модуль МенеджерОбменаЧерезУниверсальныйФормат. Именно поэтому в типовом плане обмена, таком как СинхронизацияДанныхЧерезУниверсальныйФормат, физически отсутствует функционал для загрузки ваших пользовательских XML-правил. Там просто нет механизма для их обработки.

Рассмотрим, какие пути решения у нас есть для автоматизации обмена.

Решение 1. Использование внешней обработки-обертки для правил КД 2.1

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

Разберем по шагам, как это реализовать:

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

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


Процедура ВыполнитьВыгрузкуПоРасписанию() Экспорт
    
    // Инициализируем типовую обработку КД 2.1
    ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
    
    // Указываем пути к файлам (желательно хранить в настройках или макете)
    ОбработкаОбмена.ИмяФайлаПравилОбмена = "C:\Exchange\Rules_BP_ERP.xml";
    ОбработкаОбмена.ИмяФайлаОбмена = "C:\Exchange\Data_" + Формат(ТекущаяДата(), "ДФ=yyyyMMdd_HHmmss") + ".xml";
    
    // Настраиваем параметры (при необходимости)
    ОбработкаОбмена.РежимОбмена = "Выгрузка";
    
    // Выполняем саму выгрузку
    ОбработкаОбмена.ВыполнитьВыгрузку();
    
    // Здесь должен быть код снятия объектов с регистрации после успешной отправки
    
КонецПроцедуры

Важный нюанс (Квитирование): При использовании КД 2.1 по расписанию крайне важно продумать механизм формирования файла-ответа от базы-приемника. В типовой синхронизации через EnterpriseData квитанции об успешной загрузке формируются и обрабатываются автоматически. При использовании самописной обертки механизм чтения ответа и очистки таблиц регистрации изменений придется реализовать самостоятельно.

Решение 2. Современный подход: доработка обмена через КД 3.0 и Расширения

Хотя разработка в Конвертации данных 3.0 на первый взгляд кажется сложнее («китайская грамота», как пишут на форумах), этот подход является наиболее правильным с точки зрения архитектуры современных решений 1С. Рассмотрим подробнее, как действовать, чтобы не снимать конфигурации с поддержки.

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

  1. Создаем расширение конфигурации в БП 3.0 (источник) и ERP 2 (приемник).
  2. Добавляем в расширение общий модуль МенеджерОбменаЧерезУниверсальныйФормат.
  3. Переопределяем необходимые процедуры. Например, для перехвата выгрузки нашего документа используем процедуру ПриОтправкеДанных, а для изменения логики загрузки на стороне ERP — ПередЗаписьюПолученныхДанных.
  4. В Конвертации данных 3.0 мы описываем только конвертацию нашего конкретного нетипового справочника или документа. Все остальные объекты конфигурации продолжат летать по типовым правилам от фирмы 1С, которые автоматически обновляются при смене релизов.

Преимущество такого подхода в том, что регламентные задания, квитирование, транспорт (FTP, сетевой каталог, COM) и монитор синхронизации уже работают «из коробки». Мы лишь точечно вклиниваемся в процесс конвертации XDTO-пакетов.

Подведение итогов

Если перед вами стоит задача реализовать обмен между БП 3.0 и ERP 2, у вас есть два основных пути. Если правила уже готовы в формате КД 2.1 и задача "горит", быстрее всего написать внешнюю обработку-обертку, подключить ее через БСП и повесить на регламентное задание РегламентныеЗадания. Однако, если вы делаете проект с нуля на долгую перспективу, настоятельно рекомендуем инвестировать время в изучение формата EnterpriseData и механизмов Конвертации данных 3.0, реализуя изменения через расширения общих модулей. Это избавит вас от множества проблем при будущих обновлениях баз.

← На главную