Как настроить автоматический обмен данными между КА 2.4 и БП 3.0 CORP по правилам Конвертации данных 2.1?

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

При интеграции систем 1С:Предприятие часто возникает ситуация, когда типовые механизмы обмена (основанные на формате EnterpriseData и Конвертации данных 3.0) не покрывают специфические требования бизнеса. В таких случаях разработчики обращаются к проверенному инструменту — Конвертации данных 2.1 (КД 2.1). Однако, написав правила обмена, многие сталкиваются с вопросом: как сделать процесс выгрузки и загрузки автоматическим, чтобы не запускать обработку УниверсальныйОбменДаннымиВФорматеXML вручную каждый раз? Разберем основные способы реализации этой задачи.

Способ 1. Использование регламентного задания и внешней обработки

Этот метод является наиболее гибким и «чистым», так как он практически не требует внесения изменений в конфигурацию. Мы воспользуемся механизмом дополнительных отчетов и обработок, который есть в любой современной конфигурации на базе БСП (Библиотеки стандартных подсистем).

Алгоритм действий:

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

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


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

Использование этого метода позволяет избежать модификации кода типовой конфигурации 1С:Комплексная автоматизация или 1С:Бухгалтерия предприятия.

Способ 2. Интеграция в штатную подсистему «Синхронизация данных»

Многие ошибочно полагают, что современные конфигурации (КА 2.4, ERP 2.5) поддерживают только КД 3.0. На самом деле, БСП сохраняет поддержку обмена через КД 2.1. Это позволяет использовать стандартный интерфейс мониторинга обмена и регистрации изменений.

Для реализации этого подхода выполним следующие шаги:

  1. Создание Плана обмена: Если типовые планы обмена не подходят, создадим свой собственный через Расширение. Это позволит системе автоматически регистрировать изменения объектов (документов, справочников).
  2. Подключение правил: В настройках синхронизации данных можно выбрать вариант «Использовать правила обмена из файла». Система позволит загрузить архив, содержащий Rules.xml.
  3. Настройка расписания: После создания настройки синхронизации, в разделе «Администрирование — Синхронизация данных» появится стандартное регламентное задание, которое будет выполнять обмен автоматически.

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

Способ 3. Запуск через параметры командной строки

Если требуется внешнее управление процессом (например, запуск обмена сторонним планировщиком задач 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 остается актуальной задачей. Наиболее рекомендуемым способом является использование расширения для создания плана обмена и настройка синхронизации через штатную подсистему БСП. Это обеспечит стабильность, прозрачность мониторинга и отсутствие необходимости «ручного» вмешательства в процесс.

← На главную