$npx -y skills add Desko77/cursor-1c-skills --skill 1c-mxl-compileКомпиляция табличного документа (MXL) из JSON-определения. Используй когда нужно создать макет печатной формы
| 1 | # /mxl-compile — Компилятор макета из DSL |
| 2 | |
| 3 | Принимает компактное JSON-определение макета и генерирует корректный Template.xml для табличного документа 1С. Claude описывает *что* нужно (области, параметры, стили), скрипт обеспечивает *корректность* XML (палитры, индексы, объединения, namespace). |
| 4 | |
| 5 | ## Использование |
| 6 | |
| 7 | ``` |
| 8 | /mxl-compile <JsonPath> <OutputPath> |
| 9 | ``` |
| 10 | |
| 11 | ## Параметры |
| 12 | |
| 13 | | Параметр | Обязательный | Описание | |
| 14 | |------------|:------------:|------------------------------------| |
| 15 | | JsonPath | да | Путь к JSON-определению макета | |
| 16 | | OutputPath | да | Путь для генерации Template.xml | |
| 17 | |
| 18 | ## Команда |
| 19 | |
| 20 | ```powershell |
| 21 | powershell.exe -NoProfile -File skills/1c-mxl-compile/scripts/mxl-compile.ps1 -JsonPath "<путь>.json" -OutputPath "<путь>/Template.xml" |
| 22 | ``` |
| 23 | |
| 24 | ## Рабочий процесс |
| 25 | |
| 26 | 1. Claude пишет JSON-определение → файл `.json` |
| 27 | 2. Claude вызывает `/mxl-compile` для генерации Template.xml |
| 28 | 3. Claude вызывает `/mxl-validate` для проверки корректности |
| 29 | 4. Claude вызывает `/mxl-info` для верификации структуры |
| 30 | |
| 31 | **Если макет создаётся по изображению** (скриншот, скан печатной формы) — сначала вызвать `/img-grid` для наложения сетки, по ней определить границы колонок и пропорции, затем использовать `"Nx"` ширины + `"page"` для автоматического расчёта размеров. |
| 32 | |
| 33 | ## JSON-схема DSL |
| 34 | |
| 35 | Полная спецификация формата: **`docs/mxl-dsl-spec.md`** (прочитать через перед написанием JSON). |
| 36 | |
| 37 | Краткая структура: |
| 38 | |
| 39 | ``` |
| 40 | { columns, page, defaultWidth, columnWidths, |
| 41 | fonts: { name: { face, size, bold, italic, underline, strikeout } }, |
| 42 | styles: { name: { font, align, valign, border, borderWidth, wrap, format } }, |
| 43 | areas: [{ name, rows: [{ height, rowStyle, cells: [ |
| 44 | { col, span, rowspan, style, param, detail, text, template } |
| 45 | ]}]}] |
| 46 | } |
| 47 | ``` |
| 48 | |
| 49 | Ключевые правила: |
| 50 | - `page` — формат страницы (`"A4-landscape"`, `"A4-portrait"` или число). Автоматически вычисляет `defaultWidth` из суммы пропорций `"Nx"` |
| 51 | - `col` — 1-based позиция колонки |
| 52 | - `rowStyle` — автозаполнение пустот стилем (рамки по всей ширине) |
| 53 | - Тип заполнения определяется автоматически: `param` → Parameter, `text` → Text, `template` → Template |
| 54 | - `rowspan` — объединение строк вниз (rowStyle учитывает занятые ячейки) |