Регламентные и фоновые задания (создание, настройка, запуск)При работе в 1С встречается много рутинных операций которые должны запускаться или формироваться по расписанию выполняя то или иное действие, например: проведение документов или загрузка данных в 1С с сайта. Недавно я разместил статью: Чтение данных с сайта в формате XML и загрузка в 1С пришло время это автоматизировать: Регламентные и фоновые заданияМеханизм заданий предназначен для выполнения какой-либо прикладной или функциональности по расписанию или асинхронно. Механизм заданий решает следующие задачи: - Возможность определения регламентных процедур на этапе конфигурирования системы;
- Выполнение заданных действий по расписанию;
- Выполнение вызова заданной процедуры или функции асинхронно, т.е. без ожидания ее завершения;
- Отслеживание хода выполнения определенного задания и получение его статуса завершения (значения, указывающего успешность или не успешность его выполнения);
- Получение списка текущих заданий;
- Возможность ожидания завершения одного или нескольких заданий;
- Управление заданиями (возможность отмены, блокировка выполнения и др.).
Механизм заданий состоит из следующих компонентов: - Метаданных регламентных заданий;
- Регламентных заданий;
- Фоновых заданий;
- Планировщика заданий.
Фоновые задания & предназначены для выполнения прикладных задач асинхронно. Фоновые задания реализуются средствами встроенного языка. Регламентные задания & предназначены для выполнения прикладных задач по расписанию. Регламентные задания хранятся в информационной базе и создаются на основе метаданных, определяемых в конфигурации. Метаданные регламентного задания содержат такую информацию как наименование, метод, использование и т.д. Регламентное задание имеет расписание, которое определяет, в какие моменты времени нужно выполнять связанный с регламентным заданием метод. Расписание, как правило, задается в информационной базе, но может быть задано и на этапе конфигурирования (например, для предопределенных регламентных заданий). Планировщик заданий используется для планирования выполнения регламентных заданий. Для каждого регламентного задания планировщик периодически проверяет, соответствует ли текущая дата и время расписанию регламентного задания. Если соответствует, планировщик назначает такое задание на выполнение. Для этого по данному регламентному заданию планировщик создает фоновое задание, которое и выполняет реальную обработку. С описанием, думаю, хватит - приступим к реализации: Создание регламентного задания
Имя метода – путь к процедуре, которая будет выполняться в фоновом задании по заданному расписанию. Процедура должна находиться в общем модуле. Рекомендуется не использовать типовые общие модули, а создать свой. Не забудьте, что фоновые задания исполняются на сервере! Использование – признак использования регламентного задания. Предопределенное – указывает, является ли регламентное задание предопределенным. Если хотите что бы регламентное задание заработало сразу после помещения в БД, укажите признак Предопределенное. В противном случае вам необходимо будет использовать обработку “Консоль заданий” или вызывать запуск задания программно. Количество повторов при аварийном завершении задания – сколько раз выполнен перезапуск фонового задания, если оно было выполнено с ошибкой. Интервал повтора при аварийном завершении задания – с какой периодичностью будет выполнен перезапуск фонового задания, если оно было выполнено с ошибкой. Настройка расписанияРасписание выполнения задания:
Каждый час, только один день | ПериодПовтораДней = 0, ПериодПовтораВТечениеДня = 3600 | Каждый день один раз в день | ПериодПовтораДней = 1, ПериодПовтораВТечениеДня = 0 | Один день, один раз | ПериодПовтораДней = 0 | Через день один раз в день | ПериодПовтораДней = 2 | Каждый час с 01.00 до 07.00 каждый день | ПериодПовтораДней = 1ПериодПовтораВТечениеДня = 3600ВремяНачала = 01.00 ВремяКонца = 07.00 | Каждую субботу и воскресенье в 09.00 | ПериодПовтораДней = 1ДниНедели = 6, 7ВремяНачала = 09.00 | Каждый день одну неделю, неделя пропуска | ПериодПовтораДней = 1ПериодНедель = 2 | В 01.00 один раз | ВремяНачала = 01.00 | Последнее число каждого месяца в 9:00. | ПериодПовтораДней = 1ДеньВМесяце = -1ВремяНачала = 09.00 | Пятое число каждого месяца в 9:00 | ПериодПовтораДней = 1ДеньВМесяце = 5ВремяНачала = 09.00 | Вторая среда каждого месяца в 9:00 | ПериодПовтораДней = 1ДеньНеделиВМесяце = 2ДниНедели = 3 ВремяНачала = 09.00 |
Особенности выполнения фоновых заданий файловом и клиент-серверном вариантахМеханизмы выполнения фоновых заданий в файловом и клиент-серверном вариантах различаются. В файловом варианте необходимо создать выделенный клиентский процесс, который будет заниматься выполнением фоновых заданий. Для этого в клиентском процессе должна периодически вызываться функция глобального контекста ВыполнитьОбработкуЗаданий. Только один клиентский процесс на информационную базу должен выполнять обработку фоновых заданий (и, соответственно, вызывать данную функцию). Если клиентского процесса для обработки фоновых заданий не создано, то при программном доступе к механизму заданий будет выдана ошибка «Менеджер заданий не активен». Не рекомендуется клиентский процесс, выполняющий обработку фоновых заданий, использовать для других функций. После того, как клиентский процесс, выполняющий обработку фоновых заданий, запущен, остальные клиентские процессы получают возможность программного доступа к механизму фоновых заданий, т.е. могут запускать и управлять фоновыми заданиями. В клиент-серверном варианте для выполнения фоновых заданий используется планировщик заданий, который физически находится в менеджере кластера. Планировщик для всех поставленных в очередь на выполнение фоновых заданий получает наименее загруженный рабочий процесс и использует его для выполнения соответствующего фонового задания. Рабочий процесс выполняет задание и уведомляет планировщик о результатах выполнения. В клиент-серверном варианте имеется возможность блокирования выполнения регламентных заданий. Блокирование выполнения регламентных заданий происходит в следующих случаях: - На информационную базу установлена явная блокировка регламентных заданий. Блокировка может быть установлена через консоль кластера;
- На информационную базу установлена блокировка соединения. Блокировка может быть установлена через консоль кластера;
- Из встроенного языка вызван метод УстановитьМонопольныйРежим() с параметром Истина;
- В некоторых других случаях (например, при обновлении конфигурации базы данных).
Обработки запуска и просмотра регламентных заданий вы можете скачать здесь: Для 8.2 Обычные формы: Konsol82.rar Для 8.3 Управляемые формы: KonsolZadaniy83.rar Опубликовано на сайте: https://HelpF.pro Прямая ссылка: https://HelpF.pro/faq/view/1671.html
|