Фоновое задание
Фоновое задание — это объект встроенного языка. Он является частью механизма заданий.
Фоновые задания предназначены для выполнения прикладных задач асинхронно. Они могут порождать дочерние фоновые задания, например, для распараллеливания сложных вычислений по различным рабочим серверам кластера в клиент-серверном варианте работы.
Существует возможность ограничить выполнение фоновых заданий, имеющих одинаковые методы, по определенному прикладному признаку. Программное создание и управление фоновыми заданиями возможно из любого соединения пользователя с информационной базой системы 1С:Предприятие 8. Фоновое задание выполняется от имени пользователя, который его создал.
Ведется история выполнения фоновых заданий. Все задания разделены на три типа (программные, системные, регламентные) и для каждого типа существует собственное ограничение на количество хранимых записей в истории. Это упрощает анализ истории в тех случаях, когда в системе исполняется большое количество заданий одного типа. Они вытесняют из истории только задания своего типа, а задания других типов остаются доступными для анализа.
Регламентные (фоновые) задания в 1С
Регламентные задания в 1С 8 3 нужны для выполнения периодических задач — ежедневно, по определенным числам и т.п. Рассказываем об особенностях подобных заданий и даем инструкцию по их созданию.
Что такое фоновые и регламентные задания?
- Регламентное задание. Механизм, который позволяет запускать на выполнение какие-либо конкретные действия по предварительно настроенному расписанию.
- Фоновое задание. Объект, порождаемый регламентным заданием, в котором содержатся выполняемые действия.
Когда фоновое задание в 1С 8 является незаменимым?
Фоновые задания особенно эффективны в следующих случаях:
- Когда код должен выполняться вне зависимости от действий пользователей базы и операторов.
- Когда в поставленной задаче есть необходимость периодического выполнения определенного алгоритма.
- Если запуск процедуры не зависит от внешних событий, происходящих с объектами информационной базы.
Как создать регламентное задание?
Для начала надо зайти в базу в режиме “Конфигуратор”. Далее в ветке “общие” находим “регламентные задания” и нажимаем “добавить”.
Теперь разберем подробнее создание задания. Нам необходимо заполнить форму следующим образом:
- Имя, синоним и комментарий. Учтите, что правила и принципы заполнения этих полей аналогичны для всех объектов конфигурации и описывать их еще раз нет необходимости.
- Имя метода. Процедура общего модуля, которая максимально точно описывает необходимый алгоритм.
- Ключ. Позволяет сгруппировать несколько разных регламентных заданий 1С. Одновременно может быть запущено только одно задание с одинаковым значением ключа, но само значение может быть произвольным.
- Расписание. Один из важнейших элементов, т.к. именно по данному расписанию будет выполняться задание.
- Использование. Определяет активность задания.
- Предопределенное. Предопределенное – определяет, что при запуске 1С такое задание будет создано в единственном экземпляре с указанными в конфигураторе расписанием. Не предопределенные задания появляются в момент наступления расписания программно.
- Количество повторов. Если в процессе выполнения возникла исключительная ситуация, происходит перезапуск, но чтобы не возникла бесконечная зацикленность, программа ограничивает перезапуски по количеству.
- Интервал повтора. Время в секундах между повторными запусками аварийно завершенных заданий.
Создаем расписание
Отдельно рассмотрим создание расписания для регламентного задания в 1С. При создании задания необходимо нажать на “расписание” и заполнить поля в появившемся окне.
В качестве проверки верного заполнения вы можете ориентироваться на нижнюю часть окна — там находится текстовая расшифровка заданной периодичности. Если вам необходимо ограничить задание по срокам, не забудьте проставить даты — в обратном случае программа будет воспринимать задачу, как не имеющую ограничений по длительности.
Отдельно можно настроить дневное, недельное и месячное расписание.
Блокируем регламентные задания
Для блокировки необходимо запустить стандартную утилиту «Администрирование серверов 1С Предприятия» и открыть свойства базы, где вы создали регламентное задание (для клиент-серверных версий 1С). Далее вам нужно ввести ввод и пароль для доступа к базе и в открывшемся окне установить флаг напротив “блокировка регламентных заданий включена”.
Для отключения конкретных фоновых заданий можно использовать встроенную в последние релизы обработку «Консоль фоновых заданий».
Как облегчить работу с 1С?
Если у вас нет подходящих специалистов для решения подобных задач, но есть желание оптимизировать работу с программой, лучше всего обратиться за услугами к профессионалам.
Мы предлагаем внедрение и настройку 1С, а также последующее сопровождение программы. Любые вопросы будут решаться максимально оперативно, а при необходимости вы можете заказывать индивидуальную разработку под 1С.
Позвоните по номеру телефона, указанному на сайте или заполните форму обратной связи, чтобы мы смогли:
Регламентные и фоновые задания в 1С 8.3. Пример настройки
Механизм регламентных и фоновых заданий позволяет выполнять определенные задачи по расписанию. В данной статье я на примере записи лога в регистр сведений покажу, как можно настроить регламентные и фоновые задания. Ну и без теории, конечно же, не обойдется!
Содержание
Чем отличаются регламентные задания от фоновых?
Регламентные задания – это отдельный механизм платформы, позволяющий автоматически выполнять какие-то действия по заданному расписанию. Регламентные задания можно создать и настроить в конфигураторе, в ветке метаданных “Общие”. На основе добавленных в конфигураторе регламентных заданий можно средствами языка 1С создавать отдельные экземпляры регламентных заданий с разными настройками, которые будут храниться в информационной базе.
Фоновые задания – это объекты языка 1С, которые служат для асинхронного выполнения прикладных задач. Они запускаются в отдельных системных сеансах, могут порождать подчиненные фоновые задания, и тем самым позволяют реализовать параллельную обработку данных.
Регулярно встречаю тиражируемую с сайта на сайт информацию, что фоновые задания – это объект, порождаемый регламентными заданиями. Это не так. Фоновые задания действительно могут создаваться на основе регламентных. Но могут быть созданы и полностью независимо при помощи встроенного языка.
Создание и настройка регламентного задания
Разобраться с регламентными заданиями проще всего на примере, поэтому давайте перейдем к практике! Вне зависимости от того, клиент-серверный вариант базы, или файловый, последовательность действий будет одна и та же. Об особенностях файлового режима смотрите в конце данной статьи.
В конфигураторе откроем ветку метаданных Общее, перейдем к пункту Регламентные задания, и добавим новое задание. Пусть наше задание просто добавляет запись в регистр сведений “ЛогРеглЗадания”. Код, который выполняет запись, не принципиален, и рассматривать его в данной статье мы не будем.
В случае, если регламентное задание завершится с ошибкой, платформа предусматривает возможность повторной попытки выполнить это задание. Например, мы можем пытаться связаться с внешним интернет-сайтом, и в случае, если он не отвечает с первого раза, выполнить еще несколько попыток – на случай перебоев в сетевом соединении.
Количество повторов при аварийном завершении – этот параметр указывает платформе, сколько раз вызвать регламентное задание в случае неудачи, в рамках одного запуска по расписанию. Если за указанное количество повторов регламентное задание так и не завершилось успехом, его выполнение прекращается, но следующий запуск по расписанию снова будет снова предусматривать возможность повторов.
Интервал повтора при аварийном завершении – время в секундах, через которое платформа будет пытаться повторно выполнить регламентное задание.
Как это работает? Рассмотрим на примере. Мы настроили расписание задания – каждый день, каждый час. Количество попыток 2, интервал – 30 секунд. Предположим, задание прервалось по ошибке. Платформа через 30 секунд попробует снова, и если будет ошибка, подождет еще 30 секунд, и попытается выполнить задание последний раз. После этого, вне зависимости от того, отработало ли регл. задание или снова была ошибка, через 1 час согласно расписанию будет новый цикл попыток выполнить регламентное задание.
В поле Имя метода нужно указать имя экспортной процедуры серверного общего модуля. Изначально если имя метода не указано, при нажатии на кнопку увеличительного стекла будет открыт диалог выбора общего модуля, в котором далее будет автоматически создан экспортный метод.
Если же нажать на кнопку с многоточием, то будет открыт другой диалог – выбор обработчика события. В этом окне мы можем выбрать подходящую процедуру из уже существующих.
Отметим флажки Использование и Предопределенное, и нажмем гиперссылку “Открыть” в строке Расписание. В открывшемся диалоговом окне можно достаточно гибко настроить расписание, по которому должно работать регламентное задание. В зависимости от настроек на разных закладках, в отдельном поле формируется понятное текстовое пояснение, например:
Выполнять: c 1 января 2022 г. каждый день; с 20:00:00 каждые 10 секунд
Чтобы понять, как вам лучше настроить расписание, лучше самостоятельно изучить закладки и поиграть с параметрами, например, выключить выполнение задания в выходные дни, или настроить выполнение раз в квартал.
Итак, мы создали объект метаданных Регламентное задание. Но это по сути только образец, эталон, на основе которого в информационной базе будут создаваться отдельные экземпляры. Эти экземпляры регламентных заданий хранятся непосредственно в информационной базе.
Что такое предопределенные регламентные задания?
В случае, если для регламентного задания указать признак “Предопределенное”, в информационной базе будет создан предопределенный экземпляр этого задания, который нельзя удалить или создать программно. В остальном он не отличается от других регламентных заданий, которые созданы в информационной базе. Если в объекте метаданных снять флажок “Предопределенное”, то существующее в информационной базе предопределенное регламентное задание будет автоматически удалено.
Если вы хотите, чтобы регламентное задание сразу вступило в строй и начало работать автоматически, следует включить флажок “Предопределенное”. Если этого не сделать, то для создания и настройки такого регламентного задания можно воспользоваться обработкой “Консоль заданий”, либо создавать экземпляр этого регламентного задания средствами языка 1С.
Важный нюанс. Регламентные задания после создания в конфигураторе, можно настраивать в режиме 1С Предприятие – указать другое расписание, отметить или отключить использование, задать параметры выполнения. Изменения регламентного задания в пользовательском режиме никак не повлияют на настройки этого регламентного задания в метаданных.
Как создать регламентное задание программно?
За программную работу с регламентными заданиями отвечает свойство глобального контекста РегламентныеЗадания – это специальный объект с типом МенеджерРегламентныхЗаданий.
Объекты регламентных заданий можно создавать только на основе существующих в метаданных регламентных заданий. Рассмотрим пример:
В примере мы создаем объект задания на основе метаданных регламентного задания “ЗаписатьВЛог” и объекта расписание. Расписание в свою очередь – это объект языка, который аналогичен рассмотренному выше окну расписания – и все настройки, которые делаются в этом окне интерактивно, можно задать программно средствами языка 1С.
Второй вариант использования метода СоздатьРегламентноеЗадание – передать в качестве параметра непосредственно объект метаданных:
Важно! Создать регламентное задание можно только на основе существующего в метаданных объекта Регламентное задание. Указание других метаданных приведет к ошибке.
Создание и работа с фоновыми заданиями
При наличии в информационной базе регламентных заданий – предопределенных, или созданных программно – платформа будет на их основе создавать фоновые задания согласно расписанию. В большинстве случаев, достаточно корректной настройки регламентных заданий, чтобы фоновые задания своевременно и правильно отрабатывали.
Важно понимать, что фоновое задание – это объект встроенного языка, который предназначен для асинхронного выполнения прикладных задач. Фоновые задания нельзя запланировать при помощи языка 1С – только создать программно – и они тут же начнут выполняться.
Таким образом, можно сказать следующее: фоновые задания, созданные регламентным заданием выполняются по расписанию этого регламентного задания; а фоновые задания, созданные программно, выполняются немедленно в момент создания.
Выполнение фонового задания
Чтобы из языка 1С запустить фоновое задание, используется объект языка ФоновыеЗадания. Тип этого объекта – МенеджерФоновыхЗаданий. Для выполнения фонового задания служит метод Выполнить.
Выполнить в фоновом задании можно экспортную процедуру или функцию, которая должна быть размещена в общем неглобальном модуле.
Получение списка фоновых заданий
Фоновые задания могут выполняться очень длительное время, поэтому разработчику может понадобиться периодически опрашивать запущенные задания, чтобы узнать – какие уже выполнились, а какие все еще работают.
Для получения списка фоновых заданий используется метод ФоновыеЗадания.ПолучитьФоновыеЗадания(<Отбор>). Данный метод может получить как список всех фоновых заданий, если не указывать отбор, так и отфильтрованный список – например, только все активные фоновые задания, или фоновые задания с определенным методом, или же фоновые задания, созданные определенным регламентным заданием, и т.д.
В случае, если нам необходимо дождаться выполнения нескольких фоновых заданий, следует использовать метод ФоновыеЗадания.ОжидатьЗавершенияВыполнения(<Массив фоновых заданий>). Кроме того, у каждого фонового задания также есть аналогичный метод – который можно использовать, если мы хотим дождаться завершения одного конкретного фонового задания.
Регламентные задания в файловом варианте базы
При работе с файловой базой регламентные задания имеют ряд отличий от выполнения в клиент-серверном варианте.
Для выполнения регламентных заданий должен быть запущен клиентский сеанс.
- Регламентные задания в файловом варианте, вне зависимости от расписания обрабатываются раз в 60 секунд. Т.е. можно указать расписание 1 раз в 5 секунд, но все равно следующий запуск произойдет через 60 секунд. Второй пример: расписание настроено на 90 секунд. Но по факту фоновые задания будут выполнены с интервалом 120 секунд.
- Фоновые задания выполняются последовательно – т.е. в файловой базе одновременно не может работать два фоновых задания. Пока выполняется одно, остальные становятся в очередь на выполнение.
- Регламентные задания выполняются только одним клиентским приложением. При этом, если не указано специальных настроек, за выполнение регламентных заданий будет отвечать первый запущенный клиентский сеанс.
От сайта к сайту часто встречается информация, что для выполнения регламентных заданий в файловом варианте следует использовать метод ВыполнитьОбработкуЗаданий(). Данная информация устарела, и в последних версиях платформы 8.3. регламентные задания в файловом режиме настраиваются и работают практически так же как в клиент-серверной среде.
Регламентные и фоновые задания в 1С 8.3 и 8.2
Наверное, ни одна серьезная конфигурация на 1С 8.3 или 8.2 не обойдется без использования регламентных и фоновых заданий. Они очень удобны, так как по четко заданному расписанию будут выполняться без вмешательства пользователя и программиста.
Например, вам нужно раз в сутки вам нужно совершать обмен данными с другой программой. Используя регламентные и фоновые задания, 1С сможет производить данные действия самостоятельно, например, в нерабочее время. Такой способ никак не повлияет на работу пользователей и поможет сэкономить время.
Для начала разберемся, что же они обозначают и в чем их отличие:
- Регламентное задание позволяет запускать на выполнение какие-либо конкретные действия по заранее настроенному расписанию.
- Фоновое задание – это объект, в котором содержатся выполняемые действия.
Фоновые и регламентные задания в клиент-серверном режиме
Предположим, что наша фирма что-нибудь продает и имеет собственный сайт, на котором расположены цены. Раз в сутки мы хотим их выгружать для поддержания актуальности.
Откройте конфигурацию и добавьте регламентное задание.
Настройка свойств
Рассмотрим самые важные параметры, которые необходимо заполнить в его свойствах.
- В поле «Имя метода» выбирается та процедура какого-то определенного общего модуля, которая будет непосредственно выполняться. В ней будут указаны все действия по выгрузке цен на наш сайт. Обратите внимания, что выполнение будет происходить на сервере. Это логично, ведь регламентные операции выполняются без участия пользователя.
- Регламентное задание можно отключать или включать по необходимости. Не нужно каждый раз править его расписание. Для этого в палитре свойств установите или снимите флаг «Использование».
- Еще одной немаловажной является настройка, будет ли являться данное регламентное задание предопределенным, или нет. Предопределенные регламентные задания запускаются автоматически. Если данный признак не установлен, то вам будет нужно запускать их программно, либо воспользоваться обработкой «Консоль заданий» с ИТС.
- Так же вы можете указать количество повторов и интервал между ними при аварийном завершении. Под аварийным завершением подразумеваются те ситуации, когда задания не отработали по причине возникновения ошибки.
Настройка расписания
Завершающим шагом мы настроим расписание нашей выгрузки на сайт по соответствующей гиперссылке в палитре свойств.
Получите понятные самоучители по 1С бесплатно:
Перед вами откроется типовая настройка расписания в 1С 8.3. Здесь нет ничего сложного. В рамках данного примера мы настроили запуск нашей выгрузки цен на сайт ежедневно с пяти до семи утра. В том случае, если регламентное задание не успеет отработать до 7:00, оно будет выполнено уже на следующий день.
Блокировка регламентных заданий
Запустите стандартную утилиту «Администрирование серверов 1С Предприятия» и откройте свойства той информационной базы, где вы создали регламентное задание (для клиент-серверных версий 1С).
В открывшемся окне (после ввода логина и пароля для доступа к ИБ) проверьте, чтобы не был установлен флаг на пункте «Блокировка регламентных заданий включена». Если вы столкнулись ситуацией, когда задание не отрабатывает, первым делом проверяйте эту настройку.
Таким же образом можно полностью отключить регламентные задания в 1С 8.3. Для отключения конкретных фоновых заданий можно воспользоваться встроенной в последние релизы обработкой «Консоль фоновых заданий».
Фоновые и регламентные задания в файловом режиме
В данном режиме настройку и запуск данных заданий намного труднее организовать. Чаще всего создается дополнительная учетная запись, сеанс которой всегда будет открыт.
Активация регламентных заданий в данном случае производится при использовании метода «ВыполнитьОбработкуЗаданий()».
Так же вы можете воспользоваться следующей конструкцией:
В качестве имени процедуры необходимо указать имя клиентской процедуры, которая должна будет выполниться. Интервал показывает, через сколько секунд будет произведено выполнение. Параметр «Однократно» не обязателен к заполнению. Он отражает, будет ли выполнена данная процедура однократно, либо несколько раз.
Отслеживание ошибок в фоновых заданиях
Посмотреть ход выполнения фоновых заданий, а так же наличие возможных ошибок можно в журнале регистрации. В фильтре установите отбор приложению «Фоновое задание» и при необходимости выберите интересующую важность, например, только «Ошибки».
В журнале регистрации будут показаны все записи, соответствующие вашему отбору с указанием комментария, по которому вы можете понять причину ошибки.