Как настроить запуск обработки «Универсальный обмен данными XML» по расписанию в 1С:Бухгалтерия предприятия 3.0?

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

В современных реалиях автоматизация обмена данными между различными информационными системами является критически важной задачей. Часто возникает ситуация, когда необходимо регулярно загружать данные из файла XML, используя стандартную обработку «Универсальный обмен данными XML». В конфигурации «Бухгалтерия предприятия 3.0» (БП 3.0) этот инструмент по умолчанию предназначен для интерактивной работы, однако его можно и нужно адаптировать для работы по расписанию. Разберем подробно, как это реализовать, какие программные методы использовать и как избежать типичных ошибок при работе в фоновом режиме.

Метод 1: Использование механизма «Дополнительные отчеты и обработки»

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

Проанализируем алгоритм создания такой обработки:

  1. Создадим новую внешнюю обработку в конфигураторе.
  2. В модуле объекта опишем процедуру СведенияОВнешнейОбработке(), чтобы система распознала её как обработку с дополнительной командой, выполняемой на сервере.
  3. Создадим экспортную процедуру для выполнения загрузки.

Рассмотрим пример программного заполнения параметров обработки УниверсальныйОбменДаннымиXML:


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

После создания такой обработки мы регистрируем ее в режиме «1С:Предприятие» через меню Администрирование — Печатные формы, отчеты и обработки. Там же настраиваем расписание запуска, что позволяет не изменять конфигурацию и сохранять базу на поддержке.

Метод 2: Создание собственного регламентного задания

Если по каким-то причинам использование внешних обработок не подходит, рассмотрим вариант с созданием собственного регламентного задания в конфигураторе. Этот метод требует снятия базы с поддержки или использования механизма расширений.

Проанализируем необходимые шаги:

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

Важный нюанс: Выясним причину, по которой загрузка может не срабатывать в общем модуле. Проверьте свойства модуля: если установлен флаг Клиент, код может пытаться вызвать интерактивные функции. Регламентные задания всегда выполняются на сервере в неинтерактивном сеансе, поэтому любые вызовы Предупреждение() или Вопрос() внутри логики обмена приведут к аварийному завершению.

Особенности работы в файловом режиме

Ситуация осложняется, если база данных является файловой. В файловом режиме регламентные задания не выполняются автоматически, если в базе нет ни одного активного пользователя.

Выделим два пути решения этой проблемы:

  1. Технический сеанс: Оставьте один запущенный сеанс 1С на сервере или постоянно включенном компьютере. Этот сеанс будет выполнять роль планировщика заданий.
  2. Планировщик Windows: Создадим скрипт для запуска 1С с параметром /Execute. В параметре укажем путь к внешней обработке. В самой обработке в процедуре ПриОткрытии (для обычных форм) или в коде модуля формы при создании (с использованием обработчика ожидания для управляемых форм) пропишем выполнение загрузки и обязательную команду ЗавершитьРаботуСистемы(Ложь).

Обработка ошибок и оповещение пользователя

Поскольку процесс идет в фоне, пользователь не увидит сообщений об ошибках на экране. Разберем, как реализовать обратную связь, чтобы вовремя узнать о проблеме.

1. Журнал регистрации. Как было показано в примере кода, использование метода ЗаписьЖурналаРегистрации является обязательным. Это позволит администратору базы постфактум проанализировать причины сбоя.

2. Оповещение по электронной почте. Посмотрим на пример кода для отправки уведомления в случае ошибки:


Если ОшибкаПриЗагрузке Тогда
    Профиль = Новый ИнтернетПочтовыйПрофиль;
    Профиль.АдресСервераSMTP = "smtp.mail.ru";
    // Настройка аутентификации...
    
    Сообщение = Новый ИнтернетПочтовоеСообщение;
    Сообщение.Получатели.Добавить("admin@company.com");
    Сообщение.Тема = "Ошибка автоматической загрузки XML в БП3";
    Сообщение.Тексты.Добавить("Обнаружена ошибка при выполнении обмена: " + ТекстОшибки);
    
    Почта = Новый ИнтернетПочта;
    Почта.Подключиться(Профиль);
    Почта.Послать(Сообщение);
    Почта.Отключиться();
КонецЕсли;

3. Использование регистра сведений. Создадим простой регистр СтатусЗагрузкиДанных с измерениями «Дата» и «Результат». После каждого выполнения фонового задания будем записывать туда итог. Эти данные можно вывести на рабочий стол бухгалтера в виде информационной панели.

Рекомендации по безопасности и стабильности

Проанализируем технические моменты, которые часто упускают при разработке:

В завершение отметим, что если ваш обмен данными происходит между типовыми конфигурациями (например, из УТ 11 в БП 3.0), рассмотрите возможность использования Синхронизации данных. Она уже включает в себя механизмы расписания, регистрации изменений и мониторинга ошибок «из коробки», что избавляет от необходимости написания собственного кода.

← На главную