Как настроить запуск внешней обработки по расписанию в 1С:Документооборот?

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

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

Настройка программного интерфейса в модуле обработки

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


Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
    НоваяКоманда = ТаблицаКоманд.Добавить();
    НоваяКоманда.Представление = Представление;
    НоваяКоманда.Идентификатор = Идентификатор;
    НоваяКоманда.Использование = Использование;
    НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
    НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры

Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.ПараметрыРегистрацииВнешнейОбработки();
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
    ПараметрыРегистрации.Наименование = "Автоматическая обработка данных";
    ПараметрыРегистрации.Версия = "1.0";
    ПараметрыРегистрации.БезопасныйРежим = Ложь;

    ДобавитьКоманду(ПараметрыРегистрации.Команды, 
                   "Запустить регламентную процедуру", 
                   "РегламентныйЗапуск", 
                   "ВызовСерверногоМетода", 
                   Ложь);

    Возврат ПараметрыРегистрации;
КонецФункции

Обратите внимание: если при регистрации обработки вы видите сообщение «Не применимо для команд с вариантом запуска Вызов серверного метода», проверьте Вид обработки. Для запуска по расписанию наиболее корректно использовать ДополнительнаяОбработка или ЗаполнениеОбъекта.

Реализация обработчика выполнения

Когда регламентное задание БСП ЗапускДополнительныхОбработок инициирует выполнение, оно ищет в модуле объекта обработки экспортную процедуру с конкретной сигнатурой. Проанализируем требования к этой процедуре. Она должна называться ВыполнитьКоманду и принимать ровно два параметра. Если параметров будет меньше или процедура будет называться иначе, фоновое задание завершится с ошибкой.


// Процедура должна располагаться в модуле объекта и иметь признак Экспорт
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
    
    Если ИдентификаторКоманды = "РегламентныйЗапуск" Тогда
        // Здесь размещаем основной код автоматизации
        ВыполнитьОсновнуюЛогику();
    КонецЕсли;
    
КонецПроцедуры

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

Настройка расписания в пользовательском интерфейсе

После того как код написан, обработку необходимо зарегистрировать в справочнике Дополнительные отчеты и обработки. Выполним следующие шаги:

  1. Загрузите файл обработки в справочник.
  2. В списке команд найдите вашу команду. Благодаря тому, что мы указали ВызовСерверногоМетода, в строке команды появится возможность настройки расписания.
  3. Нажмите на ссылку в колонке «Расписание». Если колонка не видна, убедитесь, что вид обработки выбран верно и форма не имеет ограничений по видимости.
  4. Установите флаг «Выполнять команду по расписанию» и задайте требуемый интервал (например, каждый день или раз в час).
  5. Укажите пользователя, от имени которого будет запускаться задание. Это критично для проверки прав доступа в коде.

Диагностика и типичные проблемы

Если регламентное задание запускается, но ожидаемый результат не достигается, проанализируем возможные причины:

Для глубокой отладки можно временно использовать запись логов в текстовый файл или в Журнал регистрации через ЗаписьЖурналаРегистрации(), так как обычные точки останова в модуле объекта внешней обработки при запуске через регламентное задание могут не сработать без специальной настройки отладки фоновых заданий на сервере.

← На главную