# Оформление: шрифты, стили, колонки Оформление в табличном документе — одна сущность на всех: ячейка, строка и колонка ссылаются на один и тот же именованный стиль. Ячейка — ключом `style`, строка — `rowStyle`, колонка — через `columnStyles`. ## Шрифты (`fonts.`) | Поле | По умолч. | Описание | |------|-----------|----------| | `face` | `"Arial"` | Имя шрифта | | `size` | `10` | Размер (бывает дробным: `8.3`) | | `bold` | `false` | Жирный | | `italic` | `false` | Курсив | | `underline` | `false` | Подчёркнутый | | `strikeout` | `false` | Зачёркнутый | Шрифт `"default"` используется, когда стиль не указывает шрифт явно. Если не определён, создаётся автоматически (Arial 10). Вместо собственного описания шрифт может быть **ссылкой** — на элемент стиля конфигурации или на системный шрифт. Тогда у него единственное поле: ```json "fonts": { "основной": { "ref": "style:TextFont" }, "системный": { "ref": "sys:DefaultGUIFont" } } ``` Это та же запись, что у шрифта в описании формы. ## Стили (`styles.`) Ключ стиля — имя свойства так, как оно называется в выгрузке. Ниже частые; полный список из 44 свойств — в `format-properties.md`. | Поле | Описание | |------|----------| | `font` | Ссылка на имя из `fonts` | | `horizontalAlignment` | `Left`, `Center`, `Right`, `Justify`, `Auto` | | `verticalAlignment` | `Top`, `Center`, `Bottom` | | `textPlacement` | Что делать с длинным текстом: `Wrap` (перенос), `Cut` (обрезать), `Block`, `Auto` | | `backColor` | Цвет фона (см. «Цвет») | | `textColor` | Цвет текста | | `border`, `leftBorder`, `topBorder`, `rightBorder`, `bottomBorder` | Рамка (см. «Рамка») | | `borderColor` | Цвет рамки | | `format` | Формат данных 1С: `"ЧЦ=15; ЧДЦ=2"`, `"ДФ=dd.MM.yyyy"` | | `hidden` | Скрыть | | `protection` | Защита от редактирования | | `indent` | Отступ | | `textOrientation` | Поворот текста, в десятых долях градуса (`900` = 90°) | Значения перечислений регистр не различают: `"center"` и `"Center"` равнозначны. ```json "styles": { "шапка": { "font": "жирный", "horizontalAlignment": "Center", "verticalAlignment": "Center", "textPlacement": "Wrap", "backColor": "#EBEBEB" }, "итог": { "font": "жирный", "topBorder": "Solid", "horizontalAlignment": "Right" } } ``` ## Цвет Строка в одной из четырёх форм — это нотация самой платформы: | Форма | Значение | |-------|----------| | `#RRGGBB` | RGB-hex, напр. `#FFFFC0` | | `style:ИмяСтиля` | Элемент стиля конфигурации или платформы, напр. `style:FormBackColor` | | `web:Имя` | Цвет из web-палитры, напр. `web:Gainsboro`, `web:FireBrick` | | `win:Имя` | Системный цвет Windows, напр. `win:ButtonText` | Имя должно существовать в своей палитре — несуществующее платформа отвергнет при загрузке. ## Рамка Пять ключей: `border` — все четыре стороны сразу, `leftBorder` / `topBorder` / `rightBorder` / `bottomBorder` — по отдельности. Значение одинаковое у всех: | Запись | Значение | |--------|----------| | `"Solid"` | Стиль линии, ширина 1 | | `{ "style": "Solid", "width": 2 }` | Стиль и ширина | Стили линии: `Solid`, `None`, `Dotted`, `ThinDashed`, `LargeDashed`, `ThickDashed`, `Double`. Задавать стороны по отдельности можно всегда: если все четыре совпали, компилятор сам свернёт их в один `border` — так это хранит платформа. ```json "рамка-снизу": { "bottomBorder": "Dotted" }, "рамка-вокруг": { "border": { "style": "Solid", "width": 2 } } ``` ## Колоночные раскладки (`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` работает тот же ключ. Ширина и стиль независимы: колонка может иметь только ширину, только стиль или и то, и другое.