Открыть сервис

Фоновое задание 1С

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

Назначение и область применения

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

  • Длительные расчёты — пересчёт итогов, закрытие месяца, переоценка партий, перепроведение документов за период.
  • Массовая обработка данных — загрузка выгрузка данных из внешних систем (например, из Excel или XML), групповая обработка справочников или документов.
  • Интеграция с внешними системами — отправка электронных писем, выгрузка отчётов в файлы, синхронизация данных с сайтами или другими информационными базами.
  • Обслуживание информационной базы — реорганизация таблиц, удаление помеченных объектов, проверка целостности ссылочной целостности.
  • Выполнение периодических действий — обновление курсов валют, загрузка классификаторов, отправка уведомлений.

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

Архитектура и механизм работы

Объект метаданных

Для использования фонового задания в конфигурации необходимо создать объект метаданных «Фоновое задание» в ветке «Общие» → «Фоновые задания». В свойствах объекта указывается имя общего модуля и имя экспортной процедуры или функции, которая будет выполняться. Этот модуль должен быть серверным (с установленным флагом «Сервер»).

Запуск и выполнение

Запуск фонового задания осуществляется программно с помощью глобального метода ЗапуститьФоновоеЗадание(). Этот метод принимает следующие параметры:

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

Пример запуска:

``1c Параметры = Новый Массив; Параметры.Добавить("Значение1"); Параметры.Добавить(123); Идентификатор = ЗапуститьФоновоеЗадание("МоеФоновоеЗадание", Параметры); ``

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

Мониторинг и управление

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

``1c ФоновыеЗадания = ФоновыеЗадания.ПолучитьФоновыеЗадания(); Для Каждого Задание Из ФоновыеЗадания Цикл Сообщить(Задание.Состояние); КонецЦикла; ``

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

Особенности и ограничения

Ограничения по времени выполнения

В стандартных конфигурациях «1С:Предприятия» (например, «Бухгалтерия предприятия», «Управление торговлей») фоновые задания имеют ограничение по времени выполнения — по умолчанию 24 часа. Если задание не завершится за это время, оно будет автоматически прервано. Это значение может быть изменено администратором системы.

Отсутствие доступа к пользовательскому интерфейсу

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

Конкуренция за ресурсы

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

Работа с транзакциями

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

Классификация фоновых заданий

Фоновые задания можно классифицировать по нескольким признакам:

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

Примеры использования в типовых конфигурациях

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

Отличие от регламентных заданий

Основное отличие фоновых заданий от регламентных заключается в способе запуска. Регламентные задания имеют предопределённое расписание (например, «каждый день в 8:00») и запускаются автоматически системой. Фоновые же задания запускаются только программно, по требованию разработчика или пользователя. При этом внутри регламентного задания может быть запущено фоновое задание, но не наоборот.

Безопасность и права доступа

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

Развитие и перспективы

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

Источники

  1. «1С:Предприятие 8.3. Руководство разработчика» — раздел «Фоновые задания».
  2. «1С:Предприятие 8.3. Синтакс-помощник» — описание объекта ФоновыеЗадания и метода ЗапуститьФоновоеЗадание().
  3. Официальная документация фирмы «1С» — «Механизм фоновых заданий».
  4. Книга «Профессиональная разработка в системе 1С:Предприятие 8» (авторы: М. Г. Радченко, Е. Ю. Хрусталёва) — глава, посвящённая фоновым и регламентным заданиям.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →