Часто перед разработчиками встает задача: настроить регулярную выгрузку нескольких специфичных документов или справочников из «1С:Бухгалтерия предприятия 3.0» (БП 3) в «1С:ERP Управление предприятием 2» (ERP 2). Программист по привычке открывает «Конвертацию данных 2.1» (КД 2.1), пишет правила, сохраняет их в XML-файл. Но когда дело доходит до настройки типовой синхронизации, возникает тупик: в современных конфигурациях просто нет поля или меню для загрузки пользовательских правил обмена. Давайте разберем эту ситуацию подробно и выясним причину такого поведения системы, а также рассмотрим рабочие способы реализации обмена по расписанию.
Проанализируем архитектуру современных конфигураций 1С. И БП 3.0, и ERP 2 давно переведены на современный формат обмена — EnterpriseData (он же Конвертация данных 3.0 или КД 3.0). Основные отличия форматов заключаются в следующем:
Из-за этого логика КД 3.0 реализована исключительно программно и «зашита» в общих модулях конфигурации. В первую очередь за это отвечает модуль МенеджерОбменаЧерезУниверсальныйФормат. Именно поэтому в типовом плане обмена, таком как СинхронизацияДанныхЧерезУниверсальныйФормат, физически отсутствует функционал для загрузки ваших пользовательских XML-правил. Там просто нет механизма для их обработки.
Рассмотрим, какие пути решения у нас есть для автоматизации обмена.
Если правила уже написаны в Конвертации данных 2.1 и переписывать их под КД 3.0 нет времени или желания, мы можем автоматизировать старую добрую обработку «Универсальный обмен данными в формате XML». Поскольку она предназначена только для ручного запуска, нам потребуется написать для нее внешнюю обработку-обертку.
Разберем по шагам, как это реализовать:
Посмотрим на пример концептуального кода, который можно разместить в модуле внешней обработки для вызова выгрузки по правилам КД 2.1:
Процедура ВыполнитьВыгрузкуПоРасписанию() Экспорт
// Инициализируем типовую обработку КД 2.1
ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
// Указываем пути к файлам (желательно хранить в настройках или макете)
ОбработкаОбмена.ИмяФайлаПравилОбмена = "C:\Exchange\Rules_BP_ERP.xml";
ОбработкаОбмена.ИмяФайлаОбмена = "C:\Exchange\Data_" + Формат(ТекущаяДата(), "ДФ=yyyyMMdd_HHmmss") + ".xml";
// Настраиваем параметры (при необходимости)
ОбработкаОбмена.РежимОбмена = "Выгрузка";
// Выполняем саму выгрузку
ОбработкаОбмена.ВыполнитьВыгрузку();
// Здесь должен быть код снятия объектов с регистрации после успешной отправки
КонецПроцедуры
Важный нюанс (Квитирование): При использовании КД 2.1 по расписанию крайне важно продумать механизм формирования файла-ответа от базы-приемника. В типовой синхронизации через EnterpriseData квитанции об успешной загрузке формируются и обрабатываются автоматически. При использовании самописной обертки механизм чтения ответа и очистки таблиц регистрации изменений придется реализовать самостоятельно.
Хотя разработка в Конвертации данных 3.0 на первый взгляд кажется сложнее («китайская грамота», как пишут на форумах), этот подход является наиболее правильным с точки зрения архитектуры современных решений 1С. Рассмотрим подробнее, как действовать, чтобы не снимать конфигурации с поддержки.
Вам не нужно менять типовые правила полностью. Достаточно использовать Расширения конфигурации. Разберем процесс:
МенеджерОбменаЧерезУниверсальныйФормат.ПриОтправкеДанных, а для изменения логики загрузки на стороне ERP — ПередЗаписьюПолученныхДанных.Преимущество такого подхода в том, что регламентные задания, квитирование, транспорт (FTP, сетевой каталог, COM) и монитор синхронизации уже работают «из коробки». Мы лишь точечно вклиниваемся в процесс конвертации XDTO-пакетов.
Если перед вами стоит задача реализовать обмен между БП 3.0 и ERP 2, у вас есть два основных пути. Если правила уже готовы в формате КД 2.1 и задача "горит", быстрее всего написать внешнюю обработку-обертку, подключить ее через БСП и повесить на регламентное задание РегламентныеЗадания. Однако, если вы делаете проект с нуля на долгую перспективу, настоятельно рекомендуем инвестировать время в изучение формата EnterpriseData и механизмов Конвертации данных 3.0, реализуя изменения через расширения общих модулей. Это избавит вас от множества проблем при будущих обновлениях баз.