/form-decompile - Декомпилятор формы в DSL

SkillAI & models

This 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.

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.

Рабочий процесс

  1. Claude вызывает /form-decompile для получения JSON из Form.xml
  2. Claude просматривает _todo и решает каждый пункт (переносит вручную, упрощает или сознательно отбрасывает), затем удаляет ключи _todo
  3. Claude модифицирует JSON (добавляет поля, меняет структуру)
  4. Claude вызывает /form-compile для генерации нового Form.xml
  5. 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