Интернет. Настройки. Тарифы. Телефон. Услуги

Настройка регламентных заданий 1с 8.3. Регламентные и фоновые задания

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

Недавно я разместил статью: пришло время это автоматизировать:

Регламентные и фоновые задания

Механизм заданий предназначен для выполнения какой-либо прикладной или функциональности по расписанию или асинхронно.

Механизм заданий решает следующие задачи:

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

Механизм заданий состоит из следующих компонентов:

  • Метаданных регламентных заданий;
  • Регламентных заданий;
  • Фоновых заданий;
  • Планировщика заданий.

Фоновые задания & предназначены для выполнения прикладных задач асинхронно. Фоновые задания реализуются средствами встроенного языка.

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

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

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

С описанием, думаю, хватит - приступим к реализации:

Создание регламентного задания

Имя метода – путь к процедуре, которая будет выполняться в фоновом задании по заданному расписанию. Процедура должна находиться в общем модуле. Рекомендуется не использовать типовые общие модули, а создать свой. Не забудьте, что фоновые задания исполняются на сервере!

Использование – признак использования регламентного задания.

Предопределенное – указывает, является ли регламентное задание предопределенным.

Если хотите что бы регламентное задание заработало сразу после помещения в БД, укажите признак Предопределенное . В противном случае вам необходимо будет использовать обработку “Консоль заданий” или вызывать запуск задания программно.

Количество повторов при аварийном завершении задания – сколько раз выполнен перезапуск фонового задания, если оно было выполнено с ошибкой.

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

Настройка расписания

Расписание выполнения задания:

Каждый час, только один день ПериодПовтораДней = 0, ПериодПовтораВТечениеДня = 3600
Каждый день один раз в день ПериодПовтораДней = 1, ПериодПовтораВТечениеДня = 0
Один день, один раз ПериодПовтораДней = 0
Через день один раз в день ПериодПовтораДней = 2
Каждый час с 01.00 до 07.00 каждый день ПериодПовтораДней = 1ПериодПовтораВТечениеДня = 3600ВремяНачала = 01.00

ВремяКонца = 07.00

Каждую субботу и воскресенье в 09.00 ПериодПовтораДней = 1ДниНедели = 6, 7ВремяНачала = 09.00
Каждый день одну неделю, неделя пропуска ПериодПовтораДней = 1ПериодНедель = 2
В 01.00 один раз ВремяНачала = 01.00
Последнее число каждого месяца в 9:00. ПериодПовтораДней = 1ДеньВМесяце = -1ВремяНачала = 09.00
Пятое число каждого месяца в 9:00 ПериодПовтораДней = 1ДеньВМесяце = 5ВремяНачала = 09.00
Вторая среда каждого месяца в 9:00 ПериодПовтораДней = 1ДеньНеделиВМесяце = 2ДниНедели = 3

ВремяНачала = 09.00

Особенности выполнения фоновых заданий файловом и клиент-серверном вариантах

Механизмы выполнения фоновых заданий в файловом и клиент-серверном вариантах различаются.

В файловом варианте необходимо создать выделенный клиентский процесс, который будет заниматься выполнением фоновых заданий. Для этого в клиентском процессе должна периодически вызываться функция глобального контекста ВыполнитьОбработкуЗаданий. Только один клиентский процесс на информационную базу должен выполнять обработку фоновых заданий (и, соответственно, вызывать данную функцию). Если клиентского процесса для обработки фоновых заданий не создано, то при программном доступе к механизму заданий будет выдана ошибка «Менеджер заданий не активен». Не рекомендуется клиентский процесс, выполняющий обработку фоновых заданий, использовать для других функций.

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

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

В клиент-серверном варианте имеется возможность блокирования выполнения регламентных заданий. Блокирование выполнения регламентных заданий происходит в следующих случаях:

  • На информационную базу установлена явная блокировка регламентных заданий. Блокировка может быть установлена через консоль кластера;
  • На информационную базу установлена блокировка соединения. Блокировка может быть установлена через консоль кластера;
  • Из встроенного языка вызван метод УстановитьМонопольныйРежим() с параметром Истина;
  • В некоторых других случаях (например, при обновлении конфигурации базы данных).

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

