Создание регламентных заданий
страницаСоздание регламентных заданий
В режиме «Конфигуратор»
Сначала создадим первое регламентное задание по обновлению индекса.
Раскроем ветвь Общие дерева объектов конфигурации. Выделим строку Регламентные задания и добавим новый объект конфигурации Регламентное задание. Зададим его имя - ОбновлениеИндекса (рис. 20.1).

Рис. 20.1. Создание регламентного задания
После этого создадим процедуру, которая и будет выполнять обновление полнотекстового индекса нашей информационной базы.
В качестве такой процедуры может выступать любая процедура или функция неглобального общего модуля, которую можно вызвать на сервере (у общего модуля должно быть установлено свойство Сервер).
Добавим в конфигурацию общий модуль с именем РегламентныеПроцедуры и установим флажок Вызов сервера для видимости его экспортных процедур и функций (рис. 20.2).

Рис. 20.2. Свойства общего модуля
Вернемся к свойствам регламентного задания ОбновлениеИндекса. Нажмем кнопку открытия
у поля ввода Имя метода.
Система откроет окно выбора общего модуля (рис. 20.3).

Рис. 20.3. Выбор обработчика события
Выберем модуль РегламентныеПроцедуры. В этом модуле будет создан шаблон процедуры ОбновлениеИндекса(). Заполним его следующим образом (листинг 20.1).
Листинг 20.1. Процедура обновления индекса
Если ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска() = РежимПолнотекстовогоПоиска.Разрешить Тогда
Если Не ПолнотекстовыйПоиск.ИндексАктуален() Тогда
ПолнотекстовыйПоиск.ОбновитьИндекс( , Истина);
КонецЕсли;
КонецЕсли;
Сначала в этой процедуре проверяется возможность выполнения операций, связанных с полнотекстовым поиском (ведь они могут быть запрещены, например, интерактивно, см. рис. 19.4).
Если операции полнотекстового поиска разрешены, проверяется, актуален ли полнотекстовый индекс (если после последнего индексирования данные, подлежащие полнотекстовому индексированию, не изменялись, то индекс будет актуален и повторное индексирование не требуется).
В случае необходимости индексирования вызывается метод ОбновитьИндекс() менеджера полнотекстового поиска.
Первый параметр этого метода отвечает за слияние индексов и по умолчанию имеет значение Ложь. Это значит, что слияние индексов выполняться не будет.
Второй параметр метода определяет, какое количество данных будет индексироваться: сразу все, которые необходимо проиндексировать, или порциями. Наша задача - выполнить индексирование как можно быстрее, поэтому указываем, что индексирование будет выполняться порциями (значение Истина).
Размер одной порции фиксирован - 10 000 объектов. Таким образом, если в данный момент требуется проиндексировать, например, 15 000 объектов, то при вызове этого метода из них будет проиндексировано только 10 000 (первая порция), а оставшиеся объекты будут проиндексированы при следующем вызове этого метода (при следующем запуске нашего регламентного задания).
Перейдем к составлению расписания запуска регламентного задания.
Нажмем на ссылку Открыть в свойствах регламентного задания (в строке Расписание), и система откроет диалог редактирования расписания (рис. 20.4).

Рис. 20.4. Диалог редактирования расписания
Диалог содержит несколько закладок, которые позволяют задать различные виды расписаний; в нижней части диалога отображается итоговый результат всех установок.
Наша задача - запускать регламентное задание ежедневно, каждую минуту.
Поэтому прежде всего на закладке Общие укажем, что запуск задания должен повторяться каждый день (Повторять каждые: 1 дн.), рис. 20.5.

Рис. 20.5. Запуск задания каждый день
Теперь перейдем на закладку Дневное и зададим порядок запуска задания в течение дня.
Укажем, что запуск задания должен повторяться каждые 60 секунд (Повторять через: 60 сек.), рис. 20.6.

Рис. 20.6. Запуск задания каждую минуту
В нижней части диалога отображено созданное нами расписание запуска: Выполнять: каждый день; каждые 60 сек.
Вроде бы мы получили то, что хотели: регламентное задание запускается ежедневно, каждую минуту.
Однако наше ООО «На все руки мастер» не работает круглосуточно, и запуск этого задания в ночное время будет явно бесполезным - данные в базе данных не изменяются. В то же время вполне возможна ситуация, когда некоторые сотрудники задерживаются после окончания рабочего дня.
Поэтому доработаем расписание следующим образом: укажем Время начала: 08:00 (рис. 20.7).

Рис. 20.7. Указание времени начала запуска
В результате запуск задания будет выполняться не круглые сутки, а только с 8 часов утра. Так как время окончания запуска не указано, запуск задания будет прекращен по окончании текущих суток. Таким образом, с 00:00 до 08:00 часов запуск задания выполняться не будет.
На этом создание расписания регламентного задания закончено, нажмем ОK.
В качестве последнего штриха установим в свойствах регламентного задания флажок Предопределенное (рис. 20.8).

Рис. 20.8. Предопределенное регламентное задание
Установка этого свойства означает, что после запуска системы в режиме 1С:Предприятие будет создано одно предопределенное регламентное задание. В противном случае такое задание пришлось бы создавать средствами встроенного языка.
На этом создание регламентного задания Обновление индекса завершено.
Теперь по аналогии создадим второе регламентное задание - СлияниеИндексов. В палитре его свойств очистим поле ввода Имя метода (если оно уже заполнено) и нажмем кнопку открытия
. В открывшемся диалоге выберем модуль РегламентныеПроцедуры.
В этом модуле будет создан шаблон процедуры СлияниеИндексов(). Заполним его следующим образом (листинг 20.2).
Листинг 20.2. Процедура «СлияниеИндексов»
Если ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска() = РежимПолнотекстовогоПоиска.Разрешить Тогда
Если Не ПолнотекстовыйПоиск.ИндексАктуален() Тогда
ПолнотекстовыйПоиск.ОбновитьИндекс(Истина);
КонецЕсли;
КонецЕсли;
Эта процедура аналогична показанной в листинге 20.1, за исключением того, что при обновлении индекса выполняется слияние индексов (первый параметр Истина), и индексирование выполняется целиком, для всех данных (второй параметр Ложь по умолчанию), поскольку в данном случае время выполнения индексирования для нас не критично.
В свойствах задания установим также флажок Предопределенное и приступим к редактированию расписания. Для этого нажмем на ссылку Открыть в свойствах регламентного задания (в строке Расписание).
На закладке Общее укажем, что задание будет запускаться каждый день (Повторять каждые: 1 дн.), а на закладке Дневное укажем время начала выполнения задания (Время начала: 01:00), рис. 20.9.

Рис. 20.9. Расписание задания «СлияниеИндексов»
В результате мы получим следующее расписание запуска регламентного задания: Выполнять: каждый день; с 1:00 один раз в день.
На этом создание регламентного задания СлияниеИндексов завершено, нажмем ОK.