# Продвинутая раскладка Тонкая настройка размещения элемента внутри родителя сверх базовой геометрии (`width`/`height`/`horizontalStretch`/`verticalStretch`/`visible`/`enabled` и ориентации групп/страниц — они в основной инструкции). Все ключи ниже задаются прямо на элементе и **необязательны** — без них действует поведение платформы по умолчанию. ## Выравнивание внутри родителя Различают **выравнивание самого элемента** в отведённой ему ячейке и **выравнивание содержимого** элемента. | Ключ | Значения | Что выравнивает | |------|----------|-----------------| | `groupHorizontalAlign` | `Left` / `Center` / `Right` | Положение **элемента** по горизонтали в родительской группе (когда элемент у́же доступного места) | | `groupVerticalAlign` | `Top` / `Center` / `Bottom` | Положение **элемента** по вертикали в родительской группе | | `horizontalAlign` | `Left` / `Center` / `Right` | Выравнивание **содержимого** (текста/значения) внутри самого элемента | | `verticalAlign` | `Top` / `Center` / `Bottom` | Выравнивание содержимого по вертикали внутри элемента | `group*Align` отвечает на вопрос «куда сдвинуть нерастянутый элемент в его ячейке», `horizontalAlign`/`verticalAlign` — «как разместить текст внутри элемента». Это разные оси настройки, их часто комбинируют. ```json { "button": "ОК", "groupHorizontalAlign": "Right" } { "input": "Сумма", "path": "Объект.Сумма", "horizontalAlign": "Right" } { "label": "Итого", "groupHorizontalAlign": "Center", "horizontalAlign": "Center" } ``` ## Ограничение максимального размера По умолчанию растягивающийся элемент имеет авто-вычисляемый предел ширины/высоты. Чтобы задать жёсткий предел или вовсе снять авто-предел: | Ключ | Значения | Назначение | |------|----------|-----------| | `maxWidth` | число | Жёсткий максимум ширины элемента | | `maxHeight` | число | Жёсткий максимум высоты элемента | | `autoMaxWidth` | `false` | Отключить авто-предел ширины (элемент тянется без ограничения сверху) | | `autoMaxHeight` | `false` | Отключить авто-предел высоты | `autoMaxWidth: false` нужен, например, для широкого многострочного поля или растянутого по всей форме поля ввода, чтобы платформа не «прижимала» его к авто-пределу. Указывают именно отклонение от дефолта; обычное значение `true` писать не нужно. ```json { "input": "Комментарий", "path": "Объект.Комментарий", "multiLine": true, "horizontalStretch": true, "autoMaxWidth": false } { "input": "Поиск", "path": "СтрокаПоиска", "horizontalStretch": true, "maxWidth": 600 } ``` ## Поведение при вводе и активации | Ключ | Значения | Назначение | |------|----------|-----------| | `skipOnInput` | `true` / `false` | Пропускать элемент при обходе по Enter/Tab (фокус через него не проходит). Указывают явно, в т.ч. `false` чтобы вернуть в обход поле, которое платформа пропустила бы | | `defaultItem` | `true` | Элемент получает фокус по умолчанию при открытии формы (поле/таблица для немедленного ввода) | ```json { "input": "Идентификатор", "path": "Объект.Идентификатор", "skipOnInput": true } { "input": "Штрихкод", "path": "Штрихкод", "defaultItem": true } ``` `skipOnInput: true` — для служебных/расчётных полей, которые видны, но не редактируются вводом с клавиатуры в общем потоке. `defaultItem: true` ставят на одном элементе формы — точке, с которой пользователь начнёт работу. ## Перетаскивание | Ключ | Значения | Назначение | |------|----------|-----------| | `enableStartDrag` | `true` | Разрешить начинать перетаскивание из элемента (источник drag-n-drop) | Для таблиц приём/перемещение строк управляется ключами таблицы (`enableDrag`, `changeRowOrder`) — см. основную инструкцию; `enableStartDrag` — общий низкоуровневый флаг «этот элемент может быть источником перетаскивания». ## Закрепление колонки в таблице (`fixingInTable`) Свойство поля-колонки внутри таблицы: закрепить колонку у края, чтобы она не уходила при горизонтальной прокрутке. | Значения | |----------| | `None` (по умолчанию — не закреплена) / `Left` / `Right` | ```json { "table": "Товары", "path": "Объект.Товары", "columns": [ { "input": "Номенклатура", "path": "Объект.Товары.Номенклатура", "fixingInTable": "Left" }, { "input": "Количество", "path": "Объект.Товары.Количество" }, { "input": "Сумма", "path": "Объект.Товары.Сумма", "fixingInTable": "Right" } ] } ``` Закрепляют ключевые колонки (идентифицирующую слева, итоговую справа), чтобы они оставались видны при прокрутке широкой таблицы. ## Ячейки колонок: шапка и подвал Для поля-колонки внутри таблицы (и `columnGroup`) — размещение в шапке/подвале и выравнивание текста ячеек. Применять только к элементам внутри `columns` таблицы. | Ключ | Значения | Назначение | |------|----------|-----------| | `showInHeader` | `true` / `false` | Показывать колонку в шапке таблицы | | `showInFooter` | `true` / `false` | Показывать колонку в подвале (нужно для итогов; подвал самой таблицы включается `footer: true`) | | `headerHorizontalAlign` | `Left` / `Right` / `Center` / `Auto` | Выравнивание текста в шапке колонки | | `footerHorizontalAlign` | `Left` / `Right` / `Center` | Выравнивание текста в подвале колонки | | `autoCellHeight` | `true` / `false` | Авто-высота ячейки (перенос содержимого на несколько строк) | ```json { "table": "Товары", "path": "Объект.Товары", "footer": true, "columns": [ { "input": "Номенклатура", "path": "Объект.Товары.Номенклатура", "autoCellHeight": true }, { "input": "Сумма", "path": "Объект.Товары.Сумма", "headerHorizontalAlign": "Right", "showInFooter": true, "footerHorizontalAlign": "Right" } ] } ``` ## Адаптивная важность (`displayImportance`) | Значения | |----------| | `VeryHigh` / `High` / `Usual` / `VeryLow` / `Low` | Приоритет элемента при адаптивной перекомпоновке формы на узких/мобильных экранах: элементы с меньшей важностью сворачиваются/прячутся первыми. Применимо к любому элементу. ```json { "input": "Комментарий", "path": "Объект.Комментарий", "displayImportance": "Low" } ```