gifts2017

Универсальное регламентное задание

Опубликовал Осипов Сергей (fixin) в раздел Администрирование - Системное

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

Создадим регламентное задание «Выполнение обработки».

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

Назначим процедуру, которая будет срабатывать при запуске регламентного задания: МодульРегламентныхЗаданий.РегламентноеЗаданиеВыполнениеОбработки.

Сама процедура имеет вид:

Процедура РегламентноеЗаданиеВыполнениеОбработки(Ключ) Экспорт

       ПараметрыРегламентныхЗаданий.ВыполнитьОбработкуСПараметрами(Ключ);

КонецПроцедуры

 

Создаем справочник для регламентных заданий

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

Справочник «Параметры регламентных заданий»:

Реквизиты:

·         КодПередЗапуском – неограниченная строка – код на языке 1С, который нужно выполнить перед запуском.

·         Обработка из конфигурации – строка (100)  - идентификатор обработки из конфигурации

·         Обработка из справочника – строка (100)  - ссылка на элемент справочника «Внешние обработки», если такой имеется в конфигурации

·         Выполнять через приложение 1С – булево - будет создано отдельное приложение 1С и в нем будет запущено регламентное задание. Создано для 8.1, где не все методы приложения доступны на сервере, где работает регламентное задание.

·         КодЗапуска - – неограниченная строка – код на языке 1С, который будет выполняться при запуске регламентного задания.

Создадим форму элемента:

По нажатию на кнопку «Создать регл. задание» программно создается регламентное задание с ключом-кодом:

Процедура ОсновныеДействияФормыСоздатьРеглЗадание(Кнопка)

       Перем Задание;

      

       Ключ = СокрЛП(Код);

       Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание("ВыполнениеОбработки");

       Задание.Наименование = Ключ;

       Задание.Ключ = Ключ;

      

       Параметры = Новый Массив();

       Параметры.Добавить(Ключ);

       Задание.Параметры = Параметры;

       Задание.Записать();

КонецПроцедуры

 

Запуск регламентного задания

Каждое созданное нами регламентное задание имеет ключ:

Этот ключ соответствует коду справочника «Параметры регламентных заданий», по нему осуществляется поиск при старте задания. Если элемент справочника не найдено, задание не выполняется.

Далее, если задан код КодПередЗапуском то будет выполнен этот код. Далее, если переменная Выполнять примет значение ложь, то задание не будет выполнено. При анализе доступна переменная Параметры, где хранится ссылка на найденный элемент справочника «Параметры регламентных заданий».

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

Для 1С81 предусмотрено выполнение в новом приложении – чтобы можно было использовать код, доступный только на клиенте, в том числе и использование внешних обработок. Для этого нужно установить галочку «Выполнять через приложение 1С». Иначе регламентное задание будет выполняться на сервере.

Рекомендую устанавливать пользователя в поле «Пользователь» у вновь созданного регламентного задания, чтобы задание выполнялось под определенными правами. Рекомендую такому пользователю давать полные права. У меня используется пользователь «robot».

Расписание регламентного задания создается по гиперссылке «Расписание» из формы регламентного задания. Можно использовать обработку «Консоль регламентных заданий».

Скачать файлы

Наименование Файл Версия Размер
Конфигурация 93
.zip 221,76Kb
18.04.13
93
.zip 221,76Kb Скачать

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение

Комментарии

1. Eugeneer (Eugeneer) 18.04.13 20:20
в 82 даже внешние обработки запускаются в регламентных заданиях. И ничего не надо в конфе делать.
2. Максим Сухов (MaxS) 18.04.13 21:51
Конфигурации на основе БСП позволяют использовать внешние обработки, которым можно задать расписание выполнения.
3. Осипов Сергей (fixin) 18.04.13 23:49
(2) я выделил минимальный контур для тех, кто живет не в БСП, ;-)
и у меня можно юзать не ВО, а просто код на 1с.
4. Осипов Сергей (fixin) 18.04.13 23:49
(1) прости, а где эти ВО должны лежать? Или ты про типовые?
5. Андрей Акулов (DrAku1a) 15.11.13 04:54
Жесть!
Конфа для 8.1 с кучей лишних справочников и напрочь отсутствующим регламентным заданием и модулем с процедурой его выполнения...
ПараметрыРегламентныхЗаданий.ВыполнитьОбработкуСПараметрами(Ключ);

Вот где реализация этого?
6. Осипов Сергей (fixin) 15.11.13 11:00
(5)вы не нашли этого в конфе, в общих модулях?
На всякий случай прилагаю файл тут.

А насчет конфы - это же конфигурация-носитель. Поищите на инфостарте описание, что это такое.
Прикрепленные файлы:
Общий модуль Параметры Регламентных Заданий.txt
7. Андрей Акулов (DrAku1a) 15.11.13 13:35
Да. Наверное при преобразовании на 8.2 этот модуль как-то "потерялся"... Собственно, 1С-ка ругалась, что несохраненные изменения в конфигурации будут потеряны.
8. Jonovich (Jonovich) 15.01.14 14:12

Зачем в параметрах метода использовать ключ регламентного задания?? Подумайте что будет если код справочника будет не уникальным!! Правильно будет передавать ссылку в метод.

Для этого есть свойство задания: - Регламентное задание.Параметры




РегламентноеЗадание (ScheduledJob)
Параметры (Parameters)
Использование:

Чтение и запись.
Описание:

Тип: Массив.
Массив параметров регламентного задания. Количество и состав параметров должны соответствовать параметрам метода регламентного задания.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Если последние параметры метода имеют значения по-умолчанию, то их можно не задавать в массиве.
Возможность чтения и записи доступны только для администратора.

9. Осипов Сергей (fixin) 15.01.14 14:34
(8) возможно, возможно. Писалось в спешке. Таки вменяемые админы одинаковые коды не ставят, но для идеального случая согласен.
10. Jonovich (Jonovich) 15.01.14 14:50
Хороший пример есть в конфигурации Документооборт КОРП - механизм рассылки отчетов
Сейчас пишу как раз подобное для обычного интерфейса УПП. Как закончу, думаю опубликую.
11. 1 2 (BOBrent) 04.03.15 21:54
Весьма познавательно для начинающих - спасибо (всё равно)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа