В процессе администрирования и разработки на платформе 1С:Предприятие часто возникает вопрос: как поведет себя система, если регламентное задание выполняется дольше, чем заданный интервал его повтора? Например, если мы настроили запуск каждые 15 минут, а фактическая работа алгоритма занимает 20 минут. Разберем детально механику работы планировщика, чтобы избежать конфликтов и нерационального использования ресурсов сервера.
Для понимания логики работы РегламентныеЗадания необходимо четко разделять два ключевых параметра расписания. Рассмотрим их подробнее:
Проанализируем ситуацию из вопроса: задание должно запускаться каждые 15 минут, но выполняется 20 минут. Если используется только параметр «Повторять через 900 сек», и первый запуск произошел в 12:00 (завершение в 12:20), то второй запуск произойдет ровно в 12:20. Почему? Потому что в 12:15 система попыталась запустить задание, увидела, что оно еще выполняется, и «встала в очередь», запустив сеанс немедленно после освобождения ресурса.
Выясним, что произойдет, если в расписании указаны оба значения. В платформе 1С реализована логика выбора наибольшего времени ожидания. Проанализируем пример:
Допустим, установлены настройки: Повторять через 600 сек и Повторять с паузой 100 сек.
Рассмотрим, как режим работы базы данных влияет на исполнение расписания, так как это часто становится причиной того, что задания «не запускаются»:
В клиент-серверном варианте за запуск отвечает менеджер кластера серверов 1С. Задания выполняются в фоновых сессиях на сервере (процессы rphost) полностью автоматически. Это наиболее надежный вариант, где расписание соблюдается с точностью до секунд.
В файловом варианте планировщик работает иначе. Задания не запускаются сами по себе. Для их работы должна быть открыта хотя бы одна клиентская сессия. В современных конфигурациях на базе БСП (Библиотеки Стандартных Подсистем) выполнение происходит в контексте обычного пользователя с некоторой периодичностью. Если в базе никого нет — регламентные задания «спят».
Посмотрим на настройки, которые часто игнорируют. В карточке регламентного задания есть поля для работы с ошибками:
Важно: По умолчанию платформа не запускает второй экземпляр одного и того же регламентного задания параллельно. Если вам необходимо выполнять однотипные действия одновременно в несколько потоков, следует программно создавать ФоновыеЗадания (объекты BackgroundJob).
Для детального анализа того, почему задание ведет себя не так, как ожидалось, недостаточно просто смотреть в Журнал Регистрации. Мы рекомендуем использовать инструмент «Консоль заданий» (стандартная обработка от 1С).
Она позволяет увидеть колонку «Конец» и «Плановое время следующего запуска». Это расчетное поле, которое платформа вычисляет динамически. Проанализировав его, вы точно поймете, какую паузу или интервал система применяет в данный момент.
Также учитывайте часовые пояса: расписание всегда привязано к времени сервера 1С. Если ваш сервер находится в другом регионе, все расчеты «через» и «с паузой» будут идти по его локальным часам, что критично для ночных заданий.