XBSL Skills AI-инструменты для 1С:Элемент
Скилл

xbsl-scheduled-task

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 и применяй правила строго по порядку:

  1. Если Подсистема указана, выбери точное совпадение внутри проекта независимо от числа других подсистем. Если совпадения нет, остановись и предложи создать подсистему через xbsl-subsystem-add.
  2. Если Подсистема не указана и подсистема одна, выбери ее автоматически.
  3. Если Подсистема не указана и найдено несколько подсистем, уточни целевую у пользователя; не используй suggested_path как неявный выбор.
  4. Если Подсистема не указана и подсистем нет, остановись и предложи создать подсистему через 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 нет поля, которое задает обработчик.