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

Как создать внешнюю...
 

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


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

приведи подробный пример кода для внешней обработки, которая запускается по расписанию (по аналогии с регламентным заданием)



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

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

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

### Шаг 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/



   
ОтветитьЦитата