# Табличный документ (MXL)

Навыки группы `/mxl-*` позволяют анализировать, создавать и модифицировать макеты табличных документов 1С — основной формат печатных форм в конфигурациях 1С:Предприятия.

## Навыки

| Навык | Параметры | Описание |
|-------|-----------|----------|
| `/mxl-info` | `<TemplatePath>` или `<ProcessorName> <TemplateName>` | Анализ структуры: области, параметры, наборы колонок |
| `/mxl-validate` | `<TemplatePath>` или `<ProcessorName> <TemplateName>` | Валидация: индексы, ссылки, границы |
| `/mxl-compile` | `<JsonPath> <OutputPath>` | Компиляция макета из JSON-определения в Template.xml |
| `/mxl-decompile` | `<TemplatePath> [OutputPath]` | Декомпиляция Template.xml в JSON-определение |

## Сценарии использования

### Создание макета печатной формы с нуля

Вы описываете макет словами или через JSON DSL, Claude компилирует его в Template.xml.

```
> Создай макет накладной М-11: шапка с реквизитами организации и склада,
> таблица с колонками (номер, наименование, единица, количество, цена, сумма),
> итоговая строка, подписи.
```

Claude напишет JSON-определение с областями, параметрами и стилями, вызовет `/mxl-compile` для генерации XML, затем `/mxl-validate` и `/mxl-info` для проверки.

Рабочий цикл:
1. Claude пишет JSON-определение макета
2. `/mxl-compile` → Template.xml
3. `/mxl-validate` → проверка корректности
4. `/mxl-info` → верификация структуры (области, параметры)

### Создание макета по изображению

Если есть скриншот или скан печатной формы, `/img-grid` поможет точно определить пропорции колонок.

```
> Вот изображение формы М-11. Создай макет по нему.
```

Рабочий цикл:
1. `/img-grid` → изображение с пронумерованной сеткой
2. Claude считает координаты границ колонок по сетке
3. Объединяет границы всех таблиц → базовая решётка
4. Пишет JSON DSL с пропорциями `"Nx"` и `"page": "A4-landscape"`
5. `/mxl-compile` автоматически вычисляет абсолютные ширины из пропорций и формата страницы
6. `/mxl-validate` → `/mxl-info` → проверка

### Анализ существующего макета

Быстрый обзор структуры макета без чтения тысяч строк XML.

```
> Покажи структуру макета ПФ_MXL_М11
```

Claude вызовет `/mxl-info` и выведет области, параметры и наборы колонок. С флагом `-WithText` покажет ещё и текстовое содержимое ячеек (заголовки колонок, надписи).

### Модификация существующего макета

Декомпиляция в JSON, правка, компиляция обратно.

```
> Добавь в макет М-11 колонку "Примечание"
```

Claude вызовет `/mxl-decompile` для получения JSON, добавит колонку в определение, вызовет `/mxl-compile` и `/mxl-validate`.

Рабочий цикл:
1. `/mxl-decompile` → JSON из существующего Template.xml
2. Claude модифицирует JSON (добавляет области, меняет стили, параметры)
3. `/mxl-compile` → обновлённый Template.xml
4. `/mxl-validate` → проверка

> **Ограничения:** Этот сценарий подразумевает полную перегенерацию макета, а не точечную правку XML. Поэтому diff может показать больше изменений, чем фактическая доработка. Кроме того, DSL пока поддерживает не все конструкции табличного документа — для сложных макетов с рисунками, штрихкодами или нестандартным форматированием часть информации может быть потеряна при round-trip.

### Валидация макета

Проверка структурной корректности после любых изменений.

```
> Проверь макет ПФ_MXL_М11
```

Claude вызовет `/mxl-validate`, который проверит индексы палитр, ссылки на наборы колонок, границы областей и другие структурные зависимости.

### Примеры слеш-команд

```
> /mxl-info src/МояОбработка/Templates/ПФ_MXL_Накладная/Ext/Template.xml
> /mxl-info МояОбработка ПФ_MXL_Накладная
> /mxl-validate МояОбработка ПФ_MXL_Накладная
> /mxl-compile макет.json src/МояОбработка/Templates/ПФ_MXL_Накладная/Ext/Template.xml
> /mxl-decompile src/МояОбработка/Templates/ПФ_MXL_Накладная/Ext/Template.xml макет.json
```

## Связь с EPF-навыками

Макет табличного документа — часть обработки. Типичный сценарий создания печатной формы:

1. `/epf-init` — создать обработку
2. `/template-add` — добавить макет SpreadsheetDocument (с именем `ПФ_MXL_...`)
3. `/mxl-compile` — заполнить макет содержимым из JSON-определения
4. `/epf-bsp-init` — добавить регистрацию БСП с видом ПечатнаяФорма
5. `/epf-bsp-add-command` — добавить команду печати
6. `/epf-build` — собрать EPF

## Спецификации

- [Табличный документ (MXL)](1c-spreadsheet-spec.md) — XML-формат SpreadsheetDocument, совместимость версий
- [MXL DSL](mxl-dsl-spec.md) — JSON-формат описания макета для `/mxl-compile` и `/mxl-decompile`
