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

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

Ситуация, когда годами работающее регламентное задание внезапно перестает запускаться автоматически в одном из узлов распределенной информационной базы (РИБ), — классическая проблема для файловых вариантов 1С. При этом ручной запуск через кнопку "Выполнить сейчас" или запуск через внешнюю обработку часто проходит успешно. Это вводит в заблуждение, так как код задания остается рабочим, но системный механизм вызова дает сбой. Рассмотрим подробно причины такого поведения и разберем по шагам методы восстановления работоспособности планировщика.

Анализируем особенности выполнения заданий в файловом режиме

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

Проанализируем также влияние публикации базы на веб-сервере (IIS/Apache). Если база опубликована, выполнение заданий может зависеть от параметра AllowExecuteScheduledJobs в файле настроек публикации default.vrd. Проверьте этот параметр: он должен иметь значение true. Также важно учитывать, что если к базе долго никто не обращается через веб-интерфейс, пул приложений IIS может "заснуть", что приведет к остановке всех фоновых процессов.

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

Выясним причину возможной блокировки на уровне всей информационной базы. Иногда после аварийного завершения работы или в результате некорректного обновления в системных установках включается запрет на выполнение регламентных заданий. Даже если в интерфейсе галочка "Включено" для конкретного задания стоит, общая блокировка будет приоритетнее.

Для проверки состояния блокировки выполним следующий код:


Блокировка = ПолучитьБлокировкуРегламентныхЗаданий();
Если Блокировка Тогда
    Сообщить("Внимание: Выполнение регламентных заданий заблокировано на уровне базы!");
КонецЕсли;

Если вы обнаружили, что блокировка установлена, ее необходимо снять программно:

УстановитьБлокировкуРегламентныхЗаданий(Ложь);

Диагностика зависших фоновых заданий

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

Проанализируем список текущих фоновых заданий. Для этого удобно использовать консоль заданий или программный перебор:


Отбор = Новый Структура;
Отбор.Вставить("Состояние", СостояниеФоновогоЗадания.Активно);
СписокЗаданий = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);

Для Каждого Задание Из СписокЗаданий Цикл
    // Проверяем по метаданным или имени, наше ли это задание
    Если Задание.Наименование = "ИмяВашегоЗадания" Тогда
        Сообщить("Найдено зависшее задание от " + Задание.Начало);
        // Попробуем отменить его
        Задание.Отменить();
    КонецЕсли;
КонецЦикла;

Очистка кэша планировщика 1Cv8JobScheduler

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

  1. Завершите все активные сеансы работы с базой 1С (включая работу через веб-сервер и конфигуратор).
  2. Перейдите в каталог временных файлов пользователя (обычно это %AppData%\1C\1cv8\идентификатор_базы).
  3. Найдите и полностью удалите папку 1Cv8JobScheduler.
  4. Перезапустите базу. При первом запуске 1С пересоздаст эти файлы на основе актуальных данных из конфигурации.

Устранение коллизий в РИБ и пересоздание задания

В распределенных системах иногда случается "затирание" внутренних идентификаторов (UUID) объектов метаданных или данных. Если задание перестало работать только в одной точке РИБ, возможно, произошел сбой синхронизации системных таблиц планировщика. Попробуем обновить регистрацию задания в системе:

1. Зайдите в список регламентных заданий, снимите галочку "Включено" и запишите задание.
2. Измените расписание (например, сдвиньте время на одну минуту) и снова запишите.
3. Включите задание обратно.

Если это не помогло, проанализируем "Дату окончания последнего запуска" в консоли заданий. Если по какой-то причине (например, из-за сбоя системных часов на ПК) там зафиксирована дата из будущего, планировщик будет игнорировать запуски до наступления этого момента. В этом случае поможет только программная очистка истории выполнения или пересоздание задания.

Настройка IIS для стабильной работы планировщика

Если ваша база 1С:Розница опубликована на IIS, выясним причину остановки процессов в настройках веб-сервера. Веб-сервер по умолчанию настроен на экономию ресурсов. Разберем, что нужно изменить:

  1. Откройте диспетчер служб IIS.
  2. Перейдите в раздел Пулы приложений (Application Pools).
  3. Выберите пул, на котором работает ваша база, и откройте Дополнительные параметры.
  4. Найдите параметр Тайм-аут простоя (минуты) (Idle Time-out). Установите его значение в 0. Это предотвратит выгрузку процесса из памяти при отсутствии активности пользователей.
  5. Проверьте права пользователя, под которым запущен пул (обычно это DefaultAppPool или NetworkService). У этого пользователя должен быть доступ к сетевым ресурсам, если ваше задание обращается к внешним HTTP-сервисам.

Проверка прав доступа при фоновом выполнении

Важно помнить, что когда вы нажимаете "Выполнить сейчас", код выполняется в контексте вашего текущего сеанса с вашими правами. Когда задание запускается планировщиком, оно выполняется в фоновом сеансе. Проанализируем типичную ошибку: если задание обращается к внешним файлам или использует COM-объекты, у системной учетной записи может не быть прав на эти действия, хотя у "Полных прав" пользователя в 1С они есть. Рекомендуется всегда оборачивать основной код регламентного задания в блоки Попытка...Исключение с записью подробной ошибки в ЖурналРегистрации, чтобы увидеть реальную причину падения, если запуск все же происходит, но мгновенно прерывается.

Используя приведенный комплекс мер, мы сможем не только восстановить работу конкретного задания, но и обеспечить стабильность всей системы планирования в распределенной базе данных.

← На главную