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

В данной статье я расскажу о том как добавлять новые или уже существующие базы данных на сервер «1С:Предприятия» 8.3 (для других версий платформы — 8.1 и 8.2 действия аналогичны). Будут рассмотрены варианты добавления информационной базы как из , так и через программу администрирования серверов «1С:Предприятия» (в ОС семейства Windows). А также затронуты некоторые вопросы администрирования информационных баз в кластере серверов «1С:Предприятия».

1. Добавление информационной базы из окна запуска «1С:Предприятие»

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

Запуститься мастер добавления информационной базы, выберем пункт «Создание новый информационной базы » установив соответствующий переключатель и нажмем «Далее ».

В списке установленных шаблонов конфигураций выберем необходимый нам шаблон и снова нажмем «Далее ».

Введем имя базы данных, как она будет отображаться в списке информационных баз, тип расположения укажем «На сервере 1С:Предприятие » и нажимаем «Далее ».

На следующей странице необходимо указать параметры создаваемой информационной базы, а именно:

(В данном примере параметры выбраны в соответствии с параметрами установки сервера «1С:Предприятия», принятыми в статье )

  • Имя кластера серверов 1С:Предприятия — как правило, совпадает с сетевым именем компьютера, где установлен сервер «1С:Предприятия» (центральный кластер сервера);
  • Имя создаваемой базы в кластере — имя по которому будет происходить обращаться к информационной базе. Должно быть уникальным в пределах данного кластера;
  • Защищенное соединение — по умолчанию отключаем;
  • Тип СУБД на которой будет храниться база данных — в данном примере MS SQL Server;
  • Имя сервера базы данных — как правило, состоит из сетевого именем компьютера, где установлен сервер баз данных и имени экземпляра сервера (если есть), разделенными знаком «\»;
  • Имя базы данных на сервере баз данных — для удобства будем придерживаться правила, что имя базы данных должно совпадать с именем информационной базы в кластере. Кроме того, в случае использования MS SQL Server, первый символ в имени базы данных может быть только буквой латинского алфавита или символом «_», последующие символы могут быть только буковой латинского алфавита, цифрой или символами «_» и «&», имя должно быть уникальным в пределах данного экземпляра сервера баз данных и не превышать 63 символов. Если база данных уже существует на сервере, будет использоваться текущая база, если нет и установлен флаг «Создать базу данных в случае ее отсутствия », произойдет добавление новой базы на сервер баз данных.
  • Пользователь базы данных — пользователь СУБД, который станет владельцем базы на сервере в случае создания новой базы данных или имеющий права для работы с существующей;
  • Пароль пользователя — пароль пользователя от лица которого будет осуществляться доступ к базе данных;
  • Смещение дат — 0 или 2000. Данный параметр определяет число лет, которое будет прибавляться к датам при их сохранении в базе данных Microsoft SQL Server и вычитаться при их извлечении. Дело в том, что тип DATATIME, используемый Microsoft SQL Server, позволяет хранить даты в диапазоне с 1 января 1753 года по 31 декабря 9999 года. Если при работе с информационной базой может возникнуть необходимость хранения дат, предшествующих нижней границе данного диапазона, смещение дат следует выбрать 2000. Кроме того, если в прикладном решении используются регистры накопления или регистры бухгалтерии (а скорее всего так оно и будет) также в «поле смещение» дат необходимо установить значение 2000.
  • Установить блокировку регламентных заданий — установка флага позволяет запретить выполнения регламентных заданий на сервере для данной информационной базы. Следует устанавливать в случае создания тестовых информационных баз, где выполнение регламентных заданий не несет никакой практической нагрузки.

Установив все параметры информационной базы нажимаем «Далее ».

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

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

2. Добавление информационной базы из консоли администрирования серверов «1С:Предприятия»

Теперь добавим еще одну информационную базу в кластер серверов, но уже через оснастку «Администрирование серверов 1С:Предприятия » (предварительно ). Найти ее можно:

Ну и в любом случае оснастку можно запустить выполнив файл «1CV8 Servers.msc » располагающийся в каталоге установки «1С:Предприятие» в подкаталоге «common ».

Если оснастка «» запускается на том же самом компьютере, где установлен сервер «1С:Предприятия», то в дереве слева, в ветке с сетевым именем текущего компьютера, мы должны увидеть данный кластер серверов под названием «Локальный кластер ». Раскрыв вкладку «Информационные базы » увидим все информационные базы в данном кластере серверов (например базу данных созданную через окно запуска «1С:Предприятие» на предыдущем шаге). Для добавления новой информационной базы кликнем правой кнопкой мыши по данной вкладке, в контекстном меню выберем «Создать » — «Информационная база ».

