Files
cc-1c-skills/.claude/skills/form-compile/references/layout-advanced.md
T
Nick ShirokovandClaude Opus 4.8 09d7097476 feat(form-compile): авторские references + индекс, корректность наборов значений
Каскад инструкции: ядро SKILL.md покрывает большинство задач, для редких/нишевых
конструкций — 12 тематических файлов в references/ (по индексу в SKILL.md).
Контракт references: только «как собрать DSL для задачи» — без механики эмиссии,
синонимов, авторезолва и forgiving (это тихая помощь модели); ссылки только внутри
навыка; область строго по элементу-владельцу.

Корректность ядра (наборы значений выверены по корпусу + доменно, forgiving/legacy
исключены из авторских):
- group расцеплён: ориентация (vertical/horizontalIfPossible/alwaysHorizontal) +
  отдельный ключ behavior (collapsible/popup) — popup-группы стали выразимы;
- titleLocation: полный набор none/left/right/top/bottom/auto;
- commandBarLocation += Bottom; searchStringLocation += Bottom/CommandBar/PullFromTop;
- общее свойство tooltip; events: null → авто-имя обработчика; правило уникальности имён.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 13:16:22 +03:00

8.7 KiB

Продвинутая раскладка

Тонкая настройка размещения элемента внутри родителя сверх базовой геометрии (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 — «как разместить текст внутри элемента». Это разные оси настройки, их часто комбинируют.

{ "button": "ОК", "groupHorizontalAlign": "Right" }
{ "input": "Сумма", "path": "Объект.Сумма", "horizontalAlign": "Right" }
{ "label": "Итого", "groupHorizontalAlign": "Center", "horizontalAlign": "Center" }

Ограничение максимального размера

По умолчанию растягивающийся элемент имеет авто-вычисляемый предел ширины/высоты. Чтобы задать жёсткий предел или вовсе снять авто-предел:

Ключ Значения Назначение
maxWidth число Жёсткий максимум ширины элемента
maxHeight число Жёсткий максимум высоты элемента
autoMaxWidth false Отключить авто-предел ширины (элемент тянется без ограничения сверху)
autoMaxHeight false Отключить авто-предел высоты

autoMaxWidth: false нужен, например, для широкого многострочного поля или растянутого по всей форме поля ввода, чтобы платформа не «прижимала» его к авто-пределу. Указывают именно отклонение от дефолта; обычное значение true писать не нужно.

{ "input": "Комментарий", "path": "Объект.Комментарий", "multiLine": true,
  "horizontalStretch": true, "autoMaxWidth": false }
{ "input": "Поиск", "path": "СтрокаПоиска", "horizontalStretch": true, "maxWidth": 600 }

Поведение при вводе и активации

Ключ Значения Назначение
skipOnInput true / false Пропускать элемент при обходе по Enter/Tab (фокус через него не проходит). Указывают явно, в т.ч. false чтобы вернуть в обход поле, которое платформа пропустила бы
defaultItem true Элемент получает фокус по умолчанию при открытии формы (поле/таблица для немедленного ввода)
{ "input": "Идентификатор", "path": "Объект.Идентификатор", "skipOnInput": true }
{ "input": "Штрихкод", "path": "Штрихкод", "defaultItem": true }

skipOnInput: true — для служебных/расчётных полей, которые видны, но не редактируются вводом с клавиатуры в общем потоке. defaultItem: true ставят на одном элементе формы — точке, с которой пользователь начнёт работу.

Перетаскивание

Ключ Значения Назначение
enableStartDrag true Разрешить начинать перетаскивание из элемента (источник drag-n-drop)

Для таблиц приём/перемещение строк управляется ключами таблицы (enableDrag, changeRowOrder) — см. основную инструкцию; enableStartDrag — общий низкоуровневый флаг «этот элемент может быть источником перетаскивания».

Закрепление колонки в таблице (fixingInTable)

Свойство поля-колонки внутри таблицы: закрепить колонку у края, чтобы она не уходила при горизонтальной прокрутке.

Значения
None (по умолчанию — не закреплена) / Left / Right
{ "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 Авто-высота ячейки (перенос содержимого на несколько строк)
{ "table": "Товары", "path": "Объект.Товары", "footer": true, "columns": [
    { "input": "Номенклатура", "path": "Объект.Товары.Номенклатура", "autoCellHeight": true },
    { "input": "Сумма", "path": "Объект.Товары.Сумма",
      "headerHorizontalAlign": "Right", "showInFooter": true, "footerHorizontalAlign": "Right" } ] }

Адаптивная важность (displayImportance)

Значения
VeryHigh / High / Usual / VeryLow / Low

Приоритет элемента при адаптивной перекомпоновке формы на узких/мобильных экранах: элементы с меньшей важностью сворачиваются/прячутся первыми. Применимо к любому элементу.

{ "input": "Комментарий", "path": "Объект.Комментарий", "displayImportance": "Low" }