mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-19 01:30:23 +03:00
75 lines
4.8 KiB
Markdown
75 lines
4.8 KiB
Markdown
# Разметка: области координатами и колоночные раскладки
|
||
|
||
Читать, когда область не описывается диапазоном подряд идущих строк или когда части документа нужны разные ширины колонок.
|
||
|
||
## Именованные области координатами (`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` работает тот же ключ. Ширина и стиль независимы: колонка может иметь
|
||
только ширину, только стиль или и то, и другое.
|