#std539¶
Запуск регламентных заданий¶
1.¶
Рекомендуется давать пользователю альтернативную возможность выполнять регламентные задания вручную.
Например, предлагать запускать «по кнопке» обработку данных, которая обычно выполняется регламентным заданием в фоне.
Работа системы не должна зависеть от автоматического выполнения регламентных заданий.
В частности:
- выполнение регламентных заданий
может быть осознанно отключено
на кластере серверов
1С:Предприятия; - в файловом режиме
отсутствовала возможность
автоматического выполнения
регламентных и фоновых заданий
(в отличие от клиент-серверного режима
1С:Предприятияверсии8.2и ранее, где они выполняются на сервере).
Способ ручного запуска зависит от специфики задания.
1.1.¶
Если регламентное задание изменяет в системе данные, которые нужны конкретному бизнес-процессу или показываются в конкретном рабочем месте (форме), то в этом рабочем месте рекомендуется размещать команду для выполнения этого действия.
Например:
- в форме поиска в данных
выводится дата актуальности индекса,
и если индекс неактуален,
доступна команда
Обновить; - в списке входящих писем
показывается время последнего приема,
и доступна команда
Получить почту; - в рабочем месте ответственного
за партионный учет
показывается момент времени
последнего распределения по партиям,
и доступна команда
Выполнитьдля распределения по партиям.
Такие рабочие места должны информировать пользователя о дате актуальности данных и предоставлять команду для обновления или обработки (которая выполняет то же действие, что и регламентное задание).
Команда должна быть доступна только пользователям с нужными правами.
Пример
Пример ручного запуска задания по очистке устаревших версий объектов:
&НаСервере
Процедура ЗапуститьРегламентноеЗадание()
ИмяМетода = Метаданные.РегламентныеЗадания.ОчисткаУстаревшихВерсийОбъектов.ИмяМетода;
// Проверка, выполняется ли фоновое задание по очистке устаревших версий.
Отбор = Новый Структура;
Отбор.Вставить("ИмяМетода", ИмяМетода);
Отбор.Вставить("Состояние", СостояниеФоновогоЗадания.Активно);
ФоновыеЗаданияОчистки = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
Если ФоновыеЗаданияОчистки.Количество() = 0 Тогда
НаименованиеФоновогоЗадания = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Запуск вручную: %1'"), РегламентноеЗаданиеМетаданные.Синоним);
ФоновыеЗадания.Выполнить(ИмяМетода,,, НаименованиеФоновогоЗадания);
КонецЕсли;
КонецПроцедуры
1.2.¶
Если регламентное задание влияет на данные, которые отображаются в заранее неизвестном количестве рабочих мест, или влияет на информационную базу в целом, то нельзя выделить одно конкретное рабочее место для запуска всех таких заданий.
Примеры таких заданий:
- обновление и перестроение агрегатов;
- установка периода рассчитанных итогов.
Результат выполнения этих заданий влияет сразу на множество внутренних и внешних отчетов, которые опираются на итоги и агрегаты.
В этом случае рекомендуется создавать отдельное рабочее место для выполнения таких заданий.
Если в конфигурации используется
Библиотека стандартных подсистем,
такое рабочее место
уже входит в подсистему Регламентные задания
(форма Регламентные и фоновые задания).
1.3.¶
Если регламентное задание не изменяет данные в системе, а формирует отчеты или рассылки, также рекомендуется предусматривать отдельное рабочее место для выполнения таких заданий.
Примеры заданий, которые не изменяют данные в базе:
- рассылка по почтовым адресатам информации об ошибках из журнала регистрации;
- рассылка информации о новых и просроченных задачах;
- периодический запуск внешних обработок для рассылки отчетов.
Если в конфигурации используется
Библиотека стандартных подсистем,
такое рабочее место
уже входит в подсистему Регламентные задания
(форма Регламентные и фоновые задания).
2.¶
Для администраторов информационных баз рекомендуется: на время обновления ИБ блокировать выполнение регламентных заданий.
Если обновление запускает неподготовленный пользователь, особенно в файловом режиме, рекомендуется дополнительно:
- в файловом режиме,
при неудачной попытке
установки монопольного режима
для обновления данных ИБ,
предлагать автоматически
блокировать работу
регламентных заданий
(перезапуск программы с ключом
/AllowExecuteScheduledJobs -Off); - в начале обработчиков регламентных заданий проверять режим работы и прерывать выполнение вызовом исключения, если обновление ИБ еще не завершено.
Если в конфигурации используется
Библиотека стандартных подсистем,
первая рекомендация
уже реализована
в подсистеме Обновление версии ИБ.
Для второй рекомендации
предусмотрена процедура
ПриНачалеВыполненияРегламентногоЗадания()
общего модуля ОбщегоНазначения.
Ее вызов нужно размещать
в начале кода обработчиков
регламентных заданий.
См. также¶
- #std402: Настройка расписания регламентных заданий
- #std540: Предопределенные регламентные задания
- #std760: Ограничения на регламентные задания при работе в режиме сервиса