можно ли в расширении сделать регламентное задание
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С:Фреш.