1с под каким пользователем выполняются регламентные задания

Обновлено: 05.07.2024

Общие требования к регламентным заданиям

Область применения: управляемое приложение, обычное приложение.

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

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

  • загрузка курсов валют;
  • извлечение текста для полнотекстового индексирования;
  • обновление агрегатов.

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

Например, имеем регламентное задание ПолучениеИОтправкаЭлектронныхПисем (с установленным флажком Использование ), которое должно выполняться только в том случае, если установлена ФО ИспользоватьПочтовыйКлиент .

Неправильно: создавать предопределенное регламентное задание, зависящее от ФО, с установленным флажком Использование .

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

Настройка = Настройки.Добавить();
Настройка.РегламентноеЗадание = Метаданные.РегламентныеЗадания.ОбновлениеСтатусовДоставкиSMS;
Настройка.ФункциональнаяОпция = Метаданные.ФункциональныеОпции.ИспользоватьПочтовыйКлиент;
Настройка.ДоступноВМоделиСервиса = Ложь;

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

Для конфигураций без БСП следует управлять использованием регламентного задания, разместив, например, в модуле менеджера значения константы ИспользоватьПочтовыйКлиент следующий код:

Если Задание.Использование <> Значение Тогда
Задание.Использование = Значение;
Задание.Записать();
КонецЕсли;

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

ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания();
Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьПочтовыйКлиент") Тогда
ВызватьИсключение НСтр("ru = 'Регламентное задание недоступно по функциональным опциям.'");
КонецЕсли;

Если в конфигурации используется подсистема «Регламентные задания» БСП и настроены зависимости регламентных заданий от ФО (как указано в п.3.1), то вместо этого достаточно вставить вызов, как показано в п.6.

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

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

В этих случаях требуется создавать экземпляры регламентных заданий и параметризовать их объектами ИБ (например, узлами ИБ, элементами справочника Дополнительные обработки и т.п.) из кода на встроенном языке с помощью метода РегламентныеЗадания . СоздатьРегламентноеЗадание . При этом в свойстве Наименование необходимо указывать представление объекта, на основании которого создается регламентное задание. Например, есть рассылка отчетов (элемент справочника), расписание, которое было настроено в карточке рассылки и ее автор, тогда добавление на основании нее регламентного задания будет выглядеть так:

// Снимаем ограничение, что только администратор может создавать регламентные задания.
УстановитьПривилегированныйРежим(Истина);
Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание(Метаданные.РегламентныеЗадания.РассылкаОтчетов);

ПараметрыЗадания = Новый Массив;
ПараметрыЗадания.Добавить(РассылкаОтчетов);
Задание.Параметры = ПараметрыЗадания;

Задание.ИмяПользователя = АвторРассылки;
Задание.Использование = Истина;
Задание.Наименование = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Рассылка отчетов: %1'"), СокрЛП(РассылкаОтчетов);
Задание.Расписание = РасписаниеРассылки;
Задание.Записать();

4.2. Если в конфигурации используется подсистема «Регламентные задания» БСП, то необходимо также запрещать интерактивное создание и запуск параметризованных регламентных заданий из формы Регламентные и фоновые задания . Для этого необходимо указать такое задание в процедуре ПриОпределенииНастроекРегламентныхЗаданий общего модуля РегламентныеЗаданияПереопределяемый . Например:

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

Также выполнить п.6.

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

Если в конфигурации используется подсистема «Регламентные задания» БСП, то для этого необходимо перечислить такие задания в процедуре ПриОпределенииНастроекРегламентныхЗаданий общего модуля РегламентныеЗаданияПереопределяемый . Например:

Настройка = Настройки.Добавить();
Настройка.РегламентноеЗадание = Метаданные.РегламентныеЗадания.РассылкаОтчетов;
Настройка.РаботаетСВнешнимиРесурсами = Истина;

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

6. Если регламентное задание попадает под требования, описанные в пунктах 3.1, 4.2, 5 и используется подсистема «Регламентные задания» БСП, то вначале процедур обработчиков таких заданий необходимо помещать вызов:

Запуск регламентных заданий

Область применения: управляемое приложение, обычное приложение.

Методическая рекомендация (полезный совет)

1. Рекомендуется предоставлять пользователям альтернативную возможность по выполнению регламентных заданий вручную. Например, предлагать «по кнопке» выполнить обработку данных, обычно выполняемую регламентным заданием в фоне. Это вызвано тем соображением, что работа системы не должна зависеть от автоматического выполнения регламентных заданий. В частности:

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

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

1.1. В случае если регламентное задание изменяет в системе некоторые данные , которые необходимы определенному бизнес-процессу или выводятся в конкретном «рабочем месте» (форме), то в таких «рабочих местах» дополнительно рекомендуется размещать команду для выполнения этого действия. Например:

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

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

Пример ручного запуска задания по очистке устаревших версий объектов:

&НаСервере
Процедура ЗапуститьРегламентноеЗадание()
ИмяМетода = Метаданные.РегламентныеЗадания.ОчисткаУстаревшихВерсийОбъектов.ИмяМетода;

