mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-17 16:25:16 +03:00
124 lines
8.8 KiB
Markdown
124 lines
8.8 KiB
Markdown
# Оформление
|
||
|
||
Два независимых механизма: **оформление элемента** (постоянные цвета/шрифт/граница на конкретном элементе) и **условное оформление формы** (`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`.
|