# Разметка: области координатами и колоночные раскладки Читать, когда область не описывается диапазоном подряд идущих строк или когда части документа нужны разные ширины колонок. ## Именованные области координатами (`namedAreas[]`) Для областей, которые диапазоном подряд идущих строк не описываются: полоса колонок, прямоугольник, ячейка, а также пересекающиеся с другими. | Поле | Обяз. | Описание | |------|:-----:|----------| | `name` | да | Имя области | | `rows` | \* | Строки: число или диапазон `"N-M"`, 1-based | | `cols` | \* | Колонки: число или диапазон `"N-M"`, 1-based | | `columnSet` | нет | Колоночная раскладка области. Без ключа выводится из накрытых строк, `""` — привязки нет | \* Обязательна хотя бы одна из осей. **Тип области не указывается** — он следует из того, какие оси заданы, как в `ТабличныйДокумент.Область()`: только строки → полоса строк, только колонки → полоса колонок, обе оси → прямоугольник, одиночные значения по обеим осям → одна ячейка. ```json "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`. ```json { "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`; значение — имя стиля. ```json "columnWidths": { "1": 30, "2-3": 15 }, "columnStyles": { "1": "по-центру", "4": "скрытая" } ``` Внутри `columnSets` работает тот же ключ. Ширина и стиль независимы: колонка может иметь только ширину, только стиль или и то, и другое.