При интеграции систем 1С:Предприятие часто возникает ситуация, когда типовые механизмы обмена (основанные на формате EnterpriseData и Конвертации данных 3.0) не покрывают специфические требования бизнеса. В таких случаях разработчики обращаются к проверенному инструменту — Конвертации данных 2.1 (КД 2.1). Однако, написав правила обмена, многие сталкиваются с вопросом: как сделать процесс выгрузки и загрузки автоматическим, чтобы не запускать обработку УниверсальныйОбменДаннымиВФорматеXML вручную каждый раз? Разберем основные способы реализации этой задачи.
Этот метод является наиболее гибким и «чистым», так как он практически не требует внесения изменений в конфигурацию. Мы воспользуемся механизмом дополнительных отчетов и обработок, который есть в любой современной конфигурации на базе БСП (Библиотеки стандартных подсистем).
Алгоритм действий:
УниверсальныйОбменДаннымиВФорматеXML.Проанализируем пример кода, который можно использовать внутри такой внешней обработки:
Процедура ВыполнитьОбменПоРасписанию() Экспорт
// Получаем объект типовой обработки для обмена XML
ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиВФорматеXML.Создать();
// Устанавливаем необходимые параметры
ОбработкаОбмена.ИмяФайлаПравилОбмена = "C:\Exchange\Rules.xml";
ОбработкаОбмена.ИмяФайлаДанных = "C:\Exchange\Data.xml";
ОбработкаОбмена.РежимОбмена = "Выгрузка";
// Если нужно выгружать только изменения по узлу плана обмена
УзелОбмена = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоНаименованию("НашУзел");
ОбработкаОбмена.УзелДляВыгрузкиИзменений = УзелОбмена;
// Загружаем правила и выполняем выгрузку
ОбработкаОбмена.ЗагрузитьПравилаОбмена();
ОбработкаОбмена.ВыполнитьВыгрузку();
КонецПроцедуры
Использование этого метода позволяет избежать модификации кода типовой конфигурации 1С:Комплексная автоматизация или 1С:Бухгалтерия предприятия.
Многие ошибочно полагают, что современные конфигурации (КА 2.4, ERP 2.5) поддерживают только КД 3.0. На самом деле, БСП сохраняет поддержку обмена через КД 2.1. Это позволяет использовать стандартный интерфейс мониторинга обмена и регистрации изменений.
Для реализации этого подхода выполним следующие шаги:
Rules.xml.Преимущество этого метода в том, что вы получаете встроенный контроль над коллизиями, журнал регистрации обмена и возможность ручного довыбора объектов к выгрузке.
Если требуется внешнее управление процессом (например, запуск обмена сторонним планировщиком задач Windows или скриптом), рассмотрим использование ключей запуска 1С.
Используйте параметр /Execute для запуска внешней обработки и параметр /C для передачи внутрь обработки специфических команд. Например:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "C:\Base1C" /N "ExchangeUser" /P "Password" /Execute "C:\Scripts\AutoExchange.epf" /C "StartExchange"
Внутри обработки в процедуре ПриОткрытии() или в модуле управляемого приложения можно обработать значение ПараметрЗапуска и выполнить обмен в фоновом режиме, после чего завершить работу приложения командой ЗавершитьРаботуСистемы(Ложь).
При переходе от ручного запуска к автоматическому следует обратить внимание на несколько критических моментов:
1. Регистрация изменений. Чтобы автоматический обмен не выгружал всю базу каждый раз, обязательно используйте ПланыОбмена. В правилах КД 2.1 на вкладке «Параметры выгрузки» укажите связь с планом обмена. Это гарантирует, что в файл данных попадут только новые или измененные объекты.
2. Обработка ошибок. В коде автоматизации обязательно используйте конструкцию Попытка...Исключение. В случае ошибки обмена (например, блокировка файла или сетевой сбой), информация должна записываться в Журнал регистрации, чтобы администратор мог оперативно отреагировать.
Попытка
ОбработкаОбмена.ВыполнитьВыгрузку();
Исключение
ЗаписьЖурналаРегистрации("ОбменДанными", УровеньЖурналаРегистрации.Ошибка, , ,
"Ошибка при автоматической выгрузке: " + ОписаниеОшибки());
КонецПопытки;
3. Поля поиска (Контроль дублей). Поскольку обмен происходит без участия человека, риск появления дублей возрастает. Убедитесь, что в правилах КД 2.1 для справочников (Контрагенты, Номенклатура, СтатьиЗатрат) настроены надежные поля поиска, такие как ИНН/КПП или уникальный код, а не только ГУИД.
Автоматизация обмена на правилах КД 2.1 в связке КА 2.4 — БП 3.0 остается актуальной задачей. Наиболее рекомендуемым способом является использование расширения для создания плана обмена и настройка синхронизации через штатную подсистему БСП. Это обеспечит стабильность, прозрачность мониторинга и отсутствие необходимости «ручного» вмешательства в процесс.