Нередко при ведении учета возникает необходимость в периодическом выполнении тех или иных действий без вмешательства пользователя. Регламентные и фоновые задания в 1С – те механизмы, которые предусмотрены для этой цели в восьмой версии программы и позволяют:

  • Настроить своевременное допреведение документов;
  • Рассчитать остатки и итоги;
  • Обеспечить периодичность почтовой рассылки;
  • Проверить и удалить неактуальные данные.

Фоновое и регламентное задание – что это и где настраивается

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

Фоновое задание – действие, порожденное регламентной операцией и не требующее непосредственного участия пользователя.

Создание регламентного задания происходит в режиме конфигуратора:

  • В окне дерева конфигурации находим соответствующую ветку (Рис.1);
  • Нажимаем кнопку добавить;
  • В открывшемся окне необходимо задать имя, позволяющее идентифицировать объект в конфигурации;

Рис.2

  • Напротив надписи «Расписание» (Рис. 2) есть надпись «Открыть», нажатие на которую открывает окно настройки времени и периодичности выполнения обрабочика (Рис.3);

Рис.3

  • Также необходимо заполнить «Имя метода» (сюда будет введено название процедуры, вызываемой из общего модуля и описывающей алгоритм поведения программы);
  • Поля «Наименование» и «Ключ» позволяют группировать объекты;
  • Установленный флажок «Использование» указывает на активность регламентной операции;
  • «Предопределенное» следует установить, если обработчик должен запуститься сразу после его добавления в базу в противном случае запуск можно произвести из соответствующей обработки (о ней ниже);
  • Параметры «Количество повторов» и «Интервал повторов» описывают поведение программы в случае возникновения исключительной ситуации при выполнении фонового задания.

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

Особенности фоновых заданий

Основная особенность этого механизма заключается в том, что фоновый процесс выполняется асинхронно.

Что же это значит. Дело в том, что при синхронной модели работы, в случае выполнения, какого либо алгоритма происходит блокировка пользовательского интерфейса. В нашем случае пользователь может продолжать вносить и редактировать данные, даже если процедура запущена. Асинхронная модель программирования предполагает разделение вычислительных потоков.

Таким образом, фоновые задания в 1С могут порождать свои процессы, распределяя вычисления по различным серверам, входящим в один кластер.

Особенности работы в клиент-серверном режиме

  • Планирование выполнения и контроль осуществляется планировщиком из кластера серверов;
  • В случае появления запроса на выполнение, планировщик ищет рабочие процессы кластера с минимальной загрузкой и раздает им задачи к выполнению;
  • Каждый процесс может выполнять несколько параллельных вычислений;
  • После поступления задания процесс соединяется с базой и выполняет в ней алгоритм;
  • О результатах процесс сообщает планировщику.

Фоновые задания в файловом режиме

До версии платформы 8.3.3.641 работа с фоновыми заданиями в файловом варианте представляла некоторые трудности:

  1. Необходимо было запускать отдельный сеанс, который бы круглосуточно работал, заменяя собой планировщик;
  2. Этот сеанс должен был периодически выполнять метод ВыполнитьОбработкуЗаданий().

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

Рис.4

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

Как отключить регламентные задания

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

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

Кроме этого на дисках ИТС имеется специальная обработка «Консоль заданий», позволяющая редактировать расписание фоновых процессов и менять их активность.

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

Недавно я разместил статью: пришло время это автоматизировать:

Регламентные и фоновые задания

Механизм заданий предназначен для выполнения какой-либо прикладной или функциональности по расписанию или асинхронно.

Механизм заданий решает следующие задачи:

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

Механизм заданий состоит из следующих компонентов:

  • Метаданных регламентных заданий;
  • Регламентных заданий;
  • Фоновых заданий;
  • Планировщика заданий.

Фоновые задания & предназначены для выполнения прикладных задач асинхронно. Фоновые задания реализуются средствами встроенного языка.

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

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

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

С описанием, думаю, хватит - приступим к реализации:

Создание регламентного задания

Имя метода – путь к процедуре, которая будет выполняться в фоновом задании по заданному расписанию. Процедура должна находиться в общем модуле. Рекомендуется не использовать типовые общие модули, а создать свой. Не забудьте, что фоновые задания исполняются на сервере!

Использование – признак использования регламентного задания.

Предопределенное – указывает, является ли регламентное задание предопределенным.

Если хотите что бы регламентное задание заработало сразу после помещения в БД, укажите признак Предопределенное . В противном случае вам необходимо будет использовать обработку “Консоль заданий” или вызывать запуск задания программно.