Откроется окно параметров создаваемой информационной базы. Список параметров тот же самый, что был описан выше в п.1 данной инструкции. Заполнив все параметры нажимаем «ОК » для запуска процесса создания новой информационной базы. При этом будет создана новая информационная база на на сервере «1С:Предприятия» и, в случае необходимости, создана новая база данных на сервере баз данных.

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

А если зайти в программу «Среда SQL Server Management Studio » и подключиться к текущему экземпляру MS SQL Server, можно увидеть созданные на предыдущих шагах базы данных.

3. Свойства информационной базы

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

Как видно, к списку уже знакомых нам параметров добавились:

  • Блокировка начала сеансов включена — флаг, позволяющий включить блокировку начала сеансов с информационной базой, если флаг установлен, то:
    • Существующие сеансы могут продолжать работу, устанавливать новые соединения, а также запускать фоновые задания;
    • Установка новых сеансов и соединений с информационной базой запрещено.
  • Начало и Конец — время действия блокировки сеансов;
  • Сообщение — текст, который будет частью сообщения об ошибке при попытке установки соединения с заблокированной информационной базой;
  • Код разрешения — строка которая должна быть добавлена к параметру /UC при запуске «1С:Предприятие» для соединения с информационной базой вопреки блокировке;
  • Параметры блокировки — произвольный текст, который может использоваться в конфигурациях для различных целей;
  • Внешнее управление сеансами — строка, описывающая параметры Web-сервиса внешнего управления сеансами;
  • Обязательное использование внешнего управления — если флаг установлен, то при недоступности Web-сервиса внешнего управления сеансами происходит ошибка и установка подключения к информационной базе невозможна;
  • Профиль безопасности — в случае указания имени профиля прикладное решение начинает работать с учетом ограничений, которые накладывает указанный профиль безопасности;
  • Профиль безопасности безопасного режима — то же, что и профиль безопасности, но ограничения будут накладываться на фрагменты прикладного решения, работающие в безопасном режиме.

Изменив необходимые параметры нажимаем «Применить » для сохранения изменений или «ОК » для сохранения и закрытия окна свойств информационной базы.

4. Добавление существующей информационной базы в список информационных базы окна запуска «1С:Предприятие»

Ну и наконец, нам осталось только добавить созданную с помощью оснастки «Администрирование серверов 1С Предприятия » информационную базу в список информационных баз окна запуска «1С:Предприятие». Для чего в данном окне нажимаем «Добавить… » и в запустившемся мастере добавления информационной базы/группы выбираем соответствующий пункт и нажимаем «Далее ».

Вводим имя информационной базы, как она будет отображаться в списке, тип расположения информационной базы выбираем «На сервере 1С:Предприятия » и снова жмем «Далее ».

Вводим адрес кластера серверов «1С:Предприятия» и имя информационной базы, как оно задано в данном кластере. Нажимаем «Далее ».

Ну и наконец задаем параметры запуска информационной базы и нажимаем «Готово » для завершения работы мастера.

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

Помогла ли Вам данная статья?

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

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

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

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


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

Какие же средства мы имеем для управления фоновыми заданиями? Этим средством является объект метаданных"МенеджерФоновыхЗадания" . У этого объекта есть метод "Выполнить" , с помощью этого метода, как раз и запускается фоновое задание.

Имеет он следующие параметры:
"ИмяМетода" - имя процедуры или функции, которую нужно выполнить, причем это должна быть процедура или функция серверного контекста;

"Параметры" - массив параметров, количество элементов которого должно соответствовать количеству параметров нашей процедуры/функции, указанной в параметре "ИмяМетода" ;

"Ключ" - некий ключ уникальности, представляющий из себя строчку, по которой система понимает нужно ли запускать фоновое задание либо такое задание уже запущено;

"Наименование" - здесь можно указать произвольное описание нашего метода.

Возвращаемым значением является объект "ФоновоеЗадание" , содержащий текущее имя метода, текущий ключ и еще несколько свойств и методов. Одним из таких методов является метод "ОжидатьЗавершения" . Его задачей является то, что мы может указать системе, чтобы ничего не производилось пока не будет завершено фоновое задание.

Фоновое задание 1С 8.2, 8.3 - Пример использования

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

Для этого:

1. Создадим общий модуль "ОбработчикиФоновыхЗаданий" , который будет компилироваться на стороне сервера;


2. Опишем в нем экспортную процедуру "ПроизветиФоновоеВычисление(Параметр)" , которая принимает один параметр строкового типа;