// Проверка, выполняется ли фоновое задание по очистке устаревших версий.
Отбор = Новый Структура;
Отбор.Вставить("ИмяМетода", ИмяМетода);
Отбор.Вставить("Состояние", СостояниеФоновогоЗадания.Активно);
ФоновыеЗаданияОчистки = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
Если ФоновыеЗаданияОчистки.Количество() = 0 Тогда
НаименованиеФоновогоЗадания = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Запуск вручную: %1'"), РегламентноеЗаданиеМетаданные.Синоним);
ФоновыеЗадания.Выполнить(ИмяМетода. НаименованиеФоновогоЗадания);
КонецЕсли;
КонецПроцедуры

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

  • обновление и перестроение агрегатов;
  • установка периода рассчитанных итогов.

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

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

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

Примеры регламентных заданий, которые не меняют данные в базе:

  • рассылка по почтовым адресатам информации об ошибках в журнале регистрации;
  • рассылка информации о новых/просроченных задачах;
  • периодический запуск внешних обработок для рассылки отчетов.

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

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

  • в файловом режиме работы, при неудачной попытке установки монопольного режима для обновления данных ИБ предлагать автоматически блокировать работу регламентных заданий (перезапуск программы с ключом командной строки /AllowExecuteScheduledJobs -Off );
  • в начале кода обработчиков регламентных заданий проверять режим работы и прерывать работу регламентного задания с помощью вызова исключения, если обновление ИБ еще не завершено.

При использовании в конфигурации Библиотеки стандартных подсистем первая рекомендация реализована в подсистеме «Обновление версии ИБ», а для выполнения второй предусмотрена процедура ПриНачалеВыполненияРегламентногоЗадания общего модуля ОбщегоНазначения , вызов которой необходимо размещать в начале кода обработчиков регламентных заданий.

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

Как настраиваются регламентные и фоновые задания в 1С 8?

Развернутую инструкцию на примере загрузки курсов валют Вы найдете далее.

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

Что такое регламентные и фоновые задания в 1С

Механизм регламентных и фоновых заданий работает в клиент-серверном режиме работы (SQL), благодаря функционалу СУБД . Если у вас файловая БД, то задание тоже можно настроить, но немного по другому принципу.

Настройка фоновых заданий в клиент-серверном режиме работы 1С

Настройка типового задания

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

Расписание выполнения задания 1С 8.3

Внимание! Не забудьте отключить блокировку выполнения регламентных и фоновых заданий на уровне СУБД!

Сделать это можно в утилите администрирования клиент-серверного варианта либо при создания новой БД:

Блокировка регламентных заданий

Настройка регламентных заданий в файловом режиме работы 1С

Двухминутное видео, в котором показано, как настроить регламентное задание в конфигураторе 1С:

Другие статьи по 1С:


Регламентные задания позволяют выполнять определенные действия по расписанию. Для выполнения используются фоновые задания.

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

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

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

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

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

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

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

Для настройки расписания нужно нажать на гиперссылку Открыть рядом со свойством Расписание. Будет открыто окно настройки расписания:

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

Для примера настроим чтобы регламентное задание выполнялось каждые 5 минут. Для этого на закладке Общее укажем, что нужно повторять задание каждый день:

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

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

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

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

Для программного открытия окна настройки расписания регламентного задания в пользовательском режиме можно воспользоваться следующим кодом:

ДиалогРасп = Новый ДиалогРасписанияРегламентногоЗадания ( Расп ) ; ОбратныйВызов = Новый ОписаниеОповещения ( "ЗаписатьРасписание" , ЭтотОбъект ) ; РеглЗад = РегламентныеЗадания . НайтиПредопределенное ( "РегламентноеЗадание1" ) ; Процедура ЗаписатьРасписание ( Расп , ДопПараметры ) Экспорт РеглЗад = РегламентныеЗадания . НайтиПредопределенное ( "РегламентноеЗадание1" ) ;

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

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

Расписание можно создать программно:

РеглЗад = РегламентныеЗадания . НайтиПредопределенное ( "РегламентноеЗадание1" ) ;

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

Рассмотрим некоторые настройки расписания:

Те же самые примеры, но программно:

НовоеРасп . ВремяНачала = Новый Дата ( 1 , 1 , 1 , 1 , 0 , 0 ) ; НовоеРасп . ВремяНачала = Новый Дата ( 1 , 1 , 1 , 1 , 0 , 0 ) ; НовоеРасп . ВремяНачала = Новый Дата ( 1 , 1 , 1 , 1 , 0 , 0 ) ; Расп 1 . ВремяНачала = Новый Дата ( 1 , 1 , 1 , 13 , 0 , 0 ) ; Расп 2 . ВремяНачала = Новый Дата ( 1 , 1 , 1 , 18 , 0 , 0 ) ; //каждый день, в 13:00 и в 18:00, но только с 1 по 10 мая 2021 года Расп 1 . ВремяНачала = Новый Дата ( 1 , 1 , 1 , 13 , 0 , 0 ) ; Расп 2 . ВремяНачала = Новый Дата ( 1 , 1 , 1 , 18 , 0 , 0 ) ;

Планировщик регламентных заданий

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

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

До версии платформы 8.3.3.641 в файловом варианте не было автоматического выполнения регламентных заданий. Нужно было программно вызывать метод ВыполнитьОбработкуЗаданий. Обычно для этого запускался отдельный сеанс и в нем через обработчик ожидания вызывался данный метод.

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

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

Читайте также: