Как в самописной конфигурации 1С на управляемых формах посмотреть и настроить регламентные задания

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

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

Использование специализированных консолей заданий

Самым быстрым и эффективным способом управления является использование внешней обработки «Консоль заданий». Важно учитывать, что старые версии консолей, предназначенные для обычных форм, не запустятся в управляемом интерфейсе без специальной адаптации. Рассмотрим основные варианты:

  1. Консоль заданий для управляемых форм (из состава ИТС). Фирма 1С выпускает специализированную версию этой обработки. Она позволяет не только просматривать список заданий, но и изменять их расписание, включать или выключать их, а также принудительно запускать выполнение.
  2. Инструменты разработчика (ИР). Если у вас есть возможность запустить конфигурацию в режиме Обычного приложения, вы можете использовать мощный пакет «Инструменты разработчика». Это позволит получить доступ к детальной статистике выполнения без внесения изменений в саму конфигурацию.

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

Программный доступ через менеджер регламентных заданий

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


// Получаем все регламентные задания конфигурации
ЗаданияМассив = РегламентныеЗадания.ПолучитьРегламентныеЗадания();

Для Каждого ТекущееЗадание Из ЗаданияМассив Цикл
    Сообщить("Задание: " + ТекущееЗадание.Метаданные.Имя);
    Сообщить("Активность: " + ТекущееЗадание.Использование);
    Сообщить("Последнее состояние: " + ТекущееЗадание.Состояние);
КонецЦикла;

Этот метод ПолучитьРегламентныеЗадания() возвращает объекты типа РегламентноеЗадание. У каждого такого объекта мы можем прочитать расписание через свойство Расписание и изменить его программно с помощью метода УстановитьРасписание(). Это критически важно для самописных баз, где графический интерфейс настройки еще не реализован.

Различие между регламентными и фоновыми заданиями

Для понимания процесса мониторинга важно различать эти два понятия. Выясним причину, почему иногда в списке регламентных заданий все «зеленое», а данные не обновляются. Регламентное задание — это объект в метаданных, который определяет «что» и «когда» делать. Однако само действие выполняется в рамках Фонового задания.

Рассмотрим, как посмотреть список фоновых заданий, которые были порождены конкретным регламентным заданием. Это необходимо для анализа ошибок и причин зависания процессов:


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

Для Каждого ФЗ Из Фоновые Цикл
    Если ФЗ.Состояние = СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда
        ЗаписатьВЛог("Ошибка в задании: " + ФЗ.ИнформацияОбОшибке.Описание);
    КонецЕсли;
КонецЦикла;

Проанализируем ситуацию: если регламентное задание запущено, но упало с ошибкой, информацию об этом нужно искать именно в объекте ФоновоеЗадание через свойство ИнформацияОбОшибке.

Администрирование через консоль сервера 1С:Предприятия

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

  1. Откройте консоль администрирования кластера серверов.
  2. Перейдите в раздел «Сеансы» вашей информационной базы.
  3. Найдите сеансы, где в колонке «Приложение» указано «BackgroundJob».

Здесь же можно принудительно завершить зависшее задание, удалив его сеанс. Кроме того, в свойствах информационной базы в консоли кластера есть важный флажок «Блокировка регламентных заданий включена». Если этот флаг установлен, ни одно задание не запустится, даже если в самой конфигурации оно помечено как активное. Это первое место, которое стоит проверить, если ваши задания перестали выполняться.

Использование механизмов БСП (Библиотека Стандартных Подсистем)

Если ваша самописная конфигурация создавалась с использованием фрагментов БСП, то задача значительно упрощается. Рассмотрим встроенные возможности подсистемы «Регламентные задания»:

В БСП уже реализована форма РегламентныеИФоновыеЗадания. Вам достаточно добавить ее в интерфейс или запустить через «Функции для технического специалиста». Она предоставляет:

Особенности отладки в управляемых формах

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

  1. Сервер 1С должен быть запущен с параметром -debug. Без этого отладка серверного кода невозможна.
  2. В конфигураторе перейдите в меню Отладка — Подключение — Автоматическое подключение.
  3. Установите флажок «Фоновые задания».

Теперь при запуске фонового задания отладчик автоматически «подцепит» этот сеанс, и выполнение остановится на вашей точке останова в серверном модуле.

Хранение настроек и перенос между базами

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

Если вы обновите базу через «Загрузить конфигурацию из файла», настройки расписания останутся прежними. Если же вы создаете новую базу из файла .dt, все настройки расписаний перенесутся вместе с данными. При тестировании на копии базы обязательно проверяйте блокировку регламентных заданий в консоли сервера, чтобы копия базы не начала выполнять реальные действия (например, рассылку писем клиентам или обмен с сайтом).

Таким образом, для эффективной работы с регламентными заданиями в самописной конфигурации на УФ мы рекомендуем комбинировать использование внешней консоли заданий с ИТС для оперативной настройки и программные методы для глубокого анализа состояния системы.

← На главную