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