Процедура ПроизветиФоновоеВычисление(Параметр) Экспорт ВремНач = ТекущаяДата() ; Пока ТекущаяДата() - ВремяНач < = 6 Цикл КонецЦикла ; КонецПроцедуры Процедура КнНажатие() ОбработчикиФоновыхЗаданий. ПроизветиФоновоеВычисление("Какой-то параметр" ) ; КонецПроцедуры
Готово. Теперь при запуске обработки и нажатии на кнопку происходит подвисание системы на несколько секунд, в процессе которого ничего нельзя сделать. Это как раз то, что нам и нужно было сделать.

Теперь обеспечим произведение этих вычислений в фоне, то есть чтобы фоновое задание 1С 8.2, 8.3 выполнялось, но нам не мешало.

Для этого:

1. В обработке, в событии нажатия кнопки пропишем следующий код.

Процедура КнНажание() Параметры = Новый Массив; Параметры. Добавить("Какой-то параметр" ) ; ФоновоеЗадание. Выполнить ("ОбработчикиФоновыхЗаданий.ПроизветиФоновоеВычисление" , Параметры, Новый УникальныйИдентификатор, "Тестовое задание" ) ; КонецПроцедуры

Здесь первым параметром мы передаем имя процедуры общего модуля, а вторым - массив параметров. Третьим параметром нужно передать уникальный ключ и четвертым некоторое описание нашей процедуры.

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

Вот один из таких способов в виде краткой пошаговой инструкции:

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

2. Открываем свойства этого процесса и отмечаем его как неиспользуемый (если используется один единственный процесс, то предварительно необходимо создать новый рабочий процесс - для того, чтобы все активные соединения переподключились к нему). Запоминаем номер PID данного процесса.


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

4. На компьютере с сервером 1С с помощью диспетчера задач ищем соответствующий ему процесс rphost.exe по PID отключенного рабочего процесса и удаляем его.

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

6. Готово. Можно войти в консоль заданий и проверить работоспособность регламентного задания.

1 Механизм заданий
2 Фоновые задания
3 Регламентные задания
4 Особенности выполнения фоновых заданий файловом и клиент-серверном вариантах
5 Создание метаданных регламентного задания
6 Консоль заданий
7 Работа с регламентными заданиями
7.1 Объекты заданий
7.2 Получение списка заданий
7.3 Создание
7.4 Удаление
7.5 Получение объекта задания

Механизм заданий

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

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

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

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

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

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

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

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

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

Фоновые задания

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

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

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

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

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

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

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

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

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

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

Создание и управление регламентными заданиями выполняется программно из любого соединения и разрешено только пользователям, имеющим административные права.

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

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

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

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

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

Примеры расписаний регламентных заданий:

Каждый час, только один день

ПериодПовтораДней = 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

Можно проверять, выполняется ли задание для заданной даты (метод ТребуетсяВыполнение объекта РасписаниеРегламентныхЗаданий). Регламентные задания всегда выполняются о имени определенного пользователя. Если пользователь регламентного задания не указан, то выполнение происходит от имени пользователя по умолчанию, имеющего административные права.

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

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

Важно помнить что Время конца не обязательно завершит фоновое задание в указанное время. Некоторые утверждения:
* Фоновое задание может проигнорировать свою автоматическую отмену, если оно не зависло, а продолжает работать по той причине,
что не все операции платформы можно отменить. Если выполняется циклический код встроенного языка, то задание отменить
можно в противном случае нет. Все зависит от того, что делает задание.
* Время конца - граница, в пределах которой задание может запускаться, а не завершаться?
* Принудительное завершение задания откатывает внесённые изменения к моменту начала транзакции?

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

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

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

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

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

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

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

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

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

Для создания объекта метаданных регламентного задания в дереве конфигурации в ветке «Общие» для ветки «Регламентные задания» выполните команду «Добавить» и в палитре свойств заполните следующие свойства регламентного задания:

Имя метода - указывается имя метода регламентного задания.

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

Расписание - указывается расписание регламентного задания. Для формирования расписания щелкните ссылку «Открыть» и в открывшейся форме расписания установите нужные значения.

На закладке «Общее» указываются дата начала и завершения задания и режим повтора.

На закладке «Дневное» указывается дневное расписание задания.

Укажите расписание:

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

Допускается указание произвольного сочетания условий.

На закладке «Недельное» указывается недельное расписание задания.

Установите флажки по тем дням недели, по которым задание будет выполняться. Если требуется повторять задание, укажите интервал повтора в неделях. Например, задание выполняется через 2 недели, значение повтора – 2.

На закладке «Месячное» указывается месячное расписание задания.

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

Использование - если установлено, то задание будет выполняться согласно расписанию.

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

Количество повторов при аварийном завершении - указывает количество повторов при аварийном завершении.

Интервал повтора при аварийном завершении - указывает интервал повтора при аварийном завершении. Примеры

