Мы часто сталкиваемся с ситуацией, когда добавленное нами регламентное задание в 1С:Предприятии не запускается автоматически по расписанию в клиент-серверном режиме, хотя типовые задания работают исправно. При этом задание может успешно выполняться при ручном запуске или в файловом режиме. Давайте вместе разберем эту проблему и найдем эффективные решения.
Анализ проблемы: почему новые регламентные задания могут не стартовать
Прежде чем перейти к решениям, рассмотрим основные симптомы и факторы, которые указывают на эту проблему:
Добавленное задание не запускается автоматически: Новое регламентное задание, созданное разработчиком, не стартует по заданному расписанию.
Типовые задания работают: Стандартные регламентные задания конфигурации (например, «Загрузка курсов валют») выполняются без проблем.
Ручной запуск работает: Если запустить проблемное задание вручную через обработку «Регламентные и фоновые задания» (кнопка «Выполнить сейчас»), оно отрабатывает корректно и без ошибок.
Работа в файловом режиме: В файловом режиме те же задания могут стартовать и выполняться нормально, что указывает на специфику клиент-серверного взаимодействия.
Проблема не в коде: Многочисленные эксперименты показывают, что код самого регламентного задания не содержит ошибок. Например, если код проблемного задания интегрировать в типовое, оно будет выполняться. Если создать полную копию рабочего типового задания, эта копия также не будет стартовать.
Эти наблюдения приводят нас к выводу, что причина кроется не в логике нашего кода, а в настройках самого регламентного задания, платформы или сервера 1С.
Решение 1: Корректировка Общего реквизита "Область данных"
Один из наиболее часто встречающихся и действенных способов решения этой проблемы, особенно для новых, непредопределенных регламентных заданий, связан с настройкой общего реквизита ОбластьДанных.
Открываем настройки регламентного задания:
В режиме «Предприятие» переходим в раздел «Администрирование» -> «Поддержка и обслуживание» -> «Регламентные и фоновые задания».
Находим наше проблемное регламентное задание и открываем его свойства двойным кликом или через контекстное меню.
Переходим на вкладку «Дополнительно».
На этой вкладке нам потребуется перейти в раздел «Общие реквизиты».
Обращаем внимание на строку «Область данных»:
Мы можем увидеть, что для нового задания здесь стоит выбор «Автоматически».
При этом данный параметр, скорее всего, будет заблокирован для редактирования, так как общий реквизит ОбластьДанных находится на поддержке конфигурации.
Изменяем уровень поддержки для Общего реквизита «Область данных»:
Находим раздел «Общие» -> «Общие реквизиты» -> «Область данных».
Изменяем уровень поддержки для реквизита ОбластьДанных на «Редактируется с сохранением поддержки». Нам может потребоваться подтвердить это действие.
Нажимаем «ОК» и сохраняем изменения в конфигурации.
Устанавливаем значение «Не используется» для Области данных в регламентном задании:
Возвращаемся в режим «Предприятие» и снова открываем свойства нашего регламентного задания (шаг 1).
Переходим на вкладку «Дополнительно» -> «Общие реквизиты».
Теперь строка «Область данных» должна быть доступна для редактирования.
Выставляем значение «Не используется».
Сохраняем изменения в регламентном задании.
Обновляем конфигурацию базы данных:
Возвращаемся в «Конфигуратор» и обновляем конфигурацию базы данных (F7).
После выполнения этих шагов новые регламентные задания должны начать выполняться по расписанию. Этот метод помог многим пользователям решить данную проблему.
Решение 2: Проверка и корректировка расписания регламентного задания
Иногда причина может быть гораздо проще и крыться в неочевидных настройках расписания.
Открываем расписание регламентного задания:
В режиме «Предприятие» переходим в настройки нашего регламентного задания.
Открываем форму расписания.
Обращаем внимание на вкладку «Общие»:
Несмотря на то, что мы можем настроить недельное или месячное расписание (например, «По понедельникам» или «Первого числа месяца»), критически важно, чтобы в поле «Повторять каждые:» было установлено значение «1 (дн.)».
Если это значение равно «0», система может не проверять расписание ежедневно, и задание не будет запускаться, даже если другие параметры (дни недели, месяцы) настроены правильно.
Полное пересохранение расписания:
Даже если расписание выглядит корректно, иногда помогает его полное пересохранение. Зайдите в расписание, внесите любое незначительное изменение (например, поменяйте секунды и верните обратно), сохраните расписание, а затем сохраните регламентное задание. Возможно, это поможет обновить внутренние кэши.
Решение 3: Проверка прав доступа и пользователя
Регламентные задания выполняются от имени определенного пользователя. Недостаточные права этого пользователя могут препятствовать запуску или корректному выполнению заданий.
Убедимся в наличии пользователя:
В свойствах регламентного задания проверьте, какой пользователь указан для его выполнения. Если пользователь не задан, задание будет выполняться от имени пользователя по умолчанию (часто это администратор).
Проверим права доступа пользователя:
Убедитесь, что пользователь, от имени которого запускается задание, активен и имеет все необходимые роли и права для выполнения всех операций, заложенных в коде задания (доступ к документам, регистрам, справочникам и т.д.).
Если в журнале регистрации есть ошибки типа «Нарушение прав доступа!», это указывает на проблему с правами.
Использование привилегированного режима:
Если код регламентного задания находится в общем модуле, убедитесь, что для этого общего модуля установлен флаг «Привилегированный». Это позволит коду выполняться с полными правами, игнорируя права текущего пользователя, что часто решает проблемы с доступом.
// Пример установки привилегированного режима для части кода
// В управляемой форме:
Если ОбщийМодуль.НачатьПривилегированныйРежим() Тогда
ОбщийМодульСервер.ВыполнитьЗадачуСПолнымиПравами();
ОбщийМодуль.ЗавершитьПривилегированныйРежим();
КонецЕсли;
// Или если весь общий модуль вызывается регламентным заданием,
// достаточно поставить флаг "Привилегированный" в свойствах модуля в конфигураторе.
Решение 4: Проверка блокировки регламентных заданий на сервере 1С:Предприятия
На уровне кластера серверов 1С:Предприятия может быть установлена глобальная блокировка для всех регламентных заданий в определенной информационной базе.
Доступ к администрированию серверов 1С:Предприятия:
Эту настройку проверяют системные администраторы или разработчики, имеющие доступ к консоли администрирования серверов 1С.
Убедитесь, что там снята галочка «Блокировка регламентных заданий включена». Если она установлена, регламентные задания не будут выполняться по расписанию, хотя ручной запуск останется возможным.
Решение 5: Отладка и анализ журнала регистрации
Журнал регистрации 1С:Предприятия — наш основной инструмент для диагностики любых проблем. Также эффективна отладка на сервере.
Изучаем журнал регистрации:
Откройте «Администрирование» -> «Поддержка и обслуживание» -> «Журнал регистрации».
Установите отбор по событию «Регламентное задание» или по имени нашего задания.
Посмотрите, есть ли записи о попытках запуска, ошибках, нарушениях прав доступа или других предупреждениях, связанных с нашим заданием. Даже если задание не стартует, иногда могут быть записи о том, почему оно не было запланировано.
Особенно внимательно изучите записи, совпадающие по времени с ожидаемым стартом задания.
Используем отладку на сервере:
Если все предыдущие шаги не помогли, и вы уверены, что задание должно было запуститься, включите отладку на сервере 1С.
Установите точку останова в самом начале вызываемой процедуры общего модуля регламентного задания.
Дождитесь времени запуска задания и пошагово отследите выполнение. Это поможет точно определить место, где происходит затык или ошибка, которая, возможно, не регистрируется явно.
Решение 6: Особенности файлового режима
Если мы тестировали задание в файловом режиме и оно там работало, важно понимать, как регламентные задания функционируют в этом режиме.
Обработчик ожидания:
В файловом режиме регламентные задания не запускаются автоматически службой сервера 1С, как в клиент-серверном варианте. Для их выполнения необходим запущенный сеанс 1С:Предприятия.
Типовые конфигурации часто имеют специальный обработчик ожидания, который инициирует проверку и запуск регламентных заданий. Этот обработчик ожидания обычно привязан к конкретному пользователю.
Пример кода для файлового режима (из модуля обычного приложения):
ЭтоФайловаяИБ = ПроцедурыОбменаДанными.ОпределитьЭтаИнформационнаяБазаФайловая;
Если ЭтоФайловаяИБ Тогда
ПользовательДляВыполненияРеглЗаданий = Константы.ПользовательДляВыполненияРегламентныхЗаданийВФайловомВарианте.Получить;
Если глТекущийПользователь = ПользовательДляВыполненияРеглЗаданий Тогда
// с интервалом секунд вызываем процедуру работы с регламентными заданиями
ПоддержкаРегламентныхЗаданиеДляФайловойВерсии;
ИнтервалДляОпроса = Константы.ИнтервалДляОпросаРегламентныхЗаданийВФайловомВарианте.Получить;
Если ИнтервалДляОпроса = Неопределено ИЛИ ИнтервалДляОпроса = 0 Тогда
ИнтервалДляОпроса = 60;
КонецЕсли;
ПодключитьОбработчикОжидания("ПоддержкаРегламентныхЗаданиеДляФайловойВерсии", ИнтервалДляОпроса);
КонецЕсли;
КонецЕсли;
Мы видим, что такой механизм требует, чтобы под указанным пользователем был запущен клиент 1С.
Решение 7: Шаманизм с типом приложения (когда задание запускается, но не выполняет действий)
Встречаются случаи, когда регламентное задание по расписанию запускается (мы видим это в фоновых заданиях), но фактически не выполняет никаких действий, заложенных в его коде, и при этом не выдает ошибок. Это может быть связано с особенностями внутренней компиляции или кэширования.
Последовательность действий:
Откройте «Конфигуратор».
Для всей конфигурации установите режим запуска «Обычное приложение» (Свойства конфигурации -> Режим запуска).
Для общего модуля, содержащего процедуру регламентного задания, установите флаг «Клиент (обычное приложение)» (Свойства общего модуля).
Сохраните конфигурацию базы данных.
Запустите 1С в режиме предприятия (она откроется в режиме обычного приложения).
Вернитесь в «Конфигуратор».
Для общего модуля, содержащего процедуру регламентного задания, снимите флаг «Клиент (обычное приложение)».
Для всей конфигурации установите режим запуска обратно на «Управляемое приложение».
Сохраните конфигурацию базы данных.
Это неочевидное действие иногда помогает «оживить» регламентное задание.
Решение 8: Пересоздание задания или очистка кэша
Иногда самые простые действия оказываются наиболее эффективными.
Пересоздание регламентного задания:
Попробуйте удалить неработающее регламентное задание и создать его заново, возможно, даже с другим именем. Это может помочь избавиться от некорректных внутренних связей или метаданных.
Очистка кэша:
Как локального кэша клиента 1С, так и кэша на сервере. Некорректный кэш может приводить к странному поведению системы.
Очистить кэш можно вручную, удалив содержимое папок кэша 1С, или используя специальные утилиты.
Заключение
Проблема с незапускающимися регламентными заданиями может иметь несколько причин. Мы рассмотрели наиболее распространенные из них, начиная от настроек общего реквизита ОбластьДанных, который часто является основным виновником, и заканчивая проверкой расписания, прав доступа, блокировок на сервере и методами отладки. Системный подход и последовательная проверка каждого из этих пунктов помогут нам выявить и устранить причину некорректной работы регламентных заданий в 1С:Предприятии.