Администрирование · 10 мин
Чем отличается фоновое задание от регламентного задания в 1С
Разбираем разницу между фоновым и регламентным заданием в 1С: назначение, запуск, расписание, мониторинг, типичные ошибки и критерии выбора механизма.
В 1С:Предприятии асинхронное выполнение кода реализовано через два связанных, но разных механизма: фоновые задания и регламентные задания. Путаница между ними — частая причина того, что обмены не запускаются, база перегружается лишними процессами, а администратор не может понять, кто и когда инициировал выполнение процедуры.
Фоновое задание — это разовый асинхронный запуск произвольной процедуры общего модуля. Его может создать программный код, пользователь из интерфейса («Длительные операции» в БСП) или само регламентное задание. Регламентное задание — это объект метаданных с расписанием: платформа сама создаёт фоновые задания по этому расписанию и вызывает указанный метод.
Иными словами, регламентное задание — это «планировщик», а фоновое — «исполнитель». Каждый запуск регламентного задания порождает экземпляр фонового задания, но фоновое задание может существовать и без всякого расписания.
Что такое фоновое задание
Фоновое задание — это механизм платформы, позволяющий выполнить экспортную процедуру общего модуля асинхронно, не блокируя сеанс пользователя. Запускается программно через метод ФоновыеЗадания.Выполнить() с указанием имени метода, параметров, ключа и наименования.
Типовые сценарии использования: длительная загрузка данных из файла, формирование тяжёлого отчёта, обработка большого массива документов. В типовых конфигурациях на базе БСП пользователь видит это как «длительную операцию» с индикатором прогресса.
Фоновое задание живёт от момента запуска до завершения (успешного или аварийного). Оно не имеет расписания и не повторяется само по себе. Если нужно периодическое выполнение — либо код должен запускать его снова, либо используется регламентное задание.
Что такое регламентное задание
Регламентное задание — это объект метаданных конфигурации. Разработчик описывает его в конфигураторе: указывает метод (экспортную процедуру общего модуля), расписание, ключ, наименование, признак использования. Платформа по расписанию автоматически создаёт фоновые задания, вызывающие этот метод.
Расписание настраивается гибко: ежедневно в заданное время, каждые N минут, по дням недели, с периодом повтора внутри дня и временем завершения. Расписание можно менять и в режиме предприятия — через обработку «Регламентные и фоновые задания» либо в консоли заданий.
Регламентное задание можно отключить (снять флаг «Использование»), заблокировать на уровне информационной базы или временно приостановить. Это удобно при обновлениях и регламентных работах: расписание сохраняется, но запуски прекращаются.
Ключевые различия в сравнении
Различия удобнее всего видны в сопоставлении по основным характеристикам:
| Параметр | Фоновое задание | Регламентное задание |
|---|---|---|
| Что это | Экземпляр выполнения процедуры | Объект метаданных с настройками |
| Как запускается | Из кода, из интерфейса, регламентным заданием | Автоматически платформой по расписанию |
| Расписание | Нет | Есть, настраивается |
| Повторяемость | Один запуск — одно выполнение | Циклические запуски по расписанию |
| Хранение | Запись о выполнении, очищается | Постоянный объект конфигурации |
| Настройка администратором | Только наблюдение и отмена | Расписание, включение/отключение |
Главная практическая мысль: регламентное задание без фонового не выполняется — платформа всегда создаёт фоновое задание как носитель выполнения. А фоновое задание без регламентного существует легко.
Как выполняются задания в файловом и клиент-серверном режимах
В клиент-серверном варианте фоновые задания исполняются на сервере 1С:Предприятия рабочими процессами кластера. Это даёт настоящий параллелизм: несколько заданий могут работать одновременно, не мешая пользователям. Регламентные задания планируются менеджером кластера и не требуют запущенного клиентского приложения.
В файловом варианте всё иначе: отдельного планировщика нет. Регламентные задания выполняются только пока запущен хотя бы один сеанс, в котором включено выполнение (в типовых — отдельный сеанс под специальным пользователем или фоновый поток в клиентском приложении). Если все пользователи вышли — задания не выполняются.
Как выбрать подходящий механизм
Выбор определяется тем, кто инициирует запуск и нужна ли периодичность:
- Нужно выполнить тяжёлую операцию по кнопке пользователя, не блокируя интерфейс — фоновое задание (в БСП — механизм длительных операций).
- Нужно регулярное выполнение без участия человека: обмен с сайтом, загрузка курсов валют, очистка устаревших данных — регламентное задание.
- Разовая обработка массива данных по событию в коде (например, после загрузки пакета) — фоновое задание, запущенное программно.
- Задача должна запускаться и по расписанию, и вручную — регламентное задание плюс возможность программного запуска того же метода через фоновое задание.
Как выбрать действие
Мониторинг и диагностика выполнения
Посмотреть оба типа заданий можно в стандартной обработке «Регламентные и фоновые задания» (в типовых конфигурациях — раздел «Администрирование» → «Обслуживание»). Для каждого фонового задания видны состояние (активно, завершено, ошибка), время начала и окончания, сообщения об ошибках.
Признаки проблем: задание в состоянии «Ошибка» с текстом исключения; регламентное задание не запускалось дольше, чем предполагает расписание; задание «висит» в активном состоянии необычно долго. Детали ошибок также попадают в журнал регистрации с событием фонового задания.
Как проверить результат
Завершено без ошибок
Состояние «Ошибка» или аварийное завершение
Соответствует расписанию
Пропуски запусков, задание не выполнялось дольше периода расписания
Стабильная от запуска к запуску
Резкий рост времени или «зависшее» активное задание
Задание выполняется под служебным пользователем с нужными правами
Ошибки доступа к объектам в журнале регистрации
Типичные ошибки и ограничения
Первая группа ошибок связана с кодом метода. Процедура регламентного задания должна быть экспортной, находиться в общем модуле с признаком «Сервер» и не обращаться к клиентскому контексту: никаких Предупреждение(), открытия форм, ТекущаяДата() вместо ТекущаяДатаСеанса() без учёта часового пояса сеанса.
Вторая группа — конфликты параллельности. Два экземпляра одного задания с одинаковым ключом одновременно не запустятся, но задания с разными ключами могут конкурировать за блокировки данных. Тяжёлые задания стоит разносить по времени и предусматривать обработку ошибок блокировок.
Ещё одно ограничение: фоновые задания не имеют доступа к временному хранилищу сеанса-родителя после его завершения, а передавать в параметры можно только сериализуемые значения. Большие данные передают через хранилище значений в базе, а не через параметры.
Что важно запомнить
Регламентное задание — настройка с расписанием, фоновое — конкретный запуск. Регламентное всегда порождает фоновое. Для разовых тяжёлых операций используйте фоновые задания, для периодических — регламентные. В файловой базе регламентные задания работают только при открытом сеансе.
Частые вопросы
Можно ли запустить регламентное задание вручную, не дожидаясь расписания?
Да. В обработке «Регламентные и фоновые задания» есть команда разового запуска выбранного регламентного задания. Программно тот же метод можно вызвать напрямую через фоновое задание. Расписание при этом не меняется.
Почему регламентное задание не выполняется в файловой базе?
В файловом режиме нет серверного планировщика: задания выполняются только внутри работающего сеанса. Если все пользователи вышли, запусков не будет. Решения: выделенный постоянный сеанс, переход на клиент-серверный режим или внешний планировщик Windows с пакетным запуском 1С.
Сколько фоновых заданий может работать одновременно?
На клиент-серверном варианте параллелизм ограничен возможностями кластера и настройками рабочих процессов, а также количеством заданий с одинаковым ключом (один ключ — один активный экземпляр). Практический предел определяется нагрузкой на СУБД и блокировками, а не жёстким числом платформы.
Как отличить в списке фоновых заданий те, что запущены регламентными?
В таблице фоновых заданий есть колонка со ссылкой на регламентное задание. Если она заполнена — экземпляр создан по расписанию. Пустая колонка означает запуск из кода или интерфейса пользователя.
Что происходит с фоновым заданием при перезапуске сервера?
Активное задание аварийно завершается. Регламентное задание запустится снова по расписанию, а разовое фоновое — нет: его нужно запускать повторно. Поэтому в коде длительных операций полезно предусматривать возможность повторного запуска без потери целостности данных.
Можно ли отключить все регламентные задания сразу на время обновления?
Да. В консоли кластера для информационной базы есть флаг блокировки регламентных заданий — расписания сохраняются, но запуски прекращаются до снятия блокировки. В файловом варианте достаточно завершить сеансы, в которых выполняются задания.