Files
cc-1c-skills/.claude/skills/mxl-compile/reference/layout.md
T
Nick Shirokov e10421d18e docs(mxl-compile): выправить примеры каскада по проверке компилятором
Прогнал каждый json-блок инструкций и спецификации через компилятор
и валидатор, фрагменты достраивая до минимального макета. Нашлось:

- пример колоночных раскладок показывал области с "rows": [] — макет
  с именованными областями поверх нуля строк, валидатор на нём ругается;
- шапка таблицы в примере SKILL.md была записана пятью объектами с col
  там, где хватает позиционного списка строк.

Оба поправлены; раундтрип примера подтверждает, что форма каноническая —
декомпилятор возвращает её же.
2026-08-17 13:01:50 +03:00

4.8 KiB

Разметка: области координатами и колоночные раскладки

Читать, когда область не описывается диапазоном подряд идущих строк или когда части документа нужны разные ширины колонок.

Именованные области координатами (namedAreas[])

Для областей, которые диапазоном подряд идущих строк не описываются: полоса колонок, прямоугольник, ячейка, а также пересекающиеся с другими.

Поле Обяз. Описание
name да Имя области
rows * Строки: число или диапазон "N-M", 1-based
cols * Колонки: число или диапазон "N-M", 1-based
columnSet нет Колоночная раскладка области. Без ключа выводится из накрытых строк, "" — привязки нет

* Обязательна хотя бы одна из осей.

Тип области не указывается — он следует из того, какие оси заданы, как в ТабличныйДокумент.Область(): только строки → полоса строк, только колонки → полоса колонок, обе оси → прямоугольник, одиночные значения по обеим осям → одна ячейка.

"namedAreas": [
  { "name": "ОбластьПечатиПоВысоте", "rows": "1-48" },
  { "name": "ОбластьПечатиПоШирине", "cols": "1-35" },
  { "name": "HZY", "rows": 9, "cols": "16-17" }
]

Диапазон — та же грамматика, что у columnWidths, но только число или "N-M": список через запятую запрещён, область непрерывна. Имя обязательно, и хотя бы одна ось должна быть задана; нарушение любого из этих правил → ненулевой код выхода и сообщение в stderr.

Колоночные раскладки (columnSets)

Группа строк может иметь собственные ширины колонок — в 1С это «индивидуальная ширина колонок». Документные columns и columnWidths описывают раскладку по умолчанию; дополнительные объявляются в columnSets, а область ссылается на нужную ключом columnSet — так же, как ячейка ссылается на styles через style.

{
  "columns": 52,
  "columnWidths": { "1": 8 },
  "columnSets": {
    "таблица": { "columns": 52, "columnWidths": { "1": 7, "2-52": 24 } }
  },
  "areas": [
    { "name": "Шапка", "rows": [["Отчёт о продажах"]] },
    { "name": "ТабличнаяЧасть", "columnSet": "таблица",
      "rows": [["№", "Номенклатура"]] }
  ]
}

Раскладка описывается той же парой полей, что и документная: columns — количество колонок (у раскладок оно обычно разное), columnWidths — ширины. Ключ словаря — имя раскладки; в макетах, полученных декомпиляцией, это идентификатор из исходного файла, при описании с нуля — любая строка.

Все строки области получают раскладку области, поэтому одна область не может смешивать раскладки. Позиции колонок (col, span) проверяются по ширине раскладки СВОЕЙ области, а не документной.

Ссылка на необъявленную раскладку → ненулевой код выхода и сообщение в stderr.

Стиль колонки (columnStyles)

Колонка несёт то же оформление, что ячейка и строка. Ключи — та же грамматика диапазонов, что у columnWidths; значение — имя стиля.

"columnWidths": { "1": 30, "2-3": 15 },
"columnStyles": { "1": "по-центру", "4": "скрытая" }

Внутри columnSets работает тот же ключ. Ширина и стиль независимы: колонка может иметь только ширину, только стиль или и то, и другое.