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