Почему перестало работать регламентное задание в 1С:УТ 10.3 и как это исправить?

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

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

Анализ основной причины: Коварство настроек расписания

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

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

Рассмотрим правильный алгоритм настройки для ежедневного выполнения с интервалом:

  1. Откроем консоль регламентных заданий или найдем объект в конфигураторе.
  2. Перейдем в настройки расписания.
  3. На закладке «Общие» убедимся, что указана дата начала и периодичность «повторять каждые 1 день».
  4. На закладке «Дневное» в поле «Повторять каждые» установим значение 1 (или более, в зависимости от требуемого интервала в секундах).
  5. Проверим, что время завершения не ограничивает работу задания раньше времени его фактического старта, в чем поможет подсистема "Дополнительные регламентные задания" для "Управления торговлей 10.3".

Влияние серверного кэша и динамических обновлений

Часто программисты 1С сталкиваются с тем, что код задания был изменен, но сервер продолжает выполнять старую версию или вовсе выдает ошибку. Это происходит из-за так называемого «демонического» (динамического) обновления. Проанализируем, как это лечится.

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

  1. Остановим службу сервера 1С:Предприятие (1C:Enterprise 8.3 Server Agent).
  2. Перейдем в каталог данных сервера (обычно это C:\Program Files\1cv8\srvinfo).
  3. Найдем папку с GUID вашей информационной базы.
  4. Внутри нее удалим содержимое папок snaccfg и reg_1541 (но будьте осторожны, не удаляйте файлы конфигурации самой базы).
  5. Запустим службу сервера снова.

Этот метод принудительно заставляет планировщик переинициализировать все задания на основе актуальных метаданных из таблицы SQL.

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

Если ни одно регламентное задание в базе не запускается, нужно проверить общие настройки информационной базы на уровне кластера серверов 1С. Разберем, где спрятана эта настройка.

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

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

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

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

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


// ОШИБОЧНЫЙ КОД ДЛЯ РЕГЛАМЕНТНОГО ЗАДАНИЯ
Процедура ВыполнитьОбмен() Экспорт
    Если Не ПроверитьДоступКФайлу() Тогда
        Предупреждение("Нет доступа к файлу!"); // Это вызовет зависание или падение задания
        Возврат;
    КонецЕсли;
    // ... логика обмена
КонецПроцедуры

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

Диагностика через Журнал регистрации и отладку

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

Чтобы отладить серверное задание, которое «не хочет» запускаться само, мы можем временно запустить его программно из внешней обработки, используя метод:

ВыполнитьОбработку() объекта РегламентноеЗадание.

Или использовать специальную консоль заданий, которая позволяет запустить процедуру задания в текущем сеансе. Если в текущем сеансе (под вашими правами) всё работает, а по расписанию нет — значит, проблема либо в правах пользователя службы сервера, либо в параметрах расписания, которые мы разобрали в самом начале.

Подводя итог, всегда начинайте проверку с самого простого — с параметров расписания Повторять каждые, и только после этого переходите к сложным манипуляциям с кэшем и правами доступа операционной системы. Берегите свои нервы и внимательно проверяйте каждый параметр планировщика!

← На главную