mcpField
M
mxl-decompile

mxl-decompile

github.com/nikolay-shirokovDocuments74153 installsUpdated today
Repository

About mxl-decompile

mxl-decompile converts a 1C spreadsheet document’s Template.xml into compact JSON in the DSL used by mxl-compile. It is intended for inspecting or editing existing layouts before rebuilding them; some XML details do not survive the round trip.

Key features

  1. 01Convert Template.xml to JSON DSL
  2. 02Write output to a file or stdout
  3. 03Preserve compiler-specific DSL keys
  4. 04Support layout inspection and editing

Use cases

  1. 01Inspect an existing 1C spreadsheet layout
  2. 02Edit layout structure or styles in JSON
  3. 03Rebuild a layout after decompilation

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/nikolay-shirokov/cc-1c-skills --skill mxl-decompile

After installing, type/mxl-decompilein Claude Code to confirm it loaded.

Bundled filesscripts/mxl-decompile.ps1scripts/mxl-decompile.py

Details

From the project README

/mxl-decompile — Декомпилятор макета в DSL

Принимает Template.xml табличного документа 1С и генерирует компактное JSON-определение (DSL). Обратная операция к /mxl-compile.

Использование

/mxl-decompile <TemplatePath> [OutputPath]

Параметры

ПараметрОбязательныйОписание
TemplatePathдаПуть к Template.xml
OutputPathнетПуть для JSON (если не указан — stdout)

Команда

powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/mxl-decompile.ps1" -TemplatePath "<путь>/Template.xml" [-OutputPath "<путь>.json"]

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

Декомпиляция существующего макета для анализа или доработки:

  1. Вызвать /mxl-decompile для получения JSON из Template.xml
  2. Проанализировать или изменить JSON (добавить области, поменять стили)
  3. Вызвать /mxl-compile для генерации нового Template.xml
  4. Вызвать /mxl-validate для проверки

Формат JSON на выходе — тот же DSL, что принимает /mxl-compile; его описание живёт в навыке /mxl-compile.

Ключи, которых нет в описании DSL

В разобранном макете попадаются ключи, которых нет в инструкции /mxl-compile: например, у rowStyle — модификатор apply, у ячейки-поля ввода — controlType: "none". Они несут состояние исходного файла, которое иначе не выразить. Писать их самому не нужно; удалять из разобранного JSON — тоже: компилятор принимает их обратно как есть, а без них макет изменится.

Что нужно знать о пересборке

Правка через DSL — это полная перегенерация макета, а не точечное изменение XML. Поэтому diff после цикла «декомпиляция → компиляция» обычно шире фактической доработки, даже когда содержание сохранено целиком.

Побайтового совпадения с исходником ждать не всегда стоит. В макетах, которые долго правили в Конфигураторе, остаются следы прежних состояний: например, формат ячейки несёт ширину колонки, которая с тех пор изменилась. Из итогового документа такие значения не выводятся, и в пересобранный файл они не возвращаются.

Не переживают цикл вовсе (в JSON не попадают, в XML не возвращаются):

  • объединения, не привязанные к ячейке — по всей высоте или ширине документа;
  • настройки диаграмм (Chart, GanttChart) — сам рисунок сохраняется, его содержимое нет;
  • область печати.

Если задача — сохранить чужой макет как есть и поправить в нём малое, сверяйте результат /mxl-info или diff-ом: перечисленное выше нужно вернуть руками.

Comments

Markdown supported