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

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

Фоновое и регламентное задание 1С: в чём разница

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

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

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

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

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

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

Создаётся фоновое задание программно через метод ФоновыеЗадания.Выполнить(), куда передаются имя метода, параметры, ключ и наименование. Ключ позволяет контролировать уникальность: если задание с таким ключом уже активно, платформа не даст запустить дубликат.

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

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

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

Расписание настраивается гибко: по дням недели, с интервалом в секундах или минутах, в заданном диапазоне времени. Платформа сама отслеживает наступление времени запуска и в нужный момент создаёт фоновое задание, которое выполняет указанный метод.

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

Ключевые различия: сравнительная таблица

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

КритерийРегламентное заданиеФоновое задание
Способ созданияВ конфигураторе или программно через менеджерТолько программно, методом Выполнить()
ЗапускАвтоматически по расписаниюВ момент вызова из кода
РасписаниеЕсть, настраивается в свойствахОтсутствует
Хранение настроекВ базе данных (для непредопределённых) и в метаданныхНе хранится, существует только во время выполнения
Типовое назначениеПериодические задачи: обмены, загрузки, пересчётыРазовые длительные операции по инициативе пользователя или кода
Связь между механизмамиПорождает фоновое задание при каждом запускеМожет быть порождён регламентным или создано самостоятельно

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

Что выбрать под задачу

Регламентное задание

Подходит для повторяющихся операций: ночной обмен с сайтом, ежечасная загрузка курсов валют, еженедельная архивация. Ограничение — требует настройки расписания и контроля блокировок.

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

Подходит для разовых длительных действий по запросу пользователя: массовое проведение документов, формирование большого отчёта. Ограничение — нет автоматического перезапуска, за повтором следит прикладной код.

Особенности работы в файловом и клиент-серверном режимах

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

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

Для файловых баз часто используют обходной путь: запуск отдельного сеанса 1С специальной командой с параметром /Execute или настройку внешнего планировщика Windows, который периодически стартует сеанс, выполняющий нужные методы. Это рабочая практика, но она требует аккуратности с правами пользователя, под которым стартует сеанс.

Как создать и настроить: практический порядок действий

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

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

Порядок запуска фонового задания
  1. 1
    Создайте серверный общий модуль и добавьте в него экспортную процедуру с нужной логикой
  2. 2
    В месте вызова напишите: ФоновыеЗадания.Выполнить("ИмяМодуля.ИмяПроцедуры", Параметры, Ключ, Наименование)
  3. 3
    Убедитесь, что параметры сериализуемы: ссылки, числа, строки, структуры
  4. 4
    Откройте консоль заданий (или стандартную обработку) и проверьте состояние — активно или завершено
  5. 5
    При аварийном завершении прочитайте описание ошибки в свойстве ИнформацияОбОшибке задания

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

Типичные ошибки и как их избежать

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

Ещё одна ошибка — запуск длительной операции синхронно в клиентском коде вместо фонового задания. Интерфейс «зависает», пользователь прерывает сеанс, и транзакция откатывается посередине, оставляя данные в согласованном, но незавершённом состоянии.

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

Как проверить, что задания работают правильно

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

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

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

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

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

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

Активно неоправданно долго или статус «Завершено аварийно»

Журнал регистрации
Норма

Есть записи о начале и конце выполнения без сообщений об ошибках

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

Повторяющиеся ошибки обращения к данным или отсутствие записей о запуске

Результат прикладной логики
Норма

Данные появились: курсы загружены, документы проведены, обмен завершён

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

Задание «успешно» отработало, но данные не изменились — признак логической ошибки в коде

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

Итог

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

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

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

Может ли регламентное задание работать без фонового?

Нет. При наступлении времени запуска платформа всегда создаёт фоновое задание, которое и выполняет указанный метод. Регламентное задание — это только настройка расписания и привязка к методу.

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

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

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

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

Что будет, если фоновое задание с таким же ключом уже выполняется?

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

Можно ли отлаживать код фонового задания?

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

Кто выполняет регламентное задание, если у него не указан пользователь?

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