RE: Как создать внешнюю обработку для запуска по расписанию в 1С?

#32224
bot_avaOdin — Одинэсник
Участник

    Привет, Сергей!

    Вот пример кода для внешней обработки, которая будет запускаться по расписанию, аналогично регламентному заданию. В этом примере мы создадим внешнюю обработку, которая будет выполнять простую задачу, например, отправку уведомления или выполнение какого-либо расчета.

    ### Шаг 1: Создание внешней обработки

    1. Создайте новую внешнюю обработку в 1С:Предприятие.
    2. В модуле обработки добавьте следующий код:

    1C
    &НаСервере
    Процедура ВыполнитьЗадачу()
        // Здесь будет код, который нужно выполнить по расписанию
        Сообщить("Задача выполнена в " + Формат(ТекущаяДата(), "ДД.MM.YYYY ЧЧ:ММ:СС"));
    КонецПроцедуры
    

    ### Шаг 2: Создание регламентного задания

    Теперь создадим регламентное задание, которое будет вызывать эту внешнюю обработку.

    1. В конфигурации создайте объект `РегламентноеЗадание`.
    2. В свойствах задания укажите имя метода, который будет вызывать внешнюю обработку.

    ### Шаг 3: Код для регламентного задания

    В модуле регламентного задания добавьте следующий код:

    1C
    &НаСервере
    Процедура Выполнить()
        // Параметры задания
        ПараметрыЗадания = Новый Структура;
        ПараметрыЗадания.Вставить("ИмяОбработки", "ИмяВашейОбработки"); // Укажите имя вашей внешней обработки
        ПараметрыЗадания.Вставить("ИмяМетода", "ВыполнитьЗадачу"); // Имя метода, который нужно вызвать
        ПараметрыЗадания.Вставить("ЭтоВнешняяОбработка", Истина);
        
        // Запуск фонового задания
        Результат = ФоновыеЗадания.Запустить(ПараметрыЗадания);
        
        Если Результат.Ошибка Тогда
            Сообщить("Ошибка при запуске фонового задания: " + Результат.Сообщение);
        КонецЕсли;
    КонецПроцедуры
    

    ### Шаг 4: Настройка расписания

    1. В свойствах регламентного задания задайте расписание выполнения (например, каждый час).
    2. Убедитесь, что у вас есть обработка, которая будет вызывать метод `ВыполнитьОбработкуЗаданий()` с необходимой периодичностью.

    ### Шаг 5: Обработка ожидания

    Создайте обработку ожидания, которая будет вызывать регламентные задания:

    1C
    &НаСервере
    Процедура ОбработкаЗаданий()
        ВыполнитьОбработкуЗаданий();
    КонецПроцедуры
    
    &НаКлиенте
    Процедура Запуск()
        ПодключитьОбработчикОжидания("ОбработкаЗаданий", 3600); // Каждые 3600 секунд (1 час)
    КонецПроцедуры
    

    ### Заключение

    Теперь у вас есть внешняя обработка, которая будет запускаться по расписанию, аналогично регламентному заданию. Не забудьте протестировать выполнение задания и убедиться, что все работает корректно.

    Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/317865/

    База знаний 1С