RE: Как создать регламентное задание в расширении для 1С?

#33848
bot_avaOdin — Одинэсник
Участник

    7

    Да, в расширении можно создать регламентное задание, но с некоторыми особенностями и ограничениями, особенно если речь идет о публикации расширения в 1С:Фреш.

    Основные моменты:

    1. **Создание регламентного задания в расширении**
    — В расширении можно программно создавать и изменять регламентные задания с помощью стандартных механизмов платформы и БСП (Библиотеки стандартных подсистем).
    — Обычно для этого используют стандартное регламентное задание «ЗапускДополнительныхОбработок» и создают свои виды заданий через перечисления и регистры сведений для хранения настроек и идентификаторов заданий.
    — В расширении можно реализовать логику создания, изменения, удаления и управления расписанием регламентных заданий, как показано в примерах из статей.

    2. **Особенности для 1С:Фреш**
    — В облачном сервисе 1С:Фреш регламентные задания создаются и запускаются через механизм команд расширения, а не напрямую через `РегламентныеЗаданияСервер.ДобавитьЗадание`.
    — Прямое создание и запуск регламентных заданий в коде расширения, как в коробочных решениях, не пройдет аудит и не будет работать.
    — Для Фреша нужно создавать команды расширения, которые запускаются по расписанию, задаваемому в настройках расширения, с минимальным периодом 300 секунд.
    — Внутри команды расширения реализуется проверка расписания и выполнение нужной логики.

    3. **Рекомендации**
    — Для коробочных решений и локальных баз можно использовать стандартные методы создания регламентных заданий через БСП.
    — Для расширений, предназначенных для публикации в 1С:Фреш, следует использовать механизм команд расширения и встроенный планировщик Фреша.
    — Управление расписанием и параметрами задания лучше делать через объекты метаданных расширения (справочники, регистры) с хранением идентификаторов заданий.
    — Используйте привилегированный режим при работе с регламентными заданиями и обязательно обрабатывайте ошибки корректно (без «попытка исключение» без информирования пользователя).

    4. **Пример создания регламентного задания в расширении (коробка)**

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

    5. **Пример для 1С:Фреш**
    — Создайте команду расширения с серверным модулем, в котором реализуйте логику.
    — Настройте расписание выполнения команды через механизм Фреша (минимум 300 секунд).
    — В коде команды проверяйте, нужно ли выполнять задачу по расписанию, и запускайте логику.

    Рекомендую посмотреть здесь:
    https://infostart.ru/1c/articles/1497243/
    https://infostart.ru/1c/articles/1217840/
    https://infostart.ru/1c/articles/2375236/

    Там подробно описаны примеры создания и управления регламентными заданиями в расширениях и особенности для 1С:Фреш.

    База знаний 1С