Регламентные задания в 1С

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

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

  • выделить специального пользователя для выполнения регламентных заданий;
  • должна быть открыта база под этим пользователем, в которой  периодически должна выполняться функция ВыполнитьОбработкуЗаданий().

Создание регламентного задания

Регламентные задания — объект метаданных конфигурации 1С. Находится в группе Общие. Рассмотрим параметры и свойства регламентных заданий.

Регламентные задания в 1С

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

Ключ — позволяет создать несколько регламентных заданий одного типа. Например, выполнение синхронизации данных между несколькими информационными базами может быть реализовано с помощью одного объекта метаданных РегламентноеЗадание, при этом самих регламентных заданий будет создано несколько (по количеству баз для обмена). Различаться эти регламентные задания будут с помощью свойства Ключ. Одновременно может выполняться только одно задание с одинаковым ключом.

Использование — флаг, показывающий, включено ли регламентное задание.

Предопределенное — здесь можно провести аналогию с предопределенными элементами справочника. Предопределенные элементы создаются в конфигураторе и применяются пользователями в работе. Обычные элементы пользователь создает сам. С регламентными заданиями точно так же: если оно предопределенное, то оно существует и может выполняться по расписанию сразу после создания в конфигураторе. Если же флаг Предопределенное не установлен, то пользователю нужно самому создать одно или несколько регламентных заданий данного типа (например, через Консоль заданий).

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

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

Программная работа с регламентными заданиями

В данных примерах будем рассматривать работу с обычными, не предопределенными, регламентными заданиями.

Программное создание регламентного задания

//Создаем задание
Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание("ИмяРегдаментногоЗадания");

//Устанавливаем ключ регламентного задания (не обязательно)
Задание.Ключ = "КлючЗадания";

//Включаем регламентное задание
Задание.Использование = Истина;

//Записываем регламентное задание
Задание.Записать();

Программное получение регламентного задания для изменения параметров

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

//Получаем массив с регламентными заданиями нужного типа
Задания=РегламентныеЗадания.ПолучитьРегламентныеЗадания(новый Структура("Метаданные", Метаданные.РегламентныеЗадания["ИмяРегламентногоЗадания"]));

//Если задание существует, то по условию оно одно
Если Задания.Количество()>0 Тогда
Задание=Задания[0];

//Если задания нет, создадим его
Иначе
Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание("ИмяРегламентногоЗадания");

КонецЕсли;

//Регламентное задание находится в переменной Задание. Можно изменять его параметры.

Вызов диалога изменения расписания регламентного задания

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

//Получаем массив с регламентными заданиями нужного типа
Задания=РегламентныеЗадания.ПолучитьРегламентныеЗадания(новый Структура("Метаданные", Метаданные.РегламентныеЗадания["ИмяРегламентногоЗадания"]));

//Если задание существует, то по условию оно одно
Если Задания.Количество()>0 Тогда
Задание=Задания[0];

//Если задания нет, создадим его
Иначе
Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание("ИмяРегламентногоЗадания");

КонецЕсли;

Расписание=Задание.Расписание;

//Создаем диалог изменения расписания регламентного задания
ДиалогРедактирования= Новый ДиалогРасписанияРегламентногоЗадания (Расписание);

//Показываем диалог пользователю и обрабатываем изменения расписания
Если ДиалогРедактирования.ОткрытьМодально() Тогда
Задание.Расписание = ДиалогРедактирования.Расписание;
Задание.Записать();
КонецЕсли;

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *