| name | xbsl-meta-add |
| description | Создание объекта конфигурации в 1С:Элемент (XBSL). Используй этот скилл когда пользователь хочет создать новый объект метаданных в проекте
|
| compatibility | Requires Python 3. |
Во всех командах ниже {python} означает python в Windows и python3 в macOS/Linux/WSL. Выбирай команду сразу по текущей ОС, не запускай оба варианта.
Создание объекта конфигурации в 1С:Элемент
HttpСервис — быстрый путь
Если тип объекта HttpСервис — используй скрипт вместо шагов 1–4:
Шаг 1 — Dry-run
{python} .claude/skills/xbsl-meta-add/scripts/generate_http.py \
--name <ИмяСервиса> \
--url /api/<ресурс> \
--routes "GET /, POST /, GET /{id}" \
--root <корень>
Опциональные флаги:
--subsystem <ИмяПодсистемы> — если нужно выбрать конкретную подсистему
--access РазрешеноАутентифицированным — контроль доступа (по умолчанию РазрешеноВсем)
Показать вывод пользователю. Если ⚠️ Сервис уже существует — спросить: заменить или отмена.
Если скрипт завершился с ошибкой — сообщи пользователю и остановись.
Шаг 2 — Применить (только после подтверждения)
{python} .claude/skills/xbsl-meta-add/scripts/generate_http.py \
--name <ИмяСервиса> --url /api/<ресурс> --routes "..." --root <корень> --apply
Шаг 3 — Итог
Перечислить созданные файлы из вывода скрипта:
<ИмяСервиса>.yaml — объект HttpСервис с маршрутами
<ИмяСервиса>.xbsl — заготовки обработчиков
Добавление маршрутов в существующий сервис
Если пользователь хочет добавить endpoint в уже существующий HttpСервис:
Шаг 1 — Dry-run
{python} .claude/skills/xbsl-meta-add/scripts/generate_http.py \
--service <ИмяСервиса> \
--add-routes "DELETE /{id}, GET /{id}/items" \
--root <корень>
Показать вывод пользователю. Если ⚠️ обработчик уже существует — он будет пропущен.
Шаг 2 — Применить
{python} .claude/skills/xbsl-meta-add/scripts/generate_http.py \
--service <ИмяСервиса> --add-routes "..." --root <корень> --apply
Шаг 3 — Итог
<ИмяСервиса>.yaml — добавлены новые ШаблоныUrl
<ИмяСервиса>.xbsl — добавлены новые методы-обработчики
Все остальные типы объектов
Шаг 0: Определи тип объекта
Из запроса пользователя определи ВидЭлемента:
| ВидЭлемента | Когда использовать |
|---|
Перечисление | Фиксированный набор значений (статусы, приоритеты, виды) |
Справочник | Хранилище записей (сотрудники, контрагенты, товары) |
Документ | Бизнес-событие с историей (заказы, накладные, акты) |
РегистрСведений | Срезы данных по измерениям (курсы валют, цены) |
РегистрНакопления | Обороты или остатки (продажи, складские остатки) |
ОбщийМодуль | Переиспользуемый код (утилиты, сервисы) |
Структура | DTO / value object (данные для передачи между методами) |
ЛокализованныеСтроки | Тексты интерфейса (один объект на подсистему) |
HttpСервис | REST API (эндпоинты для внешних систем) |
ГлобальноеКлиентскоеСобытие | Событие между подсистемами (оповещение об изменении) |
КлючДоступа | Маркер прав доступа (роль, владелец) |
Отчет | Аналитический отчёт с визуализацией (остатки, продажи, анализ данных) |
Шаги 1 и 2: выполни параллельно
Шаг 1 — Загрузи спецификацию. Прочитай файл спецификации для нужного типа:
references/{ТипОбъекта}.md
Для объектов с реквизитами (Справочник, Документ, РегистрСведений, РегистрНакопления) дополнительно прочитай references/types.md.
Для Отчет — читай references/Отчет.md; если есть ПараметрыЗапроса — дополнительно прочитай references/types.md.
Если в запросе упоминаются табличные части (ТЧ, строки, таблица, колонки) — дополнительно прочитай references/ТабличныеЧасти.md.
Шаг 2 — Разведка проекта. Используй скилл xbsl-explore, передав тип объекта и имя (если известно из запроса).
Если xbsl-explore вернул пустой список projects — остановись и предложи пользователю сначала создать проект через скилл xbsl-init, затем повторить запрос.
Шаг 3: Сгенерируй UUID
Из спецификации узнай, сколько UUID нужно (1 на объект + по 1 на каждый реквизит/элемент/измерение/ресурс). Посчитай точное количество и вызови скилл xbsl-uuid с этим числом.
Шаг 3а: Проверь межподсистемные ссылки
Для каждого ссылочного реквизита (<Имя>.Ссылка?) из запроса определи подсистему объекта-источника.
Как определить подсистему источника:
- Из результатов
xbsl-explore (шаг 2) извлеки корень проекта
- Найди файл
<Имя>.yaml в дереве проекта: <root>/**/<Имя>.yaml
- Имя папки-родителя этого файла — подсистема Y источника
- Имя папки из
suggested_path нового объекта — подсистема X
Если подсистема Y источника отличается от подсистемы X нового объекта:
| Файл | Действие |
|---|
<ПодсистемаY>/<Источник>.yaml | Прочитай. Если ОбластьВидимости: ВПодсистеме — изменить на ВПроекте |
<ПодсистемаX>/Подсистема.yaml | Добавить Y в список Использование (если Y ещё не в списке) |
| Новый объект (создаётся в Шаге 4) | Включить поле Импорт: [Y] (объединить все внешние подсистемы одним списком) |
Для каждого изменённого существующего файла кратко сообщи пользователю:
- «Обновлён
ОбластьВидимости → ВПроекте в Основное/Склады.yaml»
- «Добавлено
Использование: [Основное] в Закупки/Подсистема.yaml»
Если объект-источник не найден в проекте — действуй по текущему правилу (ставь Тип: Строка, предупреди пользователя).
Шаг 4: Создай файлы
- Создай
{ИмяОбъекта}.yaml по структуре из спецификации, в suggested_path из разведки
- Создай
{ИмяОбъекта}.xbsl только если пользователь явно запросил методы
Шаг 5: Контроль доступа
Если тип объекта — Справочник, Документ, РегистрСведений или РегистрНакопления —
вызови скилл xbsl-access-set, передав:
- корень проекта (из результатов
xbsl-explore, шаг 2)
- имя только что созданного объекта (параметр
--object)
Скилл сам спросит у пользователя желаемое значение ПоУмолчанию, покажет dry-run
и применит изменения после подтверждения.
Для всех остальных типов (Перечисление, ОбщийМодуль, Структура, ЛокализованныеСтроки,
ГлобальноеКлиентскоеСобытие, КлючДоступа, Отчет) — шаг пропускается.
Для HttpСервис шаг не нужен: быстрый путь уже принимает флаг --access.
Шаг 6: Движения по регистру (только для Документа)
Если создаётся Документ и пользователь упоминает движения, регистр накопления, регистр сведений, приход, расход, списание, поступление, проведение — после создания .yaml вызови скилл xbsl-pattern-register.
Скилл напишет код в файл <ИмяДокумента>.Объект.xbsl (не .xbsl). Без суффикса .Объект платформа не привяжет код к объекту.