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

73 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: mxl-decompile
description: Декомпиляция табличного документа (MXL) в JSON-определение. Используй когда нужно получить редактируемое описание существующего макета
argument-hint: <TemplatePath> [OutputPath]
allowed-tools:
- Bash
- Read
- Write
- Glob
---
# /mxl-decompile — Декомпилятор макета в DSL
Принимает Template.xml табличного документа 1С и генерирует компактное JSON-определение (DSL). Обратная операция к `/mxl-compile`.
## Использование
```
/mxl-decompile <TemplatePath> [OutputPath]
```
## Параметры
| Параметр | Обязательный | Описание |
|--------------|:------------:|-----------------------------------------|
| TemplatePath | да | Путь к Template.xml |
| OutputPath | нет | Путь для JSON (если не указан — stdout) |
## Команда
```powershell
powershell.exe -NoProfile -File ".opencode/skills/mxl-decompile/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-ом: перечисленное выше нужно вернуть руками.