Почему не запускается регламентное задание в 1С и как его правильно настроить?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Анализ исходного кода и настроек

Для начала проанализируем ситуацию, описанную пользователем. Имеется процедура ОтправкаНапоминаний, которая должна выполняться по расписанию. Код выглядит следующим образом:


Процедура ОтправкаНапоминаний() Экспорт
    Получатели = Справочники.Параметры.НайтиПоНаименованию("ПолучателиПланаПроизводства").Строка;
    ТемаПисьма = "НАПОМИНАНИЕ! Сумма плана производства";
    ТекстПисьма = "В течение 3 часов необходимо предоставить Кузнецовой ВМ актуальную информацию по сумме плана производства на ближайшие 4 месяца для формирования отчета ""Загрузка производства СЭТЗ"".";
    РаботаСПочтой.ПоставитьПисьмоВОчередьНаотправку(Получатели, ТемаПисьма, ТекстПисьма);    
КонецПроцедуры

Проанализируем этот код. Он выполняет поиск в справочнике Справочники.Параметры и обращается к методу общего модуля РаботаСПочтой.ПоставитьПисьмоВОчередьНаОтправку. При ручном запуске через внешнюю обработку код отрабатывает, что подтверждает его работоспособность в контексте сервера. Однако при переносе в РегламентныеЗадания автоматического срабатывания не происходит. Выясним причину.

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

Разберем фундаментальное различие в работе планировщика заданий, которое зависит от типа расположения базы данных:

  1. Файловая база: В файловом варианте для работы регламентных заданий необходимо наличие запущенного сеанса пользователя, который будет выполнять роль «планировщика». Если в базе никто не работает, задания не запустятся. Кроме того, в файловом варианте существует ограничение: задания не могут выполняться чаще, чем раз в 60 секунд. Попытка установить интервал в 3 секунды, как планировал автор, здесь просто не сработает.
  2. Клиент-серверная база: Здесь за выполнение отвечает менеджер кластера серверов 1С. Задания выполняются в фоновых сеансах автоматически, даже если в системе нет активных пользователей. Интервал в 3 секунды технически возможен, но крайне не рекомендуется из-за высокой нагрузки на сервер (каждый запуск — это создание нового фонового процесса).

Шаг 1: Проверка блокировки в консоли администрирования

Если ваша база работает в клиент-серверном режиме, первое, что мы должны проверить — это настройки на уровне кластера серверов. Рассмотрим, как это сделать:

Откроем Консоль администрирования серверов 1С:Предприятия. Найдем нашу информационную базу и откроем её свойства. Обратим внимание на флажок «Блокировка регламентных заданий включена». Если этот флаг установлен, система игнорирует любые расписания. Это часто происходит после восстановления базы из копии (система устанавливает блокировку автоматически, чтобы не пошли повторные рассылки или обмены данными).

Шаг 2: Настройка в пользовательском режиме (БСП)

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

Выясним, как проверить это в интерфейсе:

  1. Перейдем в раздел НСИ и администрирование (или «Администрирование»).
  2. Выберем пункт Обслуживание, далее — Регламентные и фоновые задания.
  3. В открывшемся списке найдем наше задание ОтправкаНапоминаний.
  4. Проверим состояние флажка Включено. Если в списке задание отображается серым цветом или в колонке состояния указано «Выключено», его нужно активировать именно здесь, так как пользовательские настройки имеют приоритет над настройками метаданных.

Шаг 3: Проверка контекста исполнения и прав доступа

Рассмотрим важный аспект: под каким пользователем запускается задание. В конфигураторе в свойствах регламентного задания есть поле ИмяПользователя. Если оно не заполнено, задание выполняется от имени «Системы» (без определенных прав).

Это может привести к тому, что метод НайтиПоНаименованию не найдет нужный элемент справочника из-за ограничений прав доступа на уровне RLS (Record Level Security), или процедура ПоставитьПисьмоВОчередьНаОтправку не сможет записать данные в регистр. Рекомендуется создать специального пользователя (например, «Robot») с полными правами и назначить его ответственным за выполнение задания.

Также проверим свойства общего модуля, в котором расположена процедура ОтправкаНапоминаний. Модуль должен иметь следующие свойства:

Шаг 4: Использование Журнала регистрации для диагностики

Когда регламентное задание «падает» с ошибкой, оно не выдает никаких окон пользователю. Посмотрим, как найти информацию об ошибке:

Откроем Журнал регистрации и установим фильтр по колонке «Приложение» — выберем Фоновое задание. Также можно отфильтровать по метаданному РегламентноеЗадание.ОтправкаНапоминаний. Если выполнение начиналось, но прервалось ошибкой, мы увидим там красный значок и описание исключения, например: "Метод объекта не обнаружен" или "Ошибка прав доступа".

Рекомендация по интервалам запуска

Проанализируем желание автора запускать задание каждые 3 секунды. С технической точки зрения 1С тратит определенное время на инициализацию фонового сеанса. Если процедура записи в регистр выполняется 1-2 секунды, а само создание сеанса занимает еще столько же, то сервер будет находиться в состоянии постоянного порождения новых процессов. Это может привести к «зависанию» очереди фоновых заданий.

Оптимальным решением будет:

  1. Увеличить интервал до 30-60 секунд.
  2. Или изменить логику: задание запускается раз в 5 минут, но внутри себя в цикле обрабатывает накопившуюся очередь (если это допустимо).

Для оперативной отправки почты лучше использовать механизм Очереди заданий или специализированные брокеры сообщений, но в рамках стандартного функционала 1С интервал в 1 минуту является «золотым стандартом» стабильности.

Итоговый чек-лист для исправления проблемы

Подведем итог. Чтобы ваше регламентное задание заработало, выполните следующие действия:

  1. Убедитесь, что в свойствах базы на сервере 1С снята блокировка регламентных заданий.
  2. Зайдите в Пользовательский режим и включите задание в списке «Регламентные и фоновые задания».
  3. Назначьте заданию конкретного пользователя с достаточными правами.
  4. Проверьте Журнал регистрации на наличие скрытых ошибок выполнения.
  5. Если база файловая — обеспечьте наличие постоянно запущенного сеанса и интервал не менее 60 секунд.

Соблюдение этих правил гарантирует стабильную работу ваших автоматизированных процессов в 1С.

← На главную