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

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

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

Проверка блокировки регламентных заданий

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

Запуск и проверка задания вручную

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


ПараметрыЗадания = Новый Массив;
// Добавляем необходимые параметры, если они нужны
ИмяМетода = "МодульБронирования.ВыполнитьОтложеннуюОбработку";
ФоновыеЗадания.Выполнить(ИмяМетода, ПараметрыЗадания);

Разберем частую ошибку: первый параметр для ФоновыеЗадания.Выполнить — это всегда строка в формате ИмяМодуля.ИмяМетода. Часто начинающие программисты называют общий модуль и процедуру в нем одинаково. В таком случае вызов может завершиться ошибкой вида «Метод задания не найден». Избегайте дублирования имен в метаданных.

Настройка прав и контекста выполнения

Проанализируем права доступа. Регламентные задания выполняются в фоновом режиме на сервере. Обратите внимание на следующие моменты:

  1. Если в настройках задания не указан конкретный пользователь, оно запускается с минимальными системными правами.
  2. Если у этого системного пользователя нет прав на запись в нужный регистр сведений, обновление данных не произойдет.
  3. Для решения этой проблемы можно установить флаг Привилегированный режим в свойствах регламентного задания в конфигураторе.

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

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

Настройка отладки фоновых заданий

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

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

Особенности файловых баз и расписания

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

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

← На главную