# Оформление Два независимых механизма: **оформление элемента** (постоянные цвета/шрифт/граница на конкретном элементе) и **условное оформление формы** (`conditionalAppearance` — правила, применяемые при выполнении условия). ## Оформление элемента (цвета / шрифты / граница) Свойства задаются прямо на элементе. Применимо к полям (`input`/`check`/`radio`/`labelField`/`picField`/`calendar`), декорациям (`label`/`picture`), кнопкам (`button`), группам (`group`/`columnGroup`), страницам (`page`/`pages`), попапам (`popup`) и таблицам (`table`). Каждое свойство необязательно. | Ключ | Что задаёт | |------|-----------| | `textColor` | Цвет текста | | `backColor` | Цвет фона | | `borderColor` | Цвет рамки | | `font` | Шрифт | | `border` | Граница | | `titleTextColor` / `titleBackColor` / `titleFont` | Цвет текста / цвет фона / шрифт заголовка колонки (`labelField`, колонки таблицы); у `page`/`pages`/`popup` — `titleTextColor`/`titleFont` заголовка страницы/попапа | | `footerTextColor` / `footerBackColor` / `footerFont` | Цвет текста / цвет фона / шрифт подвала колонки | Те же свойства доступны и через словарь `appearance` элемента — под русскими именами параметров платформы: `ЦветТекста`, `ЦветФона`, `ЦветРамки`, `Шрифт`, `Граница`, `ЦветТекстаЗаголовка`, `ЦветФонаЗаголовка`, `ШрифтЗаголовка`, `ЦветТекстаПодвала`, `ЦветФонаПодвала`, `ШрифтПодвала`. Это та же запись, что и в правилах условного оформления (ниже) и в `appearance` поля дин-списка. ### Цвет Строка в одной из форм: | Форма | Значение | |-------|----------| | `web:Имя` | Цвет из web-палитры, напр. `web:Red`, `web:FireBrick`, `web:HoneyDew` | | `win:Имя` | Системный цвет Windows, напр. `win:MenuBar`, `win:ButtonText`, `win:DisabledText` | | `style:ИмяСтиля` | Ссылка на элемент стиля конфигурации/платформы, напр. `style:FormBackColor`, `style:BorderColor` | | `#RRGGBB` | RGB-hex, напр. `#FF0000` | Имя должно существовать в своей палитре (несуществующий web-/win-цвет или ссылка на отсутствующий `style:`-элемент — ошибка загрузки формы). ### Шрифт (`font` / `titleFont` / `footerFont`) - Строка `"style:ИмяСтиля"` — шрифт из элемента стиля. Минимальная форма. - Объект — задаются только нужные атрибуты: | Ключ | Назначение | |------|-----------| | `ref` | Ссылка на стиль (`"style:X"`) или системный шрифт (`"sys:…"`) | | `faceName` | Имя гарнитуры (для собственного шрифта) | | `height` | Размер | | `bold` / `italic` / `underline` / `strikeout` | `true`/`false` — начертание | | `scale` | Масштаб, % | | `kind` | `Absolute` (собственный шрифт — с `faceName`+`height`) / `WindowsFont` (системный — с `ref:"sys:…"`) | ```json { "label": "Внимание!", "textColor": "web:FireBrick", "font": { "faceName": "Arial", "height": 12, "bold": true, "kind": "Absolute", "scale": 100 } } ``` ### Граница (`border`) - Строка `"style:ИмяСтиля"` (или объект `{ "ref": "style:X" }`) — граница из стиля. - Объект `{ "width": N, "style": "..." }` — собственная граница. `style` — один из: `Single`, `Double`, `Underline`, `DoubleUnderline`, `Overline`, `Embossed`, `Indented`, `WithoutBorder`. ```json { "input": "Цена", "path": "Объект.Цена", "textColor": "#FF0000", "borderColor": "style:BorderColor", "border": { "width": 1, "style": "Single" } } { "labelField": "Код", "titleTextColor": "web:HoneyDew", "border": "style:ControlBorder" } ``` ## Условное оформление формы (`conditionalAppearance`) Форменный ключ верхнего уровня — массив правил. Каждое правило применяет оформление к перечисленным полям, когда выполняется его условие. ```json "conditionalAppearance": [ { "selection": ["ОбычноеПоле"], "filter": ["ЧисловоеПоле > 100"], "appearance": { "ЦветФона": "style:FormBackColor" }, "presentation": { "ru": "Подсветка", "en": "Highlight" } } ] ``` | Ключ | Тип | Назначение | |------|-----|-----------| | `selection` | array | Имена форматируемых полей формы | | `filter` | array | Условие применения (грамматика — ниже) | | `appearance` | object | Словарь «параметр платформы: значение» | | `presentation` | string / object | Подпись правила в списке настроек | | `use` | bool | `false` — правило отключено | | `viewMode` | string | Режим отображения настройки | | `userSettingID` | string | Идентификатор пользовательской настройки; `"auto"` — сгенерировать | ### filter Та же грамматика, что в отборе списка — shorthand `"Поле оператор значение @флаги"` или объект: ```json "filter": [ "Статус = 3", { "field": "Сумма", "op": ">=", "value": 1000 }, { "group": "Or", "items": [ "Просрочено = true", "Заблокирован = true" ] } ] ``` - **Операторы:** `=` `<>` `>` `>=` `<` `<=`, `in` / `notIn`, `inHierarchy`, `contains` / `notContains`, `beginsWith` / `notBeginsWith`, `like` / `notLike` (`%`-шаблон), `filled` / `notFilled`. - **Флаги:** `@off` (отключён), `@user`, `@quickAccess`; `_` = пустое значение. - **Группа:** `{ "group": "And"|"Or"|"Not", "items": [...], "use"? }`. - **Дата-значение:** ISO-дата `"2024-01-01T00:00:00"` — фиксированная дата; именованный относительный период — строкой `"BeginningOfThisWeek"` с `"valueType": "v8:StandardBeginningDate"` (варианты `BeginningOfThisDay`/`BeginningOfThisWeek`/`BeginningOfThisMonth`/`BeginningOfThisYear`/…). ### appearance Словарь «параметр платформы: значение». Имена параметров — русские: `ЦветТекста`, `ЦветФона`, `Шрифт`, `Граница`, `Текст`, `Заголовок`, `Формат`, `ВидимостьЭлемента`, `Доступность` и другие параметры оформления компоновки. Значения: - **Цвет** (`ЦветТекста`/`ЦветФона`/…) и **шрифт** (`Шрифт`) — те же формы, что в оформлении элемента выше (`web:`/`win:`/`style:`/`#RRGGBB`; шрифт — строка `"style:X"` или объект). - **Текстовые параметры** (`Текст`/`Заголовок`/`Формат`) — по форме значения: - голая строка → нелокализованный литерал (`""` → пустое значение); - объект `{ "ru": "...", "en": "..." }` → локализуемая строка; - объект `{ "field": "путь" }` → ссылка на поле компоновки. ```json "conditionalAppearance": [ { "selection": ["Остаток"], "filter": ["Остаток < 0"], "appearance": { "ЦветТекста": "web:Red", "Шрифт": { "bold": true } } }, { "selection": ["Комментарий"], "filter": ["Комментарий notFilled"], "appearance": { "Текст": { "ru": "— нет данных —" }, "ЦветТекста": "win:DisabledText" } } ] ``` > Условное оформление **самого дин-списка** задаётся не здесь, а в `settings.conditionalAppearance` реквизита-списка — см. `references/dynamic-list.md`.