#std540¶
Общие требования к регламентным заданиям¶
1.¶
В общем случае регламентные задания используйте, когда нужно выполнять периодические или однократные действия по расписанию.
2.¶
Если регламентные задания не нужно добавлять или удалять в зависимости от действий пользователя или логики конфигурации, используйте предопределенные регламентные задания.
Такие задания автоматически создаются в информационной базе с расписанием и состоянием, заданными разработчиком в конфигураторе.
Примеры предопределенных заданий:
- загрузка курсов валют;
- извлечение текста для полнотекстового индексирования;
- обновление агрегатов.
3.1.¶
Регламентные задания нельзя выполнять, если соответствующая функциональность в программе отключена.
Иначе они будут запускать сеансы
и расходовать ресурсы
сервера 1С:Предприятия.
Поэтому нужно программно управлять
признаком предопределенного задания
Использование
в зависимости
от включенных функциональных опций (ФО).
Пример:
есть регламентное задание
ПолучениеИОтправкаЭлектронныхПисем
(с установленным флажком Использование),
которое должно выполняться
только при включенной ФО
ИспользоватьПочтовыйКлиент.
Неправильно
Создавать предопределенное регламентное задание,
зависящее от ФО,
с установленным флажком Использование.
Правильно
Снять флажок Использование
и управлять использованием задания
в зависимости от включения/выключения ФО.
Если в конфигурации используется
подсистема Регламентные задания БСП,
для настройки используйте процедуру
ПриОпределенииНастроекРегламентныхЗаданий()
общего модуля
РегламентныеЗаданияПереопределяемый.
Пример для БСП
После этого
в состав определяемого типа
МестоХраненияФункциональныхОпций
добавьте константы,
соответствующие ФО,
которые используются
для управления регламентными заданиями.
Для конфигураций без БСП
управляйте использованием задания,
например,
в модуле менеджера
значения константы
ИспользоватьПочтовыйКлиент.
Пример без БСП
3.2.¶
Дополнительно обезопасьте выполнение регламентного задания, которое могли включить через консоль или другим способом, минуя включение ФО.
Для этого в начало процедуры-обработчика добавьте проверку:
ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания();
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьПочтовыйКлиент") Тогда
ВызватьИсключение НСтр("ru = 'Регламентное задание недоступно по функциональным опциям.'");
КонецЕсли;
Если используется подсистема
Регламентные задания БСП
и настроены зависимости заданий от ФО
(как в п. 3.1),
достаточно вызова,
показанного в п. 6.
4.1.¶
Если выполнение регламентного задания
зависит от данных информационной базы,
флажок Предопределенное
у регламентного задания
следует отключать.
Например:
- обмен с другими информационными базами должен выполняться с каждой базой по индивидуальному расписанию;
- запуск каждой дополнительной обработки должен выполняться по отдельному расписанию.
В таких случаях
создавайте экземпляры
регламентных заданий
и параметризуйте их объектами ИБ
(например,
узлами ИБ,
элементами справочника
Дополнительные обработки и т.п.)
из кода встроенного языка
через метод
РегламентныеЗадания.СоздатьРегламентноеЗадание().
В свойстве Наименование
указывайте представление объекта,
на основании которого
создается задание.
Пример
Для рассылки отчетов, если настроены расписание и автор:
// Снимаем ограничение, что только администратор может создавать регламентные задания.
УстановитьПривилегированныйРежим(Истина);
Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание(
Метаданные.РегламентныеЗадания.РассылкаОтчетов);
ПараметрыЗадания = Новый Массив;
ПараметрыЗадания.Добавить(РассылкаОтчетов);
Задание.Параметры = ПараметрыЗадания;
Задание.ИмяПользователя = АвторРассылки;
Задание.Использование = Истина;
Задание.Наименование = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Рассылка отчетов: %1'"), СокрЛП(РассылкаОтчетов));
Задание.Расписание = РасписаниеРассылки;
Задание.Записать();
4.2.¶
Если в конфигурации используется
подсистема Регламентные задания БСП,
нужно запрещать
интерактивное создание и запуск
параметризованных заданий
из формы Регламентные и фоновые задания.
Для этого укажите такое задание
в процедуре
ПриОпределенииНастроекРегламентныхЗаданий()
общего модуля
РегламентныеЗаданияПереопределяемый.
Пример
Также выполните п. 6.
5.¶
Чтобы избежать конфликтных ситуаций, в копиях информационной базы рекомендуется автоматически блокировать все регламентные задания, которые обращаются к внешним ресурсам (рассылка почты, синхронизация с другими программами и т.п.).
Это важно, например, если копия ИБ развернута для тестирования или передана в службу технической поддержки.
Если используется
подсистема Регламентные задания БСП,
перечислите такие задания
в процедуре
ПриОпределенииНастроекРегламентныхЗаданий()
общего модуля
РегламентныеЗаданияПереопределяемый.
Пример
И выполните п. 6.
В этом случае при перемещении информационной базы администратору будет задан вопрос об отключении таких заданий.
6.¶
Если регламентное задание
подпадает под требования
п. 3.1, 4.2, 5
и используется подсистема
Регламентные задания БСП,
в начало обработчика задания
добавляйте вызов:
ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.<ИмяЗадания>);
Первый параметр заполняйте обязательно.
См. также¶
- #std402: Настройка расписания регламентных заданий
- #std539: Запуск регламентных заданий
- #std767: Регламентные задания: требования по локализации
- #std760: Ограничения на регламентные задания при работе в режиме сервиса