mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-17 23:35:22 +03:00
Декомпилятор управляемой формы в формат form-compile (инверсия компилятора): метаданные, реквизиты, параметры, команды, события, рекурсия ChildItems по базовым типам, strip companions, инверсия типов и авто-имён обработчиков. Компактный вывод тем же сериализатором, что skd-decompile (inline в пределах lineLimit=120). Ring-ограничен (disable-model-invocation): раундтрип не гарантируется, риск неполноты на пользователе. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
51 lines
4.0 KiB
Markdown
51 lines
4.0 KiB
Markdown
---
|
|
name: form-decompile
|
|
description: Декомпиляция управляемой формы 1С (Form.xml) в JSON-черновик в формате form-compile. Используй для scaffold новой формы по образцу или структурного рефакторинга. Не для точечных правок
|
|
argument-hint: <FormPath> [-OutputPath <out.json>]
|
|
disable-model-invocation: true
|
|
allowed-tools:
|
|
- Bash
|
|
- Read
|
|
- Write
|
|
- Glob
|
|
---
|
|
|
|
# /form-decompile — JSON-черновик из Form.xml управляемой формы
|
|
|
|
Читает Form.xml и эмитит компактный JSON в формате `form-compile`. **Результат — черновик**, а не обратимое представление: см. раздел «Что получаешь».
|
|
|
|
## Когда использовать
|
|
|
|
- **Scaffold новой формы по образцу** — взять существующую форму, получить JSON, поправить и скомпилировать в новую.
|
|
- **Структурный рефакторинг** — перебрать дерево элементов, реквизиты, команды.
|
|
|
|
## Когда **не** использовать
|
|
|
|
- **Точечные правки готовой формы** (добавить элемент, реквизит, команду) → `/form-edit`. Цикл «декомпиляция → правка JSON → компиляция» переписывает форму целиком, может терять непокрытые конструкции и даёт большой diff. `/form-edit` правит адресно.
|
|
|
|
## Параметры
|
|
|
|
| Параметр | Описание |
|
|
|----------|----------|
|
|
| `FormPath` | Путь к Form.xml (обязательный) |
|
|
| `OutputPath` | Путь к выходному JSON. Если не задан — JSON в stdout |
|
|
|
|
```powershell
|
|
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/form-decompile.ps1" -FormPath "<Form.xml>" -OutputPath "<out.json>"
|
|
```
|
|
|
|
## Что получаешь
|
|
|
|
JSON-черновик в формате `/form-compile` — **не полное обратимое представление формы**. Раундтрип `xml → json → xml` пока не гарантируется: ряд конструкций управляемой формы DSL не покрывает.
|
|
|
|
- **Покрытые узлы** — метаданные формы, реквизиты, параметры, команды, события, дерево базовых элементов (группы, поля, таблицы, страницы, кнопки и т.п.) ложатся в JSON как обычные узлы DSL.
|
|
- **Непокрытое теряется молча** — конструкции вне зоны поддержки (богатые настройки полей, источники строк поиска, командные интерфейсы и др.) при декомпиляции опускаются. Поэтому навык **исключён из автоматического использования моделью** (`disable-model-invocation: true`): риск неполноты принимает на себя пользователь, явно вызывая `/form-decompile`.
|
|
- **Критичные конструкции** (`CommandInterface`, `ConditionalAppearance`, неизвестный тип элемента, не-Form root) — скрипт падает с ненулевым кодом и сообщением в stderr; такую форму как образец брать нельзя, для правок — `/form-edit`.
|
|
|
|
## Workflow
|
|
|
|
1. `/form-decompile <Form.xml> -OutputPath draft.json` — получить черновик.
|
|
2. Поправить JSON под задачу.
|
|
3. `/form-compile -JsonPath draft.json -OutputPath new/Form.xml` — собрать обратно.
|
|
4. `/form-validate` + `/form-info` — проверить результат.
|