Количество повторов при аварийном завершении задания – сколько раз выполнен перезапуск фонового задания, если оно было выполнено с ошибкой.

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

Настройка расписания

Расписание выполнения задания:

Каждый час, только один день ПериодПовтораДней = 0, ПериодПовтораВТечениеДня = 3600
Каждый день один раз в день ПериодПовтораДней = 1, ПериодПовтораВТечениеДня = 0
Один день, один раз ПериодПовтораДней = 0
Через день один раз в день ПериодПовтораДней = 2
Каждый час с 01.00 до 07.00 каждый день ПериодПовтораДней = 1ПериодПовтораВТечениеДня = 3600ВремяНачала = 01.00

ВремяКонца = 07.00

Каждую субботу и воскресенье в 09.00 ПериодПовтораДней = 1ДниНедели = 6, 7ВремяНачала = 09.00
Каждый день одну неделю, неделя пропуска ПериодПовтораДней = 1ПериодНедель = 2
В 01.00 один раз ВремяНачала = 01.00
Последнее число каждого месяца в 9:00. ПериодПовтораДней = 1ДеньВМесяце = -1ВремяНачала = 09.00
Пятое число каждого месяца в 9:00 ПериодПовтораДней = 1ДеньВМесяце = 5ВремяНачала = 09.00
Вторая среда каждого месяца в 9:00 ПериодПовтораДней = 1ДеньНеделиВМесяце = 2ДниНедели = 3

ВремяНачала = 09.00

Особенности выполнения фоновых заданий файловом и клиент-серверном вариантах

Механизмы выполнения фоновых заданий в файловом и клиент-серверном вариантах различаются.

В файловом варианте необходимо создать выделенный клиентский процесс, который будет заниматься выполнением фоновых заданий. Для этого в клиентском процессе должна периодически вызываться функция глобального контекста ВыполнитьОбработкуЗаданий. Только один клиентский процесс на информационную базу должен выполнять обработку фоновых заданий (и, соответственно, вызывать данную функцию). Если клиентского процесса для обработки фоновых заданий не создано, то при программном доступе к механизму заданий будет выдана ошибка «Менеджер заданий не активен». Не рекомендуется клиентский процесс, выполняющий обработку фоновых заданий, использовать для других функций.

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

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

В клиент-серверном варианте имеется возможность блокирования выполнения регламентных заданий. Блокирование выполнения регламентных заданий происходит в следующих случаях:

  • На информационную базу установлена явная блокировка регламентных заданий. Блокировка может быть установлена через консоль кластера;
  • На информационную базу установлена блокировка соединения. Блокировка может быть установлена через консоль кластера;
  • Из встроенного языка вызван метод УстановитьМонопольныйРежим() с параметром Истина;
  • В некоторых других случаях (например, при обновлении конфигурации базы данных).

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

Как правило фоновые задания в 1C:Предприятии запускаются из-под регламентного.

То есть при старте регламентное задание порождает фоновое. Но в случае необходимости
мы можем запустить фоновое задание и программно.
При этом оно может использовать любые методы и свойства доступные на сервере, т.к. и выполняется оно на сервере.
По сути само фоновое задание никаких действий не производит. Оно лишь запускает
на выполнение процедуру из общего модуля. Если в процедуре используются параметры,
их также можно передавать в момент запуска фонового задания.

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

Поскольку
для фонового задания нам нужна процедура общего модуля, создадим этот общий модуль
с возможностью выполнения его процедур на сервере.

Создадим в этом общем модуле процедуру, которая будет делать запись в журнал
регистрации

Процедура ЗаписьВЖурналРегистрации(пар_ИмяСобытия, пар_Комментарий) Экспорт ЗаписьЖурналаРегистрации(пар_ИмяСобытия, , , , пар_Комментарий) ; КонецПроцедуры

Как видим в процедуре есть параметры. Значит фоновое задание должно их будет каким-то
образом в процедуру передать.

Теперь создадим обработку с помощью которой будем запускать фоновое задание.

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


В модуле формы пишем следующий код:

&НаСервере Процедура ЗаписьЖРНаСервере() МассивПараметров = Новый Массив; МассивПараметров. Добавить("Событие. Фоновое задание отработало успешно" ) ; МассивПараметров. Добавить("Комментарий. Проверка работы фонового задания" ) ; ФоновыеЗадания. Выполнить ("сайт_РегламентныеЗадания.ЗаписьВЖурналРегистрации" , МассивПараметров) ; КонецПроцедуры &НаКлиенте Процедура ЗаписьЖР(Команда) ЗаписьЖРНаСервере() ; КонецПроцедуры

