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