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

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

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

Анализ проблемы: почему новые регламентные задания могут не стартовать

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

  1. Добавленное задание не запускается автоматически: Новое регламентное задание, созданное разработчиком, не стартует по заданному расписанию.
  2. Типовые задания работают: Стандартные регламентные задания конфигурации (например, «Загрузка курсов валют») выполняются без проблем.
  3. Ручной запуск работает: Если запустить проблемное задание вручную через обработку «Регламентные и фоновые задания» (кнопка «Выполнить сейчас»), оно отрабатывает корректно и без ошибок.
  4. Работа в файловом режиме: В файловом режиме те же задания могут стартовать и выполняться нормально, что указывает на специфику клиент-серверного взаимодействия.
  5. Проблема не в коде: Многочисленные эксперименты показывают, что код самого регламентного задания не содержит ошибок. Например, если код проблемного задания интегрировать в типовое, оно будет выполняться. Если создать полную копию рабочего типового задания, эта копия также не будет стартовать.

Эти наблюдения приводят нас к выводу, что причина кроется не в логике нашего кода, а в настройках самого регламентного задания, платформы или сервера 1С.

Решение 1: Корректировка Общего реквизита "Область данных"

Один из наиболее часто встречающихся и действенных способов решения этой проблемы, особенно для новых, непредопределенных регламентных заданий, связан с настройкой общего реквизита ОбластьДанных.

  1. Открываем настройки регламентного задания:
    • В режиме «Предприятие» переходим в раздел «Администрирование» -> «Поддержка и обслуживание» -> «Регламентные и фоновые задания».
    • Находим наше проблемное регламентное задание и открываем его свойства двойным кликом или через контекстное меню.
    • Переходим на вкладку «Дополнительно».
    • На этой вкладке нам потребуется перейти в раздел «Общие реквизиты».
  2. Обращаем внимание на строку «Область данных»:
    • Мы можем увидеть, что для нового задания здесь стоит выбор «Автоматически».
    • При этом данный параметр, скорее всего, будет заблокирован для редактирования, так как общий реквизит ОбластьДанных находится на поддержке конфигурации.
  3. Изменяем уровень поддержки для Общего реквизита «Область данных»:
    • Переходим в режим «Конфигуратор».
    • Открываем «Конфигурация» -> «Поддержка» -> «Настройка поддержки».
    • Нажимаем кнопку «Настройка поддержки объектов».
    • Находим раздел «Общие» -> «Общие реквизиты» -> «Область данных».
    • Изменяем уровень поддержки для реквизита ОбластьДанных на «Редактируется с сохранением поддержки». Нам может потребоваться подтвердить это действие.
    • Нажимаем «ОК» и сохраняем изменения в конфигурации.
  4. Устанавливаем значение «Не используется» для Области данных в регламентном задании:
    • Возвращаемся в режим «Предприятие» и снова открываем свойства нашего регламентного задания (шаг 1).
    • Переходим на вкладку «Дополнительно» -> «Общие реквизиты».
    • Теперь строка «Область данных» должна быть доступна для редактирования.
    • Выставляем значение «Не используется».
    • Сохраняем изменения в регламентном задании.
  5. Обновляем конфигурацию базы данных:
    • Возвращаемся в «Конфигуратор» и обновляем конфигурацию базы данных (F7).

После выполнения этих шагов новые регламентные задания должны начать выполняться по расписанию. Этот метод помог многим пользователям решить данную проблему.

Решение 2: Проверка и корректировка расписания регламентного задания

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

  1. Открываем расписание регламентного задания:
    • В режиме «Предприятие» переходим в настройки нашего регламентного задания.
    • Открываем форму расписания.
  2. Обращаем внимание на вкладку «Общие»:
    • Несмотря на то, что мы можем настроить недельное или месячное расписание (например, «По понедельникам» или «Первого числа месяца»), критически важно, чтобы в поле «Повторять каждые:» было установлено значение «1 (дн.)».
    • Если это значение равно «0», система может не проверять расписание ежедневно, и задание не будет запускаться, даже если другие параметры (дни недели, месяцы) настроены правильно.
  3. Полное пересохранение расписания:
    • Даже если расписание выглядит корректно, иногда помогает его полное пересохранение. Зайдите в расписание, внесите любое незначительное изменение (например, поменяйте секунды и верните обратно), сохраните расписание, а затем сохраните регламентное задание. Возможно, это поможет обновить внутренние кэши.

Решение 3: Проверка прав доступа и пользователя

Регламентные задания выполняются от имени определенного пользователя. Недостаточные права этого пользователя могут препятствовать запуску или корректному выполнению заданий.

  1. Убедимся в наличии пользователя:
    • В свойствах регламентного задания проверьте, какой пользователь указан для его выполнения. Если пользователь не задан, задание будет выполняться от имени пользователя по умолчанию (часто это администратор).
  2. Проверим права доступа пользователя:
    • Убедитесь, что пользователь, от имени которого запускается задание, активен и имеет все необходимые роли и права для выполнения всех операций, заложенных в коде задания (доступ к документам, регистрам, справочникам и т.д.).
    • Если в журнале регистрации есть ошибки типа «Нарушение прав доступа!», это указывает на проблему с правами.
  3. Использование привилегированного режима:
    • Если код регламентного задания находится в общем модуле, убедитесь, что для этого общего модуля установлен флаг «Привилегированный». Это позволит коду выполняться с полными правами, игнорируя права текущего пользователя, что часто решает проблемы с доступом.

