Какие основные свойства содержит регламентное задание
1. В общем случае, регламентные задания следует использовать, когда необходимо выполнить определенные периодические или однократные действия в соответствии с расписанием.
2. При этом если регламентные задания не требуется добавлять или удалять в зависимости от действий пользователя или логики конфигурации, следует использовать предопределенные регламентные задания. Такие задания автоматически создаются в информационной базе с тем расписанием и состоянием, которое было задано разработчиком в Конфигураторе. Примеры предопределенных регламентных заданий:
- загрузка курсов валют;
- извлечение текста для полнотекстового индексирования;
- обновление агрегатов.
3.1. Если выполнение регламентного задания зависит от включенных одной или нескольких функциональных опций (ФО), то необходимо программно управлять признаком предопределенного регламентного задания Использование в зависимости от установленных ФО. Иначе регламентное задание будет приводить к запуску сеанса, занимая вычислительные ресурсы сервера 1С:Предприятие.
Например, имеем регламентное задание ПолучениеИОтправкаЭлектронныхПисем (с установленным флажком Использование), которое должно выполняться только в том случае, если установлена ФО ИспользоватьПочтовыйКлиент.
Неправильно: создавать предопределенное регламентное задание, зависящее от ФО, с установленным флажком Использование.
Правильно: снять флажок Использование и управлять использованием регламентного задания в зависимости от включения/выключения функциональной опции.
Если в конфигурации используется подсистема «Регламентные задания» Библиотеки стандартых подсистем (БСП), то для такой настройки следует использовать процедуру ПриОпределенииНастроекРегламентныхЗаданий общего модуля РегламентныеЗаданияПереопределяемый. Например:
Настройка = Настройки.Добавить();
Настройка.РегламентноеЗадание = Метаданные.РегламентныеЗадания.ОбновлениеСтатусовДоставкиSMS;
Настройка.ФункциональнаяОпция = Метаданные.ФункциональныеОпции.ИспользоватьПочтовыйКлиент;
Настройка.ДоступноВМоделиСервиса = Ложь;
После чего в состав определяемого типа МестоХраненияФункциональныхОпций необходимо добавить константы, соответствующие функциональным опциям, используемым для управления регламентными заданиями.
Для конфигураций без БСП следует управлять использованием регламентного задания, разместив, например, в модуле менеджера значения константы ИспользоватьПочтовыйКлиент следующий код:
Процедура ПриЗаписи(Отказ)
Задание = РегламентныеЗадания.НайтиПредопределенное(Метаданные.РегламентныеЗадания.ПолучениеИОтправкаЭлектронныхПисем);
Если Задание.Использование <> Значение Тогда
Задание.Использование = Значение;
Задание.Записать();
КонецЕсли;
КонецПроцедуры
3.2. Дополнительно следует обезопасить выполнение регламентного задания, включенного через консоль или другим способом, минуя включение ФО, вставив в начало процедуры обработки регламентного задания следующий код:
ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания();
Если НЕ ПолучитьФункциональнуюОпцию(“ИспользоватьПочтовыйКлиент”) Тогда
ВызватьИсключение НСтр(“ru = ‘Регламентное задание недоступно по функциональным опциям.'”);
КонецЕсли;
Если в конфигурации используется подсистема «Регламентные задания» БСП и настроены зависимости регламентных заданий от ФО (как указано в п.3.1), то вместо этого достаточно вставить вызов, как показано в п.6.
4.1. Если выполнение регламентного задания зависит от данных информационной базы, то флажок Предопределенное у регламентного задания следует отключать.
Например:
- обмен данными с другими информационными базами должен проводиться с каждой базой по индивидуальному расписанию;
- запуск каждой дополнительной обработки в базе требуется выполнять по отдельному расписанию.
В этих случаях требуется создавать экземпляры регламентных заданий и параметризовать их объектами ИБ (например, узлами ИБ, элементами справочника Дополнительные обработки и т.п.) из кода на встроенном языке с помощью метода РегламентныеЗадания.СоздатьРегламентноеЗадание. При этом в свойстве Наименование необходимо указывать представление объекта, на основании которого создается регламентное задание. Например, есть рассылка отчетов (элемент справочника), расписание, которое было настроено в карточке рассылки и ее автор, тогда добавление на основании нее регламентного задания будет выглядеть так:
// Снимаем ограничение, что только администратор может создавать регламентные задания.
УстановитьПривилегированныйРежим(Истина);
Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание(Метаданные.РегламентныеЗадания.РассылкаОтчетов);
ПараметрыЗадания = Новый Массив;
ПараметрыЗадания.Добавить(РассылкаОтчетов);
Задание.Параметры = ПараметрыЗадания;
Задание.ИмяПользователя = АвторРассылки;
Задание.Использование = Истина;
Задание.Наименование = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр(“ru = ‘Рассылка отчетов: %1′”), СокрЛП(РассылкаОтчетов);
Задание.Расписание = РасписаниеРассылки;
Задание.Записать();
4.2. Если в конфигурации используется подсистема «Регламентные задания» БСП, то необходимо также запрещать интерактивное создание и запуск параметризованных регламентных заданий из формы Регламентные и фоновые задания. Для этого необходимо указать такое задание в процедуре ПриОпределенииНастроекРегламентныхЗаданий общего модуля РегламентныеЗаданияПереопределяемый. Например:
Настройка = Настройки.Добавить();
Настройка.РегламентноеЗадание = Метаданные.РегламентныеЗадания.РассылкаОтчетов;
Настройка.Параметризуется = Истина;
Также выполнить п.6.
5. Во избежание различных конфликтных ситуаций рекомендуется в копиях информационной базы автоматически блокировать все регламентные задания, обращающиеся к внешним ресурсам (рассылка почты, синхронизация данных с другими программами и т.п.). Например, если копия информационной базы была развернута для тестирования или передана в службу технической поддержки.
Если в конфигурации используется подсистема «Регламентные задания» БСП, то для этого необходимо перечислить такие задания в процедуре ПриОпределенииНастроекРегламентныхЗаданий общего модуля РегламентныеЗаданияПереопределяемый. Например:
Настройка = Настройки.Добавить();
Настройка.РегламентноеЗадание = Метаданные.РегламентныеЗадания.РассылкаОтчетов;
Настройка.РаботаетСВнешнимиРесурсами = Истина;
И выполнить п.6.
В этом случае при перемещении информационной базы администратору будет задан вопрос об отключении таких заданий.
6. Если регламентное задание попадает под требования, описанные в пунктах 3.1, 4.2, 5 и используется подсистема «Регламентные задания» БСП, то вначале процедур обработчиков таких заданий необходимо помещать вызов:
ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.<ИмяЗадания>);
Первый параметр при этом заполнять обязательно.
Источник
Регламентные задания в 1С предназначены для выполнения определенных процедур по расписанию, с некоторой периодичностью.
Регламентные задания хранятся в информационной базе, имеют расписание запуска. Сам запуск производится полностью автоматически, если режим работы информационной базы клиент-серверный. Если же база файловая, то необходимо выполнить следующие действия:
- выделить специального пользователя для выполнения регламентных заданий;
- должна быть открыта база под этим пользователем, в которой периодически должна выполняться функция ВыполнитьОбработкуЗаданий().
Создание регламентного задания
Регламентные задания — объект метаданных конфигурации 1С. Находится в группе Общие. Рассмотрим параметры и свойства регламентных заданий.
Имя метода— путь к экспортной процедуре в общем модуле, которая будет выполняться по заданному расписанию. Процедура должна выполняться на сервере. В этом регламентные задания чем-то похожи на объект Подписка на событие.
Ключ — позволяет создать несколько регламентных заданий одного типа. Например, выполнение синхронизации данных между несколькими информационными базами может быть реализовано с помощью одного объекта метаданных РегламентноеЗадание, при этом самих регламентных заданий будет создано несколько (по количеству баз для обмена). Различаться эти регламентные задания будут с помощью свойства Ключ. Одновременно может выполняться только одно задание с одинаковым ключом.
Использование — флаг, показывающий, включено ли регламентное задание.
Предопределенное — здесь можно провести аналогию с предопределенными элементами справочника. Предопределенные элементы создаются в конфигураторе и применяются пользователями в работе. Обычные элементы пользователь создает сам. С регламентными заданиями точно так же: если оно предопределенное, то оно существует и может выполняться по расписанию сразу после создания в конфигураторе. Если же флаг Предопределенное не установлен, то пользователю нужно самому создать одно или несколько регламентных заданий данного типа (например, через Консоль заданий).
Количество повторов при аварийном завершении задания — определяет, сколько раз будет выполнен перезапуск фонового задания, если оно было завершено с ошибкой.
Интервал повтора при аварийном завершении задания — определяет, с какой периодичностью будет выполнен перезапуск фонового задания, если оно было завершено с ошибкой.
Программная работа с регламентными заданиями
В данных примерах будем рассматривать работу с обычными, не предопределенными, регламентными заданиями.
Программное создание регламентного задания
//Создаем задание
Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание(“ИмяРегдаментногоЗадания”);
//Устанавливаем ключ регламентного задания (не обязательно)
Задание.Ключ = “КлючЗадания”;
//Включаем регламентное задание
Задание.Использование = Истина;
//Записываем регламентное задание
Задание.Записать();
Программное получение регламентного задания для изменения параметров
В этом примере предположим, что существует только одно регламентное задание данного типа. Если заданий несколько, то, зная методы работы с массивами, нетрудно внести в код соответствующие изменения.
//Получаем массив с регламентными заданиями нужного типа
Задания=РегламентныеЗадания.ПолучитьРегламентныеЗадания(новый Структура(“Метаданные”, Метаданные.РегламентныеЗадания[“ИмяРегламентногоЗадания”]));
//Если задание существует, то по условию оно одно
Если Задания.Количество()>0 Тогда
Задание=Задания[0];
//Если задания нет, создадим его
Иначе
Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание(“ИмяРегламентногоЗадания”);
КонецЕсли;
//Регламентное задание находится в переменной Задание. Можно изменять его параметры.
Вызов диалога изменения расписания регламентного задания
Для работы с расписанием регламентного задания существует особый тип диалога. Все еще предполагаем, что у нас есть только одно регламентное задание данного типа.
//Получаем массив с регламентными заданиями нужного типа
Задания=РегламентныеЗадания.ПолучитьРегламентныеЗадания(новый Структура(“Метаданные”, Метаданные.РегламентныеЗадания[“ИмяРегламентногоЗадания”]));
//Если задание существует, то по условию оно одно
Если Задания.Количество()>0 Тогда
Задание=Задания[0];
//Если задания нет, создадим его
Иначе
Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание(“ИмяРегламентногоЗадания”);
КонецЕсли;
Расписание=Задание.Расписание;
//Создаем диалог изменения расписания регламентного задания
ДиалогРедактирования= Новый ДиалогРасписанияРегламентногоЗадания (Расписание);
//Показываем диалог пользователю и обрабатываем изменения расписания
Если ДиалогРедактирования.ОткрытьМодально() Тогда
Задание.Расписание = ДиалогРедактирования.Расписание;
Задание.Записать();
КонецЕсли;
Источник
Механизм заданий – один из инструментов администрирования 1С. Он включает:
- регламентные задания, как общий объект конфигурации, необходимый для указания, что именно делать, и с какой периодичностью;
- и фоновые задания, как объект встроенного языка, порождаемый регламентными заданиями.
Рассмотрим соответствующие вопросы экзамена.
***
Вопрос 09.59 экзамена 1С:Профессионал по платформе. Экземпляр регламентного задания:
- может быть создан программно
- может быть создан в форме списка, доступной через команду главного меню программы (“Операции/Регламентные задания”)
- создается всегда только один экземпляр (при создании соответствующего объекта
конфигурации) - определяется только в режиме конфигурирования на закладке Прочее по кнопке
“Состав” - верны ответы 1 и 2
Правильный ответ первый. Если регламентное задание предопределенное (рис.), то задание будет создано в единственном экземпляре с указанным в конфигураторе расписанием. Экземпляры НЕ предопределенных заданий появляются по расписанию, заданному в режиме Предпритятие, программно.
***
Вопрос 09.60 экзамена 1С:Профессионал по платформе. Количество одновременно выполняющихся регламентных заданий может быть:
- любым без ограничения
- только одно задание на информационную базу
- только по одному заданию на пользовательский сеанс
- любое количество, но не будут выполняться два задания с одинаковым ключем и
именем метода - любое количество, но не будут выполняться два задания с одинаковым ключем и
наименованием - любое количество, но не будут выполняться два задания с одинаковым ключем и
связанные с одним и тем же объектом метаданных
Правильный ответ шестой. Ключ – свойство регламентного задания, которое позволяет сгруппировать несколько однотипных заданий. Одновременно может быть запущено только одно задание с одним значением ключа (пустое значение не в счет). Также, одновременно исполняется только одно рег.задание над конкретным объектом, во избежание коллизий.
***
Вопрос 09.62 экзамена 1С:Профессионал по платформе. В качестве метода регламентного задания может использоваться процедура у которой:
- не должно быть параметров
- может быть только один параметр (список значений)
- может быть только один параметр (структура)
- может быть только один параметр (массив)
- может быть любое количество параметров
Правильный ответ пятый. Число параметров метода регламентного задания соответствует числу параметров самого регламентного задания.
***
Вопрос 09.63 экзамена 1С:Профессионал по платформе. Для создания регламентного задания пользователь должен обладать:
- правами администратора
- правами на использование данного объекта конфигурации (настраивается в роли)
- правами на создание новых экземпляров данного объекта конфигурации (настраивается в роли)
- любыми правами, метод регламентного задания исполняется в привилегированном
режиме
Правильный ответ первый, только администраторы вправе.
***
Вопрос 09.64 экзамена 1С:Профессионал по платформе. Если регламентное задание определено в конфигураторе (в соответствующем объекте конфигурации) как предопределенное, то для него характерно (выберите наиболее полный ответ):
- нельзя создать не предопределенный экземпляр регламентного задания с привязкой
к объекту метаданных предопределенного регламентного задания - предопределенный экземпляр регламентного задания нельзя пометить на удаление и
удалить - только предопределенные экземпляры регламентных заданий хранятся в информационной базе, не предопределенные экземпляры являются сеансовыми объектами и в
базе не хранятся - верны ответы 1 и 2
- верны ответы 2 и 3
- верны ответы 1, 2, 3
Правильный ответ второй. Предопределенные экземпляры регламентных заданий можно изменять, но нельзя удалять. Они всегда будут доступны в списке шаблонов:
***
Вопрос 09.67 экзамена 1С:Профессионал по платформе. Если в качестве метода регламентного задания используется функция,
то:
- возвращаемое функцией значение игнорируется
- при попытке исполнения задания возникает ошибка
- система будет ожидать исполнения данного задания (исполнение будет происходить
не асинхронно) - значение будет возвращено в соответствующий параметр регламентного задания
Правильный ответ первый.
***
Вопрос 09.61 экзамена 1С:Профессионал по платформе. Как могут быть связаны между собой регламентные и фоновые задания?
- Регламентное задание может породить фоновое задание
- Регламентное задание в обязательном порядке порождает фоновое задание
- Фоновое задание в обязательном порядке порождает регламентное задание
- Нет никакой взаимосвязи
Правильный ответ второй – фоновое задание это объект, порождаемый регламентным, и он обязательнем к созданию, иначе само регламентное задание теряет смысл.
***
Вопрос 09.65 экзамена 1С:Профессионал по платформе. Для обеспечения работы регламентных и фоновых заданий необходимо:
- наличие запуска 1С:Предприятие с установленным при запуске флагом “Планировщик”
- наличие запуска 1С:Предприятие с периодически исполняющимся соответствующим методом системы
- наличие запуска 1С:Предприятие с периодически исполняющимся соответствующим методом системы (но только в файловом варианте функционирования системы)
- как в файловом, так и в клиент-серверном вариантах нет необходимости в запуске
экземпляра 1С:Предприятие
На практике, правильный ответ третий. В клиент-серверном варианте работы запуск регламентных заданий по расписанию осуществляет менеджер кластера. Таким образом, даже если с информационной базой не установлено ни одного клиентского соединения, регламентные задания будут выполняться (при условии, что они не запрещены для конкретной информационной базы). В файловом варианте работы для автоматического запуска регламентных заданий необходимо наличие выделенного клиентского соединения, используемого в качестве планировщика заданий. В этом соединении должна быть запущена обработка ожидания, с некоторой периодичностью выполняющая вызов метода встроенного языка ВыполнитьОбработкуЗаданий().
По ответам, верный ответ четвертый.
***
Вопрос 09.57 экзамена 1С:Профессионал по платформе. Фоновые задания позволяют:
- выполнять процедуру по расписанию
- выполнять процедуру асинхронно
- производить перезапуск в случае аварийного завершения
- верны ответы 1 и 2
- верны ответы 2 и 3
- верны ответы 1, 2, 3
Правильный ответ второй. Асинхронно – значит, не дожидаясь завершения процедуры.
***
Вопрос 09.58 экзамена 1С:Профессионал по платформе. Количество одновременно запущенных фоновых заданий может быть:
- любым без ограничения
- только одно задание на информационную базу
- только по одному заданию на пользовательский сеанс
- любое количество, но нельзя запустить два задания с одинаковым ключем и именем
метода - любое количество, но нельзя запустить два задания с одинаковым ключем и наименованием
- любое количество, но нельзя запустить два задания с одинаковым ключем и связанные с одним и тем же объектом метаданных
Правильный ответ четвертый.
***
Вопрос 09.66 экзамена 1С:Профессионал по платформе. Завершившиеся фоновые задания:
- сохраняется в информационной базе
- являются сеансовыми объектами, хранятся некоторое время (в информационной базе не сохраняются)
- не хранятся ни в каком виде
Правильный ответ шестой – фоновое задание это объект встроенного языка.который существует только на время сеанса.
Источник