Создание фонового задания «Обновление индекса полнотекстового поиска»:

ФоновыеЗадания.Выполнить("ОбновлениеИндексаПолнотекстовогоПоиска");

Создание регламентного задания «Восстановление последовательностей»:

Расписание = Новый РасписаниеРегламентногоЗадания;
Расписание.ПериодПовтораДней = 1;
Расписание.ПериодПовтораВТечениеДня = 0;

Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание("ВосстановлениеПоследовательностей");
Задание.Расписание = Расписание;
Задание.Записать();

Консоль заданий

Обработка с ИТС, осуществляет управление регламентными заданиями: КонсольЗаданий.epf

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

Объекты заданий

Объекты заданий не являются ссылочными, но хранятся в базе данных в каком-то специальном хранилище.

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

Если флаг "Предопределенное" не установлен, то объекты такого задания создаются и удаляются программно, с указанием расписания и параметров.

Получение списка заданий

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

МенеджерРегламентныхЗаданий (ScheduledJobsManager)

ПолучитьРегламентныеЗадания (GetScheduledJobs)

Синтаксис:

ПолучитьРегламентныеЗадания(<Отбор>)

Параметры:

<Отбор> (необязательный)

Тип: Структура. Структура, задающая отбор. Значениями структуры могут быть: УникальныйИдентификатор, Ключ, Метаданные, Предопределенное, Использование, Наименование. Если отбор не задан, получаются все регламентные задания.

Если выполняется отбор по метаданным, то в качестве значения Метаданные можно указать либо объект метаданных регламентного задания, либо его имя.

Возвращаемое значение:

Тип: Массив.

Описание:

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

Доступность:

Для Каждого Регламентное из Регламентные Цикл
НоваяСтрока = СписокРегламентныхЗаданий.Добавить();
НоваяСтрока.Метаданные = Регламентное.Метаданные.Представление();
НоваяСтрока.Наименование = Регламентное.Наименование;
НоваяСтрока.Ключ = Регламентное.Ключ;
НоваяСтрока.Расписание = Регламентное.Расписание;
НоваяСтрока.Пользователь = Регламентное.ИмяПользователя;
НоваяСтрока.Предопределенное = Регламентное.Предопределенное;
НоваяСтрока.Использование = Регламентное.Использование;
НоваяСтрока.Идентификатор = Регламентное.УникальныйИдентификатор;

ПоследнееЗадание = Регламентное.ПоследнееЗадание;
Если ПоследнееЗадание Неопределено Тогда
НоваяСтрока.Выполнялось = ПоследнееЗадание.Начало;
НоваяСтрока.Состояние = ПоследнееЗадание.Состояние;
КонецЕсли;
КонецЦикла;

Создание

Создается методом СоздатьРегламентноеЗадание менеджера регламентных заданий:

РегламентноеЗадание = РегламентныеЗадания.СоздатьРегламентноеЗадание(МетаданныеВыбор);

РегламентноеЗадание.Наименование = Наименование;
РегламентноеЗадание.Ключ = Ключ;
РегламентноеЗадание.Использование = Использование;
РегламентноеЗадание.ИмяПользователя = ПользователиВыбор;
РегламентноеЗадание.КоличествоПовторовПриАварийномЗавершении = КоличествоПовторовПриАварийномЗавершении;
РегламентноеЗадание.ИнтервалПовтораПриАварийномЗавершении = ИнтервалПовтораПриАварийномЗавершении;
РегламентноеЗадание.Расписание = Расписание;
РегламентноеЗадание.Записать();

ОбъектЗадания = РегламентныеЗадания.СоздатьРегламентноеЗадание("ВыполнениеОбмена");

ОбъектЗадания.Наименование = Наименование;
ОбъектЗадания.Использование = Истина;

Объект задания имеет поле "Параметры", в котором задаются параметры метода:

РегламентноеЗадание (ScheduledJob)

Параметры (Parameters)

Использование:

Чтение и запись.

Описание:

Тип: Массив. Массив параметров регламентного задания. Количество и состав параметров должен соответствовать параметрам метода регламентного задания.

Доступность:

Сервер, толстый клиент, внешнее соединение.

Примечание:

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

Удаление

Удаляется методом Удалить() объекта задания:

РегламентноеЗадание.Удалить();

Получение объекта задания

  • списком через метод ПолучитьРегламентныеЗадания:
    Регламентные = РегламентныеЗадания.ПолучитьРегламентныеЗадания(Отбор);
  • через метод НайтиПоУникальномуИдентификатору менеджера заданий:
    Задание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(УИД);

[необходимо зарегистрироваться для просмотра ссылки]

При работе в 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

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

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

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

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

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

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

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

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