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

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

Как создать регламентное задание в 1С

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

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

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

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

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

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

Создание регламентного задания в конфигураторе

Откройте конфигуратор, в дереве конфигурации перейдите в ветку «Общие — Регламентные задания» и добавьте новый объект. Задайте осмысленное имя, например «ЗагрузкаКурсовВалют» — по нему задание будет идентифицироваться в журналах и консолях.

Ключевые свойства объекта:

  • Метод — имя процедуры или функции общего модуля, которая будет выполняться. Указывается в формате «ИмяМодуля.ИмяПроцедуры».
  • Расписание — периодичность запуска: ежедневно, по дням недели, с интервалом в секундах и т.д.
  • Использование — флаг, включающий задание. У предопределённых заданий включён по умолчанию.
  • Предопределённое — если установлено, задание существует всегда и его нельзя удалить в пользовательском режиме.
  • Количество повторов при аварийном завершении и интервал повтора — сколько раз и с какой паузой платформа перезапустит упавшее задание.
  • Ключ — произвольная строка, запрещающая одновременный запуск заданий с одинаковым ключом.
Порядок создания задания
  1. 1
    Откройте конфигуратор, ветка «Общие — Регламентные задания», добавьте новый объект
  2. 2
    Укажите имя, метод обработчика и настройте расписание
  3. 3
    Напишите процедуру-обработчик в общем модуле с признаком «Сервер»
  4. 4
    Обновите конфигурацию базы данных и включите задание в пользовательском режиме
  5. 5
    Проверьте выполнение через консоль заданий и журнал регистрации

Требования к общему модулю и обработчику

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

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

// Общий модуль «РегламентныеОперацииСервер»

Процедура ЗагрузитьКурсыВалют() Экспорт

ЗаписьЖурналаРегистрации("Загрузка курсов валют",

УровеньЖурналаРегистрации.Информация, , , "Начало выполнения");

// ... основная логика загрузки ...

ЗаписьЖурналаРегистрации("Загрузка курсов валют",

УровеньЖурналаРегистрации.Информация, , , "Выполнение завершено");

КонецПроцедуры

Настройка расписания

Расписание редактируется в свойстве «Расписание» объекта задания. Доступны три вкладки: «Общие» (даты начала и окончания действия, повторение), «Дневное» (время начала и окончания, интервал повтора в течение дня) и «Недельное/Месячное» (дни недели, месяцы, конкретные дни месяца).

Практические рекомендации по расписанию: не ставьте тяжёлые задания на одно и то же время — например, все на 00:00. Разнесите их с шагом 10–15 минут, чтобы не создавать пиковую нагрузку на сервер. Для заданий с коротким интервалом (каждые 5 минут) убедитесь, что одна итерация гарантированно завершается быстрее интервала, иначе возможны накопления очереди выполнения.

Если задание должно работать только в рабочее время, ограничьте «Время начала» и «Время завершения» на вкладке «Дневное» — вне этого окна запуски выполняться не будут.

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

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

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

Сравнение режимов выполнения

Клиент-серверный режим

Задания выполняет сервер автоматически. Подходит для любых расписаний, включая ночные. Требует настроенного кластера серверов.

Файловый режим

Нужен постоянно запущенный сеанс с ВыполнитьОбработкуЗаданий(). Подходит для небольших баз; при закрытии сеанса задания останавливаются.

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

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

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

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

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

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

Задание включено, есть записи о выполнении фоновых заданий

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

Задание активно, но фоновых заданий нет — проверяйте блокировку и расписание

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

События начала и завершения без ошибок

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

Записи с уровнем «Ошибка» в обработчике

Результат работы
Норма

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

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

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

Типичные ошибки и их устранение

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

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

FAQ

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

Да. В консоли заданий типовых конфигураций есть команда «Выполнить сейчас». Программно это делается через метод РегламентныеЗадания.ВыполнитьЗадание() или созданием фонового задания с тем же методом.

Почему задание выполняется несколько раз подряд без ошибок?

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

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

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

Нужны ли пользователю права для выполнения регламентного задания?

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

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

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

Задание работает, но очень медленно. Что делать?

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

Итог

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

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