Files
cc-1c-skills/.opencode/skills/mxl-decompile/SKILL.md
T

4.3 KiB
Raw Blame History

name, description, argument-hint, allowed-tools
name description argument-hint allowed-tools
mxl-decompile Декомпиляция табличного документа (MXL) в JSON-определение. Используй когда нужно получить редактируемое описание существующего макета <TemplatePath> [OutputPath]
Bash
Read
Write
Glob

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

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

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

/mxl-decompile <TemplatePath> [OutputPath]

Параметры

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

Команда

python ".opencode/skills/mxl-decompile/scripts/mxl-decompile.py" -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-ом: перечисленное выше нужно вернуть руками.