--- name: mxl-info description: Анализ структуры макета табличного документа (MXL) — области, параметры, наборы колонок argument-hint: или allowed-tools: - Bash - Read - Glob --- # /mxl-info — Анализ структуры макета Читает Template.xml табличного документа и выводит компактную сводку: именованные области, параметры, наборы колонок. Заменяет необходимость читать тысячи строк XML. ## Использование ``` /mxl-info /mxl-info ``` ## Параметры | Параметр | Обязательный | По умолчанию | Описание | |---------------|:------------:|--------------|------------------------------------------| | TemplatePath | нет | — | Прямой путь к Template.xml | | ProcessorName | нет | — | Имя обработки (альтернатива пути) | | TemplateName | нет | — | Имя макета (альтернатива пути) | | SrcDir | нет | `src` | Каталог исходников | | Format | нет | `text` | Формат вывода: `text` или `json` | | WithText | нет | false | Включить статический текст и шаблоны | | MaxParams | нет | 10 | Макс. параметров в списке на область | | Limit | нет | 150 | Макс. строк вывода (защита от переполнения) | | Offset | нет | 0 | Пропустить N строк (для пагинации) | Укажите либо `-TemplatePath`, либо оба `-ProcessorName` и `-TemplateName`. ## Команда ```powershell powershell.exe -NoProfile -File .claude/skills/mxl-info/scripts/mxl-info.ps1 -TemplatePath "<путь>" ``` Или по имени обработки/макета: ```powershell powershell.exe -NoProfile -File .claude/skills/mxl-info/scripts/mxl-info.ps1 -ProcessorName "<Имя>" -TemplateName "<Макет>" [-SrcDir "<каталог>"] ``` Дополнительные флаги: ```powershell ... -WithText # включить текстовое содержимое ячеек ... -Format json # JSON-вывод для программной обработки ... -MaxParams 20 # показать больше параметров на область ... -Offset 150 # пагинация: пропустить первые 150 строк ``` ## Чтение вывода ### Области — сортировка сверху вниз Области перечислены в порядке документа (по позиции строки), а не по алфавиту. Это соответствует порядку вывода областей в коде заполнения — сверху вниз. ``` --- Named areas --- Заголовок Rows rows 1-4 (1 params) Поставщик Rows rows 5-6 (1 params) Строка Rows rows 14-14 (8 params) Итого Rows rows 16-17 (1 params) ``` Типы областей: - **Rows** — горизонтальная область (диапазон строк). Получение: `Макет.ПолучитьОбласть("Имя")` - **Columns** — вертикальная область (диапазон колонок). Получение: `Макет.ПолучитьОбласть("Имя")` - **Rectangle** — фиксированная область (строки + колонки). Обычно использует отдельный набор колонок. - **Drawing** — именованный рисунок/штрихкод. ### Наборы колонок Когда в макете несколько наборов колонок, их размеры показаны в заголовке и для каждой области: ``` Column sets: 7 (default=19 cols + 6 additional) f01e015f...: 17 cols 0adf41ed...: 4 cols ... Подвал Rows rows 30-34 (5 params) [colset 14cols] НумерацияЛистов Rows rows 59-59 (0 params) [colset 4cols] ``` ### Пересечения Когда есть области и Rows, и Columns (этикетки, ценники), скрипт выводит пары пересечений: ``` --- Intersections (use with GetArea) --- ВысотаЭтикетки|ШиринаЭтикетки ``` В BSL: `Макет.ПолучитьОбласть("ВысотаЭтикетки|ШиринаЭтикетки")` ### Параметры и detailParameter Параметры перечислены по областям. Если у параметра есть `detailParameter` (расшифровка), он показан ниже: ``` --- Parameters by area --- Поставщик: ПредставлениеПоставщика detail: ПредставлениеПоставщика->Поставщик Строка: НомерСтроки, Товар, Количество, Цена, Сумма, ... (+3) detail: Товар->Номенклатура ``` Это означает: параметр `Товар` отображает значение, а при клике открывает `Номенклатура` (объект расшифровки). В BSL: ```bsl Область.Параметры.Товар = СтрокаТЧ.Номенклатура; Область.Параметры.РасшифровкаТовар = СтрокаТЧ.Номенклатура; // detailParameter ``` ### Параметры из шаблонов (суффикс `[tpl]`) Некоторые параметры встроены в шаблонный текст: `"Инв № [ИнвентарныйНомер]"`. Они заполняются через fillType=Template, а не fillType=Parameter. Скрипт всегда извлекает их и помечает суффиксом `[tpl]`: ``` НумерацияЛистов: Номер [tpl], Дата [tpl], НомерЛиста [tpl] ``` В BSL шаблонные параметры заполняются так же, как обычные: ```bsl Область.Параметры.Номер = НомерДокумента; Область.Параметры.Дата = ДатаДокумента; ``` Числовые подстановки вроде `[5]`, `[6]` (ссылки на сноски в официальных формах) игнорируются. ### Текстовое содержимое (`-WithText`) Показывает статический текст (надписи, заголовки) и шаблонные строки с подстановками `[Параметр]`: ``` --- Text content --- ШапкаТаблицы: Text: "№", "Товар", "Ед. изм.", "Кол-во", "Цена", "Сумма" Строка: Templates: "Инв № [ИнвентарныйНомер]" ``` - **Text** — статические надписи (fillType=Text). Полезно для понимания назначения колонок. - **Templates** — текст с подстановками `[ИмяПараметра]` (fillType=Template). Параметр внутри `[]` заполняется программно. ## Когда использовать - **Перед написанием кода заполнения**: запустить `/mxl-info` чтобы понять имена областей и списки параметров, затем писать BSL-код вывода, следуя порядку областей сверху вниз - **С `-WithText`**: когда нужен контекст — заголовки колонок, надписи рядом с параметрами, шаблонные строки - **С `-Format json`**: когда нужны структурированные данные для программной обработки - **Для существующих макетов**: анализ загруженных или конфигурационных макетов без чтения сырого XML ## Защита от переполнения Вывод ограничен 150 строками по умолчанию. При превышении: ``` [TRUNCATED] Shown 150 of 220 lines. Use -Offset 150 to continue. ``` Используйте `-Offset N` и `-Limit N` для постраничного просмотра.