mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-13 15:03:20 +03:00
6.1 KiB
6.1 KiB
name, description, argument-hint, allowed-tools
| name | description | argument-hint | allowed-tools | ||||
|---|---|---|---|---|---|---|---|
| mxl-compile | Компиляция табличного документа (MXL) из JSON-определения. Используй когда нужно создать макет печатной формы | <JsonPath> <OutputPath> |
|
/mxl-compile — Компилятор макета из DSL
Принимает компактное JSON-определение макета и генерирует корректный Template.xml для табличного документа 1С. Claude описывает что нужно (области, параметры, стили), скрипт обеспечивает корректность XML (палитры, индексы, объединения, namespace).
Использование
/mxl-compile <JsonPath> <OutputPath>
Параметры
| Параметр | Обязательный | Описание |
|---|---|---|
| JsonPath | да | Путь к JSON-определению макета |
| OutputPath | да | Путь для генерации Template.xml |
Команда
python ".opencode/skills/mxl-compile/scripts/mxl-compile.py" -JsonPath "<путь>.json" -OutputPath "<путь>/Template.xml"
Рабочий процесс
- Написать JSON-определение (Write tool) → файл
.json - Вызвать
/mxl-compileдля генерации Template.xml - Вызвать
/mxl-validateдля проверки корректности - Вызвать
/mxl-infoдля верификации структуры
Если макет создаётся по изображению (скриншот, скан печатной формы) — сначала вызвать /img-grid для наложения сетки, по ней определить границы колонок и пропорции, затем использовать "Nx" ширины + "page" для автоматического расчёта размеров.
JSON-схема DSL
Ниже — компактная структура и ключевые правила, достаточные для типового макета. Подробности читать по необходимости:
| Что нужно | Файл |
|---|---|
| Полные таблицы полей, развёрнутый пример, ограничения формата | reference/dsl-spec.md |
| Шрифты, стили, цвета, рамки, колоночные раскладки и стили колонок | reference/styles.md |
| Полный перечень свойств стиля — все 44 | reference/format-properties.md |
Краткая структура:
{ columns, page, defaultWidth, columnWidths, columnStyles,
fonts: { name: { face, size, bold, italic, underline, strikeout } | { ref } },
styles: { name: { font, horizontalAlignment, verticalAlignment, textPlacement,
backColor, textColor, border, borderColor, format, hidden } },
areas: [{ name, columnSet, rows: [{ height, hidden, rowStyle, cells: [
{ col, span, rowspan, style, param, detail, text, template }
]}]}],
namedAreas: [{ name, rows, cols }],
columnSets: { name: { columns, columnWidths, columnStyles } }
}
Ключевые правила:
page— формат страницы ("A4-landscape","A4-portrait"или число). Автоматически вычисляетdefaultWidthиз суммы пропорций"Nx"nameу области вareasнеобязателен: область без имени — просто кусок сетки, именованной она не станетnamedAreas— области, которые не описываются диапазоном подряд идущих строк: полоса колонок, прямоугольник, ячейка. Тип не указывается, он следует из того, какие оси заданыcolumnSetу области — ссылка на раскладку изcolumnSets, когда группе строк нужны свои ширины колонок; без него действует документная раскладка- Ключ стиля — имя свойства как в выгрузке;
columnStylesвешает стиль на колонку так же, какstyleна ячейку - Рамка —
border(все стороны) илиleftBorder/topBorder/rightBorder/bottomBorder; значение"Solid"либо{ style, width } rowStyle— стиль строки: ложится и на строку, и на все её колонки, заполняя пустоты (рамки по всей ширине)heightиhidden— собственные свойства строки, у ячейки таких нетemptyв строке — шорткат для N подряд пустых строк ({ "empty": 3 }= три{})- Строку можно писать массивом ячеек — позиция из порядка,
colне нужен:"текст","{Имя}"— параметр,">"— продолжить ячейку слева,"|"— сверху,null— пропуск колонки col— 1-based позиция колонкиrowspan— объединение строк вниз (rowStyle учитывает занятые ячейки)- Содержимое ячейки задаётся одним из ключей:
param— параметр заполнения,text— статический текст,template— текст со вставками[Параметр]
Двухуровневая шапка массивами:
"rows": [
["Вид", "Остаток", ">", "Итог"],
["|", "начало", "конец", "|"],
["{Вид}", "{Нач}", "{Кон}", "{Итог}"]
]