---
name: 1c-mxl-info
description: "Анализ структуры макета табличного документа (MXL) — области, параметры, наборы колонок. Используй при разработке печати — получить области и заполняемые параметры макета"
---

# /mxl-info — Анализ структуры макета

Читает Template.xml табличного документа и выводит компактную сводку: именованные области, параметры, наборы колонок. Заменяет необходимость читать тысячи строк XML.

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

```
/mxl-info <TemplatePath>
/mxl-info <ProcessorName> <TemplateName>
```

## Параметры

| Параметр | Обязательный | По умолчанию | Описание |
|---------------|:------------:|--------------|------------------------------------------|
| 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 skills/1c-mxl-info/scripts/mxl-info.ps1 -TemplatePath "<путь>"
```

Или по имени обработки/макета:
```powershell
powershell.exe -NoProfile -File skills/1c-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` для постраничного просмотра.
