Работа с регламентными заданиями — это базовая задача любого разработчика 1С, однако на практике новички часто сталкиваются с ситуацией, когда созданное в конфигураторе задание упорно отказывается запускаться. В рамках данной статьи мы разберем классическую ситуацию: создана пустая база, настроено расписание с коротким интервалом, но в журнале регистрации — тишина. Мы пройдем по шагам, выясним причины такого поведения и научимся правильно настраивать автоматические процессы.
Первое, на что стоит обратить внимание, — это флаг Предопределенное в свойствах регламентного задания в Конфигураторе. Давайте проанализируем, зачем он нужен. Если этот флаг не установлен, задание существует в метаданных как «чертеж», а для динамического управления ими удобно использовать внешний регламент для 1С. Чтобы такое задание заработало, его экземпляр нужно создать программно или через специальную обработку в режиме «Предприятие».
Если же мы устанавливаем флаг Предопределенное, система при обновлении конфигурации базы данных автоматически создает запись в таблице регламентных заданий. Рассмотрим важный нюанс: если вы уже один раз запустили базу с этим флагом, а потом решили поменять расписание в Конфигураторе, изменения могут не подтянуться. Это происходит потому, что в базе данных уже живет «старая» копия задания. В таких случаях рекомендуется либо удалить задание через консоль заданий и дождаться его пересоздания, либо обновить настройки программно.
Для программного обновления настроек предопределенного задания можно использовать консоль кода с ИИ-помощником или следующий подход:
МетаданныеЗадания = Метаданные.РегламентныеЗадания.МоеЗадание;
Задание = РегламентныеЗадания.НайтиПредопределенное(МетаданныеЗадания);
Если Задание <> Неопределено Тогда
Задание.Использование = Истина;
Задание.Записать();
КонецЕсли;
Одной из частых ошибок является установка слишком маленького интервала повторения, например, каждые 3 секунды. Выясним, почему это не работает. В платформе 1С существует негласный стандарт: периодичность выполнения заданий не должна быть меньше 60 секунд. Особенно критично это для файлового режима работы.
В файловой базе регламентные задания выполняются последовательно, и платформа накладывает жесткое ограничение: пауза между запусками не может быть менее 1 минуты. Если вы укажете 3 секунды, система округлит это значение (часто вниз или до минимально допустимого порога), и задание либо не запустится из-за конфликта планировщика, либо будет игнорироваться. Помните, что каждый запуск фонового задания — это создание нового сеанса, проверка лицензий и инициализация параметров, что создает значительную нагрузку.
Часто возникает путаница в настройках расписания. Разберем эти два параметра подробнее:
Как это работает вместе? Платформа использует разрешительно-ограничительный режим. Задание запустится только тогда, когда будут соблюдены оба условия. Например, если Повторять через = 60 сек, а Повторять с паузой = 30 сек, и само задание выполнялось 40 секунд:
В данном случае сработает ограничение по паузе, и задание запустится через 70 секунд.
Если мы работаем в файловой базе, важно понимать механику запуска. В отличие от клиент-серверного варианта, где за задания отвечает менеджер кластера, в файловом режиме для выполнения регламентных заданий необходим активный сеанс.
Ранее требовалось запускать отдельное «зацикленное» приложение, но в современных версиях платформы 8.3 ситуация упростилась: платформа сама инициирует фоновый процесс, пока открыт хотя бы один пользовательский сеанс. Однако, если все пользователи выйдут из базы, регламентные задания остановятся. Также стоит проверить, не установлена ли блокировка регламентных заданий в параметрах информационной базы (это можно сделать через консоль администрирования или программно).
Рассмотрим, для чего нужны дополнительные поля в настройках задания:
Наименование: используется для идентификации задания в списке. Именно это строковое представление вы увидите в консоли заданий или в журнале регистрации. Важно задавать понятные имена, чтобы диагностика проблем не превращалась в квест.
Ключ (Key): это уникальный идентификатор для логической группировки. Главная функция ключа — предотвращение одновременного запуска нескольких экземпляров одного и того же задания. Если система видит, что задание с ключом "ОбменДанными" уже выполняется, она не запустит второе задание с таким же ключом, пока первое не завершится. Это критически важно для процессов, которые не допускают параллельного исполнения (например, расчет себестоимости или загрузка из внешнего файла).
Посмотрим на ситуацию со стороны мониторинга. Пользователи часто жалуются, что в колонке Данные журнала регистрации пусто. Это нормально для регламентных заданий. Платформа фиксирует только события Фоновое задание. Запуск и Фоновое задание. Завершение. Чтобы увидеть реальный результат работы (например, сколько документов проведено), необходимо внутри процедуры задания использовать метод ЗаписьЖурналаРегистрации().
Пример правильного логирования внутри задания:
Процедура ВыполнитьОбработку() Экспорт
Попытка
// Логика задания
Количество = 10;
ЗаписьЖурналаРегистрации("МоеРегламентноеЗадание", УровеньЖурналаРегистрации.Информация, , , "Обработано объектов: " + Количество);
Исключение
ЗаписьЖурналаРегистрации("МоеРегламентноеЗадание", УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецПроцедуры
Также помните, что в типовых конфигурациях (на базе БСП) для управления заданиями существует встроенная форма «Регламентные и фоновые задания». Если же вы разрабатываете конфигурацию с нуля, вам обязательно понадобится внешняя обработка «Консоль заданий», так как стандартными средствами «1С:Предприятия» без доработок увидеть список и состояние заданий невозможно.
Если ваше задание не запускается, проверьте следующие пункты:
AllowExecuteScheduledJobs)?Соблюдение этих правил позволит вам избежать большинства проблем с автоматизацией задач в 1С и обеспечит стабильную работу ваших механизмов.