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