Как создать и настроить новое регламентное задание в 1С 8.3 через расширение или внешнюю обработку

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

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

Создание регламентного задания в расширении конфигурации

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

  1. Добавление объекта в расширение: Перейдем в дерево метаданных расширения. В ветке Общие найдем пункт Регламентные задания и добавим новое задание.
  2. Настройка свойств: Важнейшим этапом является заполнение свойства Имя метода. В расширениях, в отличие от основной конфигурации, выбор из списка может быть недоступен или работать некорректно. Нам необходимо вручную прописать путь к процедуре.
  3. Местоположение кода: Процедура, которую будет вызывать задание, должна располагаться в общем модуле расширения. Убедимся, что у модуля установлены флажки Сервер и Вызов сервера (если необходимо), а сама процедура помечена ключевым словом Экспорт. Чтобы избежать проблем с вызовами, рекомендуется выполнить анализ расширения на наличие ошибок в экспортных процедурах.

Пример написания имени метода в свойствах регламентного задания:

МойПрефикс_ОбщийМодуль.МояПроцедураДляЗапуска

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

Решение проблемы видимости задания в интерфейсе (Консоль заданий)

Выясним причину, по которой новое регламентное задание часто не отображается в стандартном списке Администрирование — Обслуживание — Регламентные и фоновые задания. Типовые конфигурации на базе БСП (Библиотека стандартных подсистем) используют внутренние механизмы регистрации заданий. Задания, добавленные «напрямую» в метаданные расширения, часто игнорируются стандартными списками БСП, так как они не зарегистрированы в справочнике Идентификаторы объектов метаданных.

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

  1. Откроем консоль заданий в тестовой или рабочей базе.
  2. Найдем в списке наше новое задание (консоль видит метаданные напрямую, в обход фильтров БСП).
  3. Если задания нет в списке «выполняющихся», нажмем кнопку Добавить и выберем наше задание из дерева метаданных.
  4. Настроим расписание и установим флажок Использование.

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

Вызов функций расширения из внешних обработок

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

В среде 1С нет необходимости указывать имя расширения при обращении к модулю. Платформа объединяет пространство имен основной конфигурации и всех активных расширений. Если вы создали в расширении модуль Расш1_СерверныйМодуль, то обращение из внешней обработки будет выглядеть стандартно:


// Пример вызова из внешней обработки кода расширения
Процедура ВыполнитьДействиеНаСервере()
    // Обращаемся напрямую к модулю расширения по его имени
    Расш1_СерверныйМодуль.ВыполнитьНужнуюОперацию();
КонецПроцедуры

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

ПолучитьФорму("ОбщаяФорма.МояФормаРасширения")

Если имя формы уникально, платформа найдет её автоматически среди всех подключенных расширений.

Альтернативный метод: Использование «Дополнительных отчетов и обработок»

Если вам запрещено менять даже расширения или если задания в расширениях ведут себя нестабильно (как это иногда бывает в релизе 8.3.24.1548 при динамическом обновлении), существует максимально «чистый» способ — правильная реализация регламентных заданий на основе дополнительных обработок. Разберем по шагам, как это сделать.

Создадим внешнюю обработку и в модуле объекта пропишем обязательную функцию регистрации:


Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
    
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
    ПараметрыРегистрации.Наименование = "Мое новое регламентное задание";
    
    НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    НоваяКоманда.Представление = "Запустить регламентную операцию";
    НоваяКоманда.Идентификатор = "ГлавнаяКоманда";
    НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
    
    Возврат ПараметрыРегистрации;
КонецФункции

Процедура ВыполнитьКоманду(ИдентификаторКоманды) Экспорт
    // Здесь вызываем наш код, в том числе из расширения
    Расш1_СерверныйМодуль.ОсновнаяЛогика();
КонецПроцедуры

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

Особенности платформы 8.3.24 и блокировка заданий

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

Как проверить блокировку:

  1. Зайдем в консоль администрирования кластера серверов 1С.
  2. Откроем свойства информационной базы.
  3. Посмотрим на флажок Блокировка регламентных заданий включена.

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

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

← На главную