К статье
Практический материал

Администрирование · 10 мин

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

Разбираем разницу между фоновым и регламентным заданием в 1С: назначение, запуск, расписание, мониторинг, типичные ошибки и критерии выбора механизма.

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

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

Иными словами, регламентное задание — это «планировщик», а фоновое — «исполнитель». Каждый запуск регламентного задания порождает экземпляр фонового задания, но фоновое задание может существовать и без всякого расписания.

Что такое фоновое задание

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

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

Фоновое задание живёт от момента запуска до завершения (успешного или аварийного). Оно не имеет расписания и не повторяется само по себе. Если нужно периодическое выполнение — либо код должен запускать его снова, либо используется регламентное задание.

Что такое регламентное задание

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

Расписание настраивается гибко: ежедневно в заданное время, каждые N минут, по дням недели, с периодом повтора внутри дня и временем завершения. Расписание можно менять и в режиме предприятия — через обработку «Регламентные и фоновые задания» либо в консоли заданий.

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

Ключевые различия в сравнении

Различия удобнее всего видны в сопоставлении по основным характеристикам:

ПараметрФоновое заданиеРегламентное задание
Что этоЭкземпляр выполнения процедурыОбъект метаданных с настройками
Как запускаетсяИз кода, из интерфейса, регламентным заданиемАвтоматически платформой по расписанию
РасписаниеНетЕсть, настраивается
ПовторяемостьОдин запуск — одно выполнениеЦиклические запуски по расписанию
ХранениеЗапись о выполнении, очищаетсяПостоянный объект конфигурации
Настройка администраторомТолько наблюдение и отменаРасписание, включение/отключение

Главная практическая мысль: регламентное задание без фонового не выполняется — платформа всегда создаёт фоновое задание как носитель выполнения. А фоновое задание без регламентного существует легко.

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

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

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

Как выбрать подходящий механизм

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

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

Как выбрать действие

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

Мониторинг и диагностика выполнения

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

Признаки проблем: задание в состоянии «Ошибка» с текстом исключения; регламентное задание не запускалось дольше, чем предполагает расписание; задание «висит» в активном состоянии необычно долго. Детали ошибок также попадают в журнал регистрации с событием фонового задания.

Контрольные точки

Как проверить результат

Состояние последнего запуска
Норма

Завершено без ошибок

Тревожный признак

Состояние «Ошибка» или аварийное завершение

Время последнего запуска регламентного задания
Норма

Соответствует расписанию

Тревожный признак

Пропуски запусков, задание не выполнялось дольше периода расписания

Длительность выполнения
Норма

Стабильная от запуска к запуску

Тревожный признак

Резкий рост времени или «зависшее» активное задание

Права пользователя
Норма

Задание выполняется под служебным пользователем с нужными правами

Тревожный признак

Ошибки доступа к объектам в журнале регистрации

Типичные ошибки и ограничения

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

Вторая группа — конфликты параллельности. Два экземпляра одного задания с одинаковым ключом одновременно не запустятся, но задания с разными ключами могут конкурировать за блокировки данных. Тяжёлые задания стоит разносить по времени и предусматривать обработку ошибок блокировок.

Типичные ошибки
01
Размещение метода в модуле без флага «Сервер» — задание падает сразу после запуска
02
Вызов клиентских методов (Предупреждение, ОткрытьФорму) внутри задания — ошибка выполнения
03
Ожидание ночных запусков в файловой базе без постоянного сеанса — задания просто не выполняются
04
Пересечение тяжёлых заданий по времени — взаимные блокировки и рост длительности
05
Отсутствие обработки исключений — задание завершается ошибкой без понятной диагностики в журнале

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

Итог

Что важно запомнить

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

Частые вопросы

Можно ли запустить регламентное задание вручную, не дожидаясь расписания?

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

Почему регламентное задание не выполняется в файловой базе?

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

Сколько фоновых заданий может работать одновременно?

На клиент-серверном варианте параллелизм ограничен возможностями кластера и настройками рабочих процессов, а также количеством заданий с одинаковым ключом (один ключ — один активный экземпляр). Практический предел определяется нагрузкой на СУБД и блокировками, а не жёстким числом платформы.

Как отличить в списке фоновых заданий те, что запущены регламентными?

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

Что происходит с фоновым заданием при перезапуске сервера?

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

Можно ли отключить все регламентные задания сразу на время обновления?

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