Запускается фоновое задание при помощи метода Выполнить()
менеджера фоновых заданий.

В качестве первого параметра этого метода указывается
имя общего модуля и имя процедуры, которая будет выполняться, тип — строка.
Второй параметр — это массив со значениями парметров для вызываемой процедуры.
Порядок следования элементов в массиве должен совпадать с порядком параметров в
процедуре.
Могут еще указываться Ключ и Наименование фонового задания.

А теперь протестируем работу обработки. Откроем ее в режиме 1С:Предприятия и
запустим на выполнение. Далее открываем журнал регистрации и видим, что задание
отработало успешно и сделало в журнале соответствующую запись.

Периодическая очистка регистров (например, регистра сведений «Версии объектов» в конфигурации УПП), выполнение расчетов по расписанию, допроведение документов в определенное время – вот далеко не полный список действий, которые можно реализовать с помощью регламентных заданий 1С.

Создание задания

Мы не ставим своей целью описывать код исполняемого модуля, мы покажем общие принципы функционирования и создания регламентного задания.

Регламентное задание незаменимо:

  1. Если в поставленной задаче в качестве одного из условий присутствует необходимость периодического выполнения определенного алгоритма;
  2. Если код должен выполняться независимо от действий операторов и пользователей базы;
  3. Если запуск исполняемой процедуры не зависит от внешних событий, происходящих с объектами информационной базы.

Для его создания необходимо зайти в информационную базу в режиме «Конфигуратор». Далее находим в дереве конфигурации ветку «Регламентные задания», они находятся на закладке «Общие» и нажимаем кнопку «Добавить» (Рис.1)

Давайте подробнее разберем окно его свойств (Рис.2) :
Рис.2

  1. Имя, синоним и комментарий – правила и принципы заполнения этих полей аналогичны для всех объектов конфигурации и описывать их еще раз нет необходимости;
  2. Имя метода – процедура общего модуля, которая максимально точно описывает необходимый алгоритм (нажатие на кнопку выбора открывает доступные процедуры, представление которых состоит из имени общего модуля и наименования процедуры в различных колонках таблицы);
  3. Ключ – определяет не столько уникальность регламентного задания, сколько уникальность фонового процесса, запущенного на основании задания, имеет ограничение по длине;
  4. Расписание – описанию этого элемента мы посвятим отдельный абзац нашей статьи;
  5. Использование – установка данного флажка определяет активность задания, ИСТИНА означает, что задание будет запускаться и выполняться по расписанию;
  6. Предопределенное – если у элемента установлена эта галочка, эти задания нельзя удалить, их создание происходит автоматически при сохранении конфигурации в базу;
  7. Количество повторов – если в процессе выполнения возникла исключительная ситуация, оно будет перезапущено, чтобы не возникла бесконечная зацикленность, программа ограничивает количество перезапусков;
  8. Интервал повтора – время в секундах между повторными запусками аварийно завершенных заданий.

Давайте более подробно рассмотрим расписание.

Расписание регламентного задания

Рис.3

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

Закладка «Общие»:

  • Дата начала выполнения задания;
  • Дата окончания обработки;
  • Периодичность повторения задания.

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

Закладка «Дневное» (Рис.4)
Рис.4

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

Закладки «Дневные» и «Недельные» содержат информацию для соответствующих периодов.

Особенности функционирования

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

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

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

Полностью отключить выполнение фоновых и регламентных работ в базе, работающей в файловом режиме можно удалив или переименовав файл DoNotCopy.txt в папке с базой. Наличие этого файла говорит платформе о том, что работы производятся в оригинале, а не в копии базы.

Кроме того в стандартных поставках 1С появилась возможность управления плановыми работами напрямую из программы, не заходя в «Конфигуратор». В конфигурации «ЗУП», версии 3.1.3.223, открыть форму управления можно из меню Администрирование->Обслуживание->Регламентные операции->Регламентные и фоновые задания (Рис.5)
Рис.5

Открывшаяся форма имеет интуитивно понятный интерфейс и позволяет:


Можно также запустить выполнение задачи непосредственно из формы.