Запуск регламентных заданий

#std539

Область применения: управляемое приложение, обычное приложение.

Методическая рекомендация (полезный совет)

1. Рекомендуется предоставлять пользователям альтернативную возможность по выполнению регламентных заданий вручную. Например, предлагать «по кнопке» выполнить обработку данных, обычно выполняемую регламентным заданием в фоне. Это вызвано тем соображением, что работа системы не должна зависеть от автоматического выполнения регламентных заданий. В частности:

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

1.1. В случае если регламентное задание изменяет в системе некоторые данные, которые необходимы определенному бизнес-процессу или выводятся в конкретном «рабочем месте» (форме), то в таких «рабочих местах» дополнительно рекомендуется размещать команду для выполнения этого действия. Например:

Такие рабочие места должны информировать пользователя о дате актуальности представленных данных и команду для их обновления или обработки (которая выполняет то же действие, что и регламентное задание). Команда должна быть доступна только пользователям с необходимыми для ее выполнения правами.

Пример ручного запуска задания по очистке устаревших версий объектов:

&НаСервере
Процедура ЗапуститьРегламентноеЗадание()
   ИмяМетода = Метаданные.РегламентныеЗадания.ОчисткаУстаревшихВерсийОбъектов.ИмяМетода;

   // Проверка, выполняется ли фоновое задание по очистке устаревших версий.
   Отбор = Новый Структура;
   Отбор.Вставить("ИмяМетода", ИмяМетода);
   Отбор.Вставить("Состояние", СостояниеФоновогоЗадания.Активно);
   ФоновыеЗаданияОчистки = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
   Если ФоновыеЗаданияОчистки.Количество() = 0 Тогда
      НаименованиеФоновогоЗадания = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru = 'Запуск вручную: %1'"), РегламентноеЗаданиеМетаданные.Синоним);
      ФоновыеЗадания.Выполнить(ИмяМетода,,, НаименованиеФоновогоЗадания);
   КонецЕсли;
КонецПроцедуры

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

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

В этом случае рекомендуется заводить отдельное рабочее место для выполнения таких регламентных заданий. При использовании в конфигурации Библиотеки стандартных подсистем такое рабочее место уже входит в состав подсистемы «Регламентные задания» (форма «Регламентные и фоновые задания»).

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

Примеры регламентных заданий, которые не меняют данные в базе:

При использовании в конфигурации Библиотеки стандартных подсистем такое рабочее место уже входит в состав подсистемы «Регламентные задания» (форма «Регламентные и фоновые задания»).

2. Для администраторов информационных баз действует рекомендация: на период выполнения обновления ИБ блокировать работу регламентных заданий. Однако если обновление выполняет неподготовленный пользователь, в особенности, в файловом режиме работы, то рекомендуется дополнительно предусмотреть следующие меры:

При использовании в конфигурации Библиотеки стандартных подсистем первая рекомендация реализована в подсистеме «Обновление версии ИБ», а для выполнения второй предусмотрена процедура ПриНачалеВыполненияРегламентногоЗадания общего модуля ОбщегоНазначения, вызов которой необходимо размещать в начале кода обработчиков регламентных заданий.

См. также