Skill v1.0.0
currentAutomated scan100/100version: "1.0.0" name: xbsl-scheduled-task description: > Use when пользователь просит создать или изменить запланированное задание 1С:Предприятие.Элемент (XBSL): ЗапланированноеЗадание, scheduled task, расписание, ежедневный запуск, Обработчик().
Создание запланированного задания XBSL
Всегда создавай пару артефактов одного имени: <Имя>.yaml и <Имя>.xbsl. Перед созданием .xbsl прочитай docs/xbsl-spec.md. Перед генерацией прочитай references/ЗапланированноеЗадание.md.
Шаг 1: Собери параметры
Определи из запроса:
| Параметр | Обязательный | Дефолт | |
|---|---|---|---|
Имя | Да | Нет | |
ЗапуститьВ | Да | Нет | |
Подсистема | Нет | Выбрать по правилам ниже | |
ОбластьВидимости | Нет | ВПодсистеме | |
ПредопределенноеЗадание | Нет | ЗапланироватьПриОбновленииПроекта | |
Описание | Нет | Не добавлять |
Если имени или времени запуска нет, уточни их у пользователя. В YAML записывай время литералом формата HH:MM без кавычек, например 08:00.
Шаг 2: Выбери проект и подсистему
Используй xbsl-explore для выбора проекта. Если проектов нет, предложи сначала создать проект через xbsl-init. Если найдено несколько подходящих проектов, уточни целевой.
После выбора проекта используй только его projects[].subsystems и применяй правила строго по порядку:
- Если
Подсистемауказана, выбери точное совпадение внутри проекта независимо
от числа других подсистем. Если совпадения нет, остановись и предложи создать подсистему через xbsl-subsystem-add.
- Если
Подсистемане указана и подсистема одна, выбери ее автоматически. - Если
Подсистемане указана и найдено несколько подсистем, уточни целевую у
пользователя; не используй suggested_path как неявный выбор.
- Если
Подсистемане указана и подсистем нет, остановись и предложи создать
подсистему через xbsl-subsystem-add.
Проверь, что выбранный subsystem_path принадлежит выбранному проекту и содержит Подсистема.yaml. Не размещай задание в корне проекта. После выбора подсистемы проверяй имя только в ее projects[].subsystems[].objects. Не перенаправляй файлы по глобальным conflict или suggested_path, полученным для другой подсистемы.
Целевые файлы:
{subsystem_path}/{Имя}.yaml{subsystem_path}/{Имя}.xbsl
Шаг 3: Сгенерируй UUID
Используй xbsl-uuid и запроси один UUID с дефисами для поля Ид объекта. Не используй счетчики, повторяющиеся паттерны или заранее выбранные значения.
Шаг 4: Сформируй YAML
Минимальный ежедневный вариант:
ВидЭлемента: ЗапланированноеЗаданиеИд: <UUID>Имя: <Имя>ОбластьВидимости: ВПодсистемеПредопределенноеЗадание: ЗапланироватьПриОбновленииПроектаРасписание:-Вид: ЕжедневноЗапуститьВ: 08:00ПериодПовтораДней: 1
Не добавляй поле обработчика в YAML. Связь с обработчиком задается companion модулем того же имени.
Шаг 5: Сформируй module companion
Создай <Имя>.xbsl:
@Обработчикметод Обработчик();
Добавляй бизнес-логику внутрь Обработчик() только если пользователь описал конкретное действие задания. Сигнатуру не меняй: метод без параметров.
Шаг 6: Безопасно запиши файлы
Сначала собери полный ожидаемый текст обоих файлов.
- Если файла нет, создай его.
- Если файл уже существует и его содержимое совпадает, оставь без изменений.
- Если файл уже существует и отличается, остановись, покажи путь и кратко
объясни конфликт; не перезаписывай без явного решения пользователя.
Шаг 7: Проверь результат
Запусти доступный валидатор проекта для созданного YAML. Минимальная проверка перед ответом пользователю:
ВидЭлементаравенЗапланированноеЗадание.- YAML и
.xbslлежат рядом в выбранной подсистеме и имеют одно имя. - Родительский каталог обоих файлов содержит
Подсистема.yaml. - В
.xbslесть@Обработчикиметод Обработчик()без параметров. - В YAML нет поля, которое задает обработчик.