Разработка и Конфигурация · 11 мин
Как добавить регламентное задание в расширение 1С
Пошаговая инструкция: как добавить регламентное задание в расширение 1С, задать расписание, обработчик и проверить выполнение в консоли заданий.
Расширения конфигурации в 1С позволяют добавлять собственные объекты метаданных, не снимая основную конфигурацию с поддержки. Регламентное задание — один из таких объектов: начиная с платформы 8.3.11 его можно создать непосредственно в расширении и использовать для фоновой обработки данных, обменов, рассылок и других периодических операций.
Механизм работает так: вы создаёте в расширении общий модуль с экспортной процедурой-обработчиком, добавляете регламентное задание, указываете имя метода и расписание. После публикации расширения задание появляется в консоли регламентных и фоновых заданий и выполняется планировщиком по расписанию.
Важно понимать ограничение: расширение может добавлять свои регламентные задания, но не может изменять предопределённые задания основной конфигурации — для них доступно только переопределение логики через собственные обработчики в коде. Ниже разобран полный цикл: от создания модуля до проверки выполнения и типичных ошибок.
Требования к платформе и режиму совместимости
Собственные регламентные задания в расширениях поддерживаются начиная с платформы 1С:Предприятие 8.3.11. Если информационная база работает на более ранней версии, объект «Регламентное задание» в палитре расширения будет недоступен — сначала потребуется обновить платформу на сервере и клиентских местах.
Второе условие — режим совместимости расширения. В свойствах расширения есть поле «Режим совместимости расширения»; для создания новых объектов метаданных оно должно быть установлено в значение не ниже версии, где эти объекты поддерживаются. Практический ориентир — ставить режим совместимости равным версии платформы, на которой работает база.
Также проверьте назначение расширения: для регламентных заданий подходит назначение «Дополнение» или «Адаптация». Расширение с назначением «Исправление» предназначено для точечных патчей и может иметь ограничения на добавление новых объектов.
Создание общего модуля с обработчиком
Обработчик регламентного задания должен располагаться в общем модуле расширения. В конфигураторе откройте расширение, в дереве метаданных найдите ветку «Общие» → «Общие модули» и добавьте новый модуль, например Расш1_ФоновыеЗадания. Префикс помогает отличать объекты расширения от объектов основной конфигурации.
В свойствах модуля установите флажки «Сервер» и «Вызов сервера». Флажок «Клиент» не нужен — регламентные задания выполняются только на сервере. Флажок «Привилегированный режим» ставьте осознанно: он нужен, если обработчик должен обращаться к данным без проверки прав, но расширяет риск при ошибках в коде.
Добавьте в модуль экспортную процедуру без параметров (или с параметрами, если планируете передавать их через свойство «Параметры» задания):
Процедура Расш1_ВыполнитьОбменДанными() Экспорт
ЗаписьЖурналаРегистрации("Обмен расширения", УровеньЖурналаРегистрации.Информация, , , "Задание запущено");
// Основная логика обработчика
ЗаписьЖурналаРегистрации("Обмен расширения", УровеньЖурналаРегистрации.Информация, , , "Задание завершено");
КонецПроцедурыЗаписи в журнал регистрации в начале и конце обработчика — простой способ отладки: по ним вы увидите, запускалось ли задание и завершилось ли оно штатно, не поднимая отладчик фоновых процессов.
Добавление регламентного задания в расширение
В дереве метаданных расширения найдите ветку «Общие» → «Регламентные задания» и добавьте новый объект. Заполните ключевые свойства:
- Имя — уникальный идентификатор, например
Расш1_ОбменДанными; - Имя метода — полное имя обработчика в формате
ИмяОбщегоМодуля.ИмяПроцедуры, напримерРасш1_ФоновыеЗадания.Расш1_ВыполнитьОбменДанными; - Ключ — произвольная строка, запрещающая параллельный запуск заданий с одинаковым ключом; полезно, чтобы исключить дубли выполнения;
- Использование — флажок активности задания по умолчанию;
- Наименование — отображаемое название в консоли заданий;
- Предопределенное — снимите флажок, если не хотите, чтобы задание создавалось автоматически при первом запуске; для заданий расширений чаще оставляют создание через консоль.
Расписание в свойствах задания задать нельзя — оно назначается в режиме предприятия через консоль регламентных заданий или программно. Это сделано намеренно: расписание является данными, а не метаданными, и хранится в очереди заданий конкретной базы.
- 1Создайте в расширении общий серверный модуль с экспортной процедурой-обработчиком
- 2Добавьте в расширение объект «Регламентное задание» и укажите имя метода в формате Модуль.Процедура
- 3Задайте ключ задания, чтобы исключить параллельные запуски
- 4Обновите конфигурацию базы данных (F7) и опубликуйте расширение
- 5В режиме предприятия откройте консоль регламентных и фоновых заданий, найдите задание и настройте расписание
- 6Выполните задание вручную и проверьте журнал регистрации
Настройка расписания и запуск в режиме предприятия
После обновления базы откройте в режиме 1С:Предприятие стандартную обработку «Регламентные и фоновые задания» (в типовых конфигурациях: «Администрирование» → «Обслуживание» → «Регламентные операции»). Задание из расширения появится в списке под заданным наименованием.
Откройте задание, установите флажок «Используется» и настройте расписание: периодичность, время начала, дни недели. Для файловой базы учтите важное ограничение — регламентные задания выполняются только пока запущен сеанс с включённым выполнением заданий; в клиент-серверном варианте их выполняет кластер серверов независимо от открытых сеансов.
Проверить работу можно кнопкой «Выполнить сейчас» в консоли. После запуска откройте журнал регистрации и отфильтруйте события по имени, указанному в вызовах ЗаписьЖурналаРегистрации, либо посмотрите статус последнего выполнения прямо в консоли заданий — там видны ошибки с текстом исключения.
Как проверить результат
Видно в списке, расписание задано, статус «Выполнено»
Задание отсутствует или статус «Ошибка выполнения»
Есть записи о запуске и завершении обработчика
Записей нет или есть события с уровнем «Ошибка»
Данные изменились согласно логике обработчика
Задание выполняется, но данные не меняются
Типичные ошибки и их устранение
Самая частая проблема — ошибка «Метод не обнаружен» при запуске. Причины: опечатка в свойстве «Имя метода», процедура не объявлена с ключевым словом Экспорт, модуль не серверный или расширение не применено к базе. Проверьте имя метода посимвольно и убедитесь, что в списке расширений конфигурации ваше расширение активно.
Вторая группа ошибок — падение обработчика из-за прав доступа. Если пользователь, от имени которого выполняется задание (в файловой базе — текущий пользователь сеанса, в серверной — пользователь, указанный в свойствах задания), не имеет прав на объекты, возникнет исключение. Решение — включить привилегированный режим модуля или назначить заданию пользователя с достаточными правами.
Третья типичная ситуация — задание не запускается по расписанию в файловой базе. Это норма, а не сбой: в файловом варианте нет отдельного планировщика, и задания выполняются только в работающем клиентском сеансе. Для автономного выполнения используйте отдельный сеанс с параметром запуска ExecuteScheduledJobs или переходите на клиент-серверный вариант.
Ограничения расширений и альтернативные подходы
Расширение не может изменить состав предопределённых регламентных заданий основной конфигурации, их расписание по умолчанию и имя метода. Если требуется изменить поведение типового задания, варианты такие: отключить типовое задание в консоли и создать в расширении собственное с похожей логикой, либо доработать обработчики через переопределяемые модули, если конфигурация это предусматривает.
Если база работает на платформе ниже 8.3.11 и обновление невозможно, собственное регламентное задание в расширении создать не получится. Обходной путь — внешняя обработка, запускаемая по расписанию штатным планировщиком Windows с параметрами командной строки 1cv8.exe ENTERPRISE /Execute, либо заимствование задания через доработку основной конфигурации с последующим контролем при обновлениях.
Сравнение вариантов
Основной вариант: не снимает конфигурацию с поддержки, требует платформу 8.3.11+; задание пропадает при отключении расширения
Полный контроль и работа на любой платформе, но усложняет обновление типовой конфигурации
Работает без доработки базы, но требует настройки на каждом сервере и хранения учётных данных для запуска
При выборе ориентируйтесь на жизненный цикл решения: для функционала, который планируется развивать и переносить между базами, расширение удобнее всего — задание переносится вместе с файлом расширения и не требует правок конфигурации-приёмника.
Частые вопросы
Почему в расширении недоступен объект «Регламентное задание»?
Проверьте три условия: версия платформы должна быть 8.3.11 или новее, режим совместимости расширения — соответствовать этой версии, назначение расширения — «Дополнение» или «Адаптация». Если хотя бы одно условие не выполнено, ветка будет скрыта или заблокирована.
Можно ли передать параметры в обработчик регламентного задания?
Да. В свойствах задания есть поле «Параметры» — количество значений, которые будут переданы в процедуру. Сами значения задаются в режиме предприятия через консоль заданий или программно методом установки параметров объекта регламентного задания. Процедура в модуле должна объявлять соответствующее число параметров.
Что произойдёт с заданием при отключении расширения?
Задание перестанет отображаться в консоли и выполняться планировщиком — его метаданные принадлежат расширению. При повторном подключении расширения задание вернётся, но расписание может потребоваться задать заново, поэтому документируйте настройки расписания отдельно.
Как отладить обработчик, если задание падает только в фоновом режиме?
Добавьте в начало и конец обработчика записи в журнал регистрации, а в блоке обработки исключений — вывод подробного текста ошибки через ОписаниеОшибки(). Дополнительно можно временно вызывать ту же процедуру из кнопки на форме в режиме предприятия — так ошибку проще поймать отладчиком в обычном сеансе.
Можно ли из расширения изменить расписание типового регламентного задания?
Изменить само типовое задание через расширение нельзя, но расписание — это данные, а не метаданные: его может поменять администратор в консоли заданий или программно через менеджер регламентных заданий. Код такой настройки можно разместить в обработчике первого запуска расширения.
Что важно запомнить
Регламентное задание добавляется в расширение в три шага: серверный общий модуль с экспортной процедурой, объект «Регламентное задание» с указанием метода и настройка расписания в консоли заданий. Требуется платформа 8.3.11+, а проверку всегда начинайте с ручного запуска и журнала регистрации.