/form-decompile - Декомпилятор формы в DSL
SkillAI & modelsThis skill lets your AI turn an existing 1C managed form (Form.xml) into a JSON draft in the /form-compile format. Once added, your AI can read a form's XML and produce a clean JSON version of it. That makes it easier to see how a form is built or get it ready for changes.
Available today. Use it from your connected AI after setup.
No other account needed.
Add the skill, then point your AI to the Form.xml file of the form you want to convert. Ask it to turn that form into a JSON draft you can review or edit.
Then ask your AI: use the /form-decompile - Декомпилятор формы в DSL skill
What your AI can do with it
- Convert a 1C managed form's Form.xml into JSON
- Produce a JSON draft in the /form-compile format
- Show the structure of an existing form so it can be analyzed
- Prepare an existing form for rework or refinement
What this skill tells your AI
The instructions your AI receives, as published by desko77/claude-code-skills-1c in skills/1c-form-decompile/SKILL.md and read by ahel’s review.
Принимает Form.xml управляемой формы 1С (формат выгрузки Конфигуратора) и генерирует JSON-определение в формате скила 1c-form-compile (спецификация: docs/form-dsl-spec.md). Обратная операция к /form-compile.
Результат - ЧЕРНОВИК, а не гарантированный lossless round-trip. Конструкции, которые DSL не выражает, помечаются ключом _todo (массив строк-пояснений) на уровне элемента и/или корня JSON и дублируются предупреждением [TODO] в консоль. Перед скармливанием результата /form-compile просмотреть черновик и разрешить все _todo.
Использование
/form-decompile <Form.xml> [output.json]
Параметры
| Параметр | Обязательный | Описание |
|---|---|---|
| InputFile | да | Путь к Form.xml (выгрузка Конфигуратора, UTF-8, допустим BOM) |
| OutputFile | нет | Путь для JSON. По умолчанию рядом с входным: <имя>.form.json |
Команда
powershell.exe -NoProfile -File skills/1c-form-decompile/scripts/form-decompile.ps1 -InputFile "<путь>/Form.xml" [-OutputFile "<путь>.json"]
Альтернатива (Python, тот же алгоритм):
python skills/1c-form-decompile/scripts/form-decompile.py -InputFile "<путь>/Form.xml" [-OutputFile "<путь>.json"]
Коды возврата
| Код | Значение |
|---|---|
| 0 | Успех (JSON записан; наличие _todo кодом возврата не считается ошибкой) |
| 1 | Ошибка: файл не найден, XML не разбирается, корневой элемент не <Form> |
| 2 | Неверные аргументы (python-версия, argparse) |
Что переносится в DSL
- Заголовок формы, свойства формы (скалярные), обработчики событий формы
- Исключенные стандартные команды (
excludedCommands) - Дерево элементов: group, input, check, label, labelField, table (с колонками), pages, page, button, picture, picField, calendar, cmdBar, popup
- События элементов: если имя обработчика совпадает с автоименованием
/form-compile- толькоon, иначеon+handlers - Реквизиты: тип (shorthand:
string(N),decimal(D,F[,nonneg]),date, ссылочныеCatalogRef.X, платформенные, составные через" | "), main, savedData, колонки ValueTable, настройки DynamicList (mainTable, dynamicDataRead, manualQuery) - Параметры формы (имя, тип, key)
- Команды формы (action, title, shortcut, picture, representation)
Ограничения - черновик и маркеры _todo
В _todo уходит (JSON при этом создается, код возврата 0):
- Типы элементов вне списка выше (RadioButtonField, ChartField, SpreadSheetDocumentField, PlannerField и др.) - в дерево ставится заглушка
{"name": ..., "_todo": [...]} - Условное оформление (ConditionalAppearance), командный интерфейс (CommandInterface), содержимое командной панели формы
- Свойства элементов, не описанные в form-dsl-spec.md (цвета, шрифты, layout-тонкости) - каждое отдельной строкой с именем и значением
- Текст запроса динамического списка (DSL хранит только mainTable), настройки реквизита вне DynamicList
- Видимость по ролям (UserVisible/Value), мультиязычные заголовки (берется ru или первый язык), v8:TypeSet / v8:TypeId в типах
Служебные companion-элементы (ContextMenu, ExtendedTooltip, AutoCommandBar таблиц, SearchStringAddition и др.) не переносятся - /form-compile генерирует их заново; непустое содержимое такого элемента помечается в _todo.
Не предназначен для точечной правки одного поля живой формы: цикл декомпиляция -> правка JSON -> перекомпиляция перезаписывает Form.xml целиком и теряет непереносимые конструкции. Для точечных правок - /form-edit.
Рабочий процесс
- Claude вызывает
/form-decompileдля получения JSON из Form.xml - Claude просматривает
_todoи решает каждый пункт (переносит вручную, упрощает или сознательно отбрасывает), затем удаляет ключи_todo - Claude модифицирует JSON (добавляет поля, меняет структуру)
- Claude вызывает
/form-compileдля генерации нового Form.xml - Claude вызывает
/form-validateдля проверки
Примеры
Декомпиляция с выводом рядом с исходником (получится Form.form.json):
powershell.exe -NoProfile -File skills/1c-form-decompile/scripts/form-decompile.ps1 -InputFile "src/DataProcessors/Загрузка/Forms/Форма/Ext/Form.xml"
Декомпиляция в явный файл:
powershell.exe -NoProfile -File skills/1c-form-decompile/scripts/form-decompile.ps1 -InputFile "C:/dump/Форма/Ext/Form.xml" -OutputFile "C:/work/форма-черновик.json"
JSON-схема DSL
Полная спецификация формата: docs/form-dsl-spec.md (прочитать через Read tool). Справка по потреблению DSL - skills/1c-form-compile/SKILL.md.
Signals
- GitHub stars
- 61
- Forks
- 14
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
x-1c-form-decompile- Source
- github.com/desko77/claude-code-skills-1c