mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-27 21:49:41 +03:00
Форменное свойство <GroupList>id:uuid</GroupList> ссылается на члена формы по оригинальному id + непрозрачному uuid. Компилятор раздаёт id заново (глобальный счётчик по порядку эмиссии) → оригинальный id не воспроизводится; uuid нигде больше в форме нет. Корректный раундтрип требовал бы имя-резолва с предпроходом присвоения id (свойство эмитится до реквизитов) — рефактор ради редкого (30 на корпус) свойства неясной семантики. Verbatim прошёл бы harness, но молча испортил бы ссылку при загрузке. Решение: честный LOST, документируем ограничение. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
4.5 KiB
4.5 KiB
name, description, argument-hint, disable-model-invocation, allowed-tools
| name | description | argument-hint | disable-model-invocation | allowed-tools | ||||
|---|---|---|---|---|---|---|---|---|
| form-decompile | Декомпиляция управляемой формы 1С (Form.xml) в JSON-черновик в формате form-compile. Используй для scaffold новой формы по образцу или структурного рефакторинга. Не для точечных правок | <FormPath> [-OutputPath <out.json>] | true |
|
/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.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. <GroupList>(форменное свойство) не покрывается осознанно — ссылка на члена формы в форматеid:uuidс непрозрачным uuid и оригинальным id (компилятор раздаёт id заново → не воспроизводит), корректный раундтрип требует имя-резолва с предпроходом присвоения id. Редкое (30 на корпус), опускается.- Критичные конструкции (
CommandInterface,ConditionalAppearance, неизвестный тип элемента, не-Form root) — скрипт падает с ненулевым кодом и сообщением в stderr; такую форму как образец брать нельзя, для правок —/form-edit.
Workflow
/form-decompile <Form.xml> -OutputPath draft.json— получить черновик.- Поправить JSON под задачу.
/form-compile -JsonPath draft.json -OutputPath new/Form.xml— собрать обратно./form-validate+/form-info— проверить результат.