Часто в работе администратора или разработчика 1С возникает ситуация, когда РегламентноеЗадание, добавленное через механизм ДополнительныеОтчетыИОбработки, прекрасно отрабатывает при ручном запуске через кнопку «Выполнить сейчас», но полностью игнорирует заданное расписание. Давайте подробно разберем, почему это происходит и как настроить систему так, чтобы автоматизация работала без сбоев.
Прежде чем приступать к глубокой отладке сервера, важно проанализировать логику планировщика. В клиент-серверных вариантах работы 1С:ERP часто случается так, что «неопределенное» состояние задания связано не с ошибкой платформы, а с логическими ограничениями, которые мы накладываем в настройках самого расписания.
Рассмотрим основные моменты, которые необходимо проверить:
Рассмотрим ситуацию, когда задание должно выполняться в рабочие дни с определенной частотой. Важно не только указать дни недели, но и настроить параметры «завершать через» и «повторять после завершения».
Разберем типичный пример настройки, которая гарантирует стабильную работу:
Допустим, нам нужно, чтобы задание работало по будням. Для этого в настройках РасписаниеРегламентногоЗадания мы должны явно указать:
1. Дни выполнения: Выбираем «каждый день» и отмечаем флажками «понедельник», «вторник», «среда», «четверг», «пятница».
2. Временной интервал: Задаем время начала и окончания работы (например, с 12:50:00 по 12:58:00).
3. Частота и повторение: Это критический узел настройки. Чтобы планировщик корректно перезапускал процесс, необходимо указать интервал повторения. Рассмотрим пример кода, который логически описывает эту настройку:
// Пример настройки параметров регламентного задания в коде
Расписание = Новый РасписаниеРегламентногоЗадания;
Расписание.ДниНедели.Добавить(ДеньНедели.Понедельник);
Расписание.ДниНедели.Добавить(ДеньНедели.Вторник);
// ... добавление остальных дней
Расписание.ВремяНачала = '00010101125000';
Расписание.ВремяОкончания = '00010101125800';
Расписание.ПовторятьЧерезСекунд = 5;
Расписание.ЗавершатьЧерезСекунд = 60;
Если вы не укажете корректно ПовторятьЧерезСекунд, после первого же успешного выполнения планировщик посчитает, что задание выполнено, и не будет инициировать новый цикл до наступления нового дня, что и приводит к состоянию «неопределено» в колонках журнала заданий.
Если после корректировки расписания задание все равно не запускается автоматически, выполните следующие действия:
Помните, что для стабильной работы ДополнительныеОтчетыИОбработки крайне важно, чтобы метод, выполняющий основную логику, был защищен блоком Попытка...Исключение. Если в коде возникнет необработанное исключение, сервер может пометить фоновое задание как «зависшее» или «ошибочное», что заблокирует его автоматический перезапуск.
Проанализируйте логику вашей обработки: если она выполняет длительные операции, предусмотрите механизм фиксации прогресса, чтобы в случае внезапного завершения процесса (например, из-за ограничения ЗавершатьЧерезСекунд) система могла корректно продолжить выполнение при следующем запуске.