// Пример установки привилегированного режима для части кода
// В управляемой форме:
Если ОбщийМодуль.НачатьПривилегированныйРежим() Тогда
    ОбщийМодульСервер.ВыполнитьЗадачуСПолнымиПравами();
    ОбщийМодуль.ЗавершитьПривилегированныйРежим();
КонецЕсли;

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

Решение 4: Проверка блокировки регламентных заданий на сервере 1С:Предприятия

На уровне кластера серверов 1С:Предприятия может быть установлена глобальная блокировка для всех регламентных заданий в определенной информационной базе.

  1. Доступ к администрированию серверов 1С:Предприятия:
    • Эту настройку проверяют системные администраторы или разработчики, имеющие доступ к консоли администрирования серверов 1С.
    • Откройте «Администрирование серверов 1С:Предприятия».
  2. Проверяем свойства информационной базы:
    • Находим нашу информационную базу в списке.
    • Открываем ее свойства.
    • Убедитесь, что там снята галочка «Блокировка регламентных заданий включена». Если она установлена, регламентные задания не будут выполняться по расписанию, хотя ручной запуск останется возможным.

Решение 5: Отладка и анализ журнала регистрации

Журнал регистрации 1С:Предприятия — наш основной инструмент для диагностики любых проблем. Также эффективна отладка на сервере.

  1. Изучаем журнал регистрации:
    • Откройте «Администрирование» -> «Поддержка и обслуживание» -> «Журнал регистрации».
    • Установите отбор по событию «Регламентное задание» или по имени нашего задания.
    • Посмотрите, есть ли записи о попытках запуска, ошибках, нарушениях прав доступа или других предупреждениях, связанных с нашим заданием. Даже если задание не стартует, иногда могут быть записи о том, почему оно не было запланировано.
    • Особенно внимательно изучите записи, совпадающие по времени с ожидаемым стартом задания.
  2. Используем отладку на сервере:
    • Если все предыдущие шаги не помогли, и вы уверены, что задание должно было запуститься, включите отладку на сервере 1С.
    • Установите точку останова в самом начале вызываемой процедуры общего модуля регламентного задания.
    • Дождитесь времени запуска задания и пошагово отследите выполнение. Это поможет точно определить место, где происходит затык или ошибка, которая, возможно, не регистрируется явно.

Решение 6: Особенности файлового режима

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

  1. Обработчик ожидания:
    • В файловом режиме регламентные задания не запускаются автоматически службой сервера 1С, как в клиент-серверном варианте. Для их выполнения необходим запущенный сеанс 1С:Предприятия.
    • Типовые конфигурации часто имеют специальный обработчик ожидания, который инициирует проверку и запуск регламентных заданий. Этот обработчик ожидания обычно привязан к конкретному пользователю.
  2. Пример кода для файлового режима (из модуля обычного приложения):
    
    ЭтоФайловаяИБ = ПроцедурыОбменаДанными.ОпределитьЭтаИнформационнаяБазаФайловая;
    Если ЭтоФайловаяИБ Тогда
        ПользовательДляВыполненияРеглЗаданий = Константы.ПользовательДляВыполненияРегламентныхЗаданийВФайловомВариант­е.Получить;
        Если глТекущийПользователь = ПользовательДляВыполненияРеглЗаданий Тогда
            // с интервалом секунд вызываем процедуру работы с регламентными заданиями
            ПоддержкаРегламентныхЗаданиеДляФайловойВерсии;
            ИнтервалДляОпроса = Константы.ИнтервалДляОпросаРегламентныхЗаданийВФайловомВарианте.Получить;
            Если ИнтервалДляОпроса = Неопределено ИЛИ ИнтервалДляОпроса = 0 Тогда
                ИнтервалДляОпроса = 60;
            КонецЕсли;
            ПодключитьОбработчикОжидания("ПоддержкаРегламентныхЗаданиеДляФайловойВерсии", ИнтервалДляОпроса);
        КонецЕсли;
    КонецЕсли;
    

    Мы видим, что такой механизм требует, чтобы под указанным пользователем был запущен клиент 1С.

Решение 7: Шаманизм с типом приложения (когда задание запускается, но не выполняет действий)

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

  1. Последовательность действий:
    • Откройте «Конфигуратор».
    • Для всей конфигурации установите режим запуска «Обычное приложение» (Свойства конфигурации -> Режим запуска).
    • Для общего модуля, содержащего процедуру регламентного задания, установите флаг «Клиент (обычное приложение)» (Свойства общего модуля).
    • Сохраните конфигурацию базы данных.
    • Запустите 1С в режиме предприятия (она откроется в режиме обычного приложения).
    • Вернитесь в «Конфигуратор».
    • Для общего модуля, содержащего процедуру регламентного задания, снимите флаг «Клиент (обычное приложение)».
    • Для всей конфигурации установите режим запуска обратно на «Управляемое приложение».
    • Сохраните конфигурацию базы данных.

Это неочевидное действие иногда помогает «оживить» регламентное задание.

Решение 8: Пересоздание задания или очистка кэша

Иногда самые простые действия оказываются наиболее эффективными.

  1. Пересоздание регламентного задания:
    • Попробуйте удалить неработающее регламентное задание и создать его заново, возможно, даже с другим именем. Это может помочь избавиться от некорректных внутренних связей или метаданных.
  2. Очистка кэша:
    • Как локального кэша клиента 1С, так и кэша на сервере. Некорректный кэш может приводить к странному поведению системы.
    • Очистить кэш можно вручную, удалив содержимое папок кэша 1С, или используя специальные утилиты.

Заключение

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

← На главную