Files
cc-1c-skills/docs/mxl-dsl-styles.md
T
Nick ShirokovandClaude Opus 5 08503c72e9 docs(mxl): разделить справочник DSL и описать новые ключи
Справочник был одним файлом на 273 строки, а полная таблица свойств стиля его
бы удвоила. Разделён по частоте обращения, как в meta-compile: в инструкции
маршрутная таблица «что нужно → какой файл».

  reference/dsl-spec.md          — верхний уровень, области, строки, ячейки
  reference/styles.md            — шрифты, стили, цвет, рамка, колонки
  reference/format-properties.md — полный перечень свойств стиля

Описаны columnStyles и новая запись стиля: ключ = имя свойства как в выгрузке,
рамка пятью ключами, цвет в четырёх формах. Прежние align/valign/wrap работают
и дальше, но в описании их нет — иначе у модели появляется развилка.

Ограничения переписаны по факту: цвета, скрытие, отступ, посторонние рамки и
стили линий больше не теряются; зато честно названо то, что теряется до сих пор —
оформление строки помимо высоты.

Пример из спеки скомпилирован и проверен валидатором.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-11 17:14:31 +03:00

6.7 KiB
Raw Blame History

Оформление: шрифты, стили, колонки

Оформление в табличном документе — одна сущность на всех: ячейка, строка и колонка ссылаются на один и тот же именованный стиль. Ячейка — ключом style, строка — rowStyle, колонка — через columnStyles.

Шрифты (fonts.<name>)

Поле По умолч. Описание
face "Arial" Имя шрифта
size 10 Размер (бывает дробным: 8.3)
bold false Жирный
italic false Курсив
underline false Подчёркнутый
strikeout false Зачёркнутый

Шрифт "default" используется, когда стиль не указывает шрифт явно. Если не определён, создаётся автоматически (Arial 10).

Стили (styles.<name>)

Ключ стиля — имя свойства так, как оно называется в выгрузке. Ниже частые; полный список из 44 свойств — в mxl-dsl-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" равнозначны.

"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 — так это хранит платформа.

"рамка-снизу":  { "bottomBorder": "Dotted" },
"рамка-вокруг": { "border": { "style": "Solid", "width": 2 } }

Колоночные раскладки (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 работает тот же ключ. Ширина и стиль независимы: колонка может иметь только ширину, только стиль или и то, и другое.