feat(form-decompile,form-compile): батч скаляров — форм. ChildItemsWidth/VerticalAlign/HorizontalSpacing + check/radio EqualItemsWidth/ItemTitleHeight

Раундтрип терял несколько pass-through скаляров:
- форм-уровень <ChildItemsWidth> (36 форм), <VerticalAlign> (26), <HorizontalSpacing> (25) —
  обрабатывались только как элементные генерики, не на форм-уровне;
- <EqualItemsWidth> (check/radio, 28: false 23/true 5) и <ItemTitleHeight> (radio) — чистый
  двусторонний пробел (не ловились вовсе).

decompile: форм-уровневые → KNOWN_FORM_PROPS; элементные → GENERIC_SCALARS (зеркало компилятора).
compile (ps1+py): форм-уровневые через generic Emit-Properties (авто-PascalCase); элементные —
в genericScalars (Emit-Layout→Emit-GenericScalars, покрывает check/radio).

Верификация: таргет-раундтрип 129 форм с этими тегами → 5 категорий закрыты (0 LOST; остаток —
др. категории Button>Parameter/valueType/content). Регресс form-compile 43/43 (ps1+py); 1С-cert
groups (форм-уровень) + radio-auto-enum (element). spec.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-06-12 16:21:59 +03:00
parent 01e5de8acf
commit c383cc4ffe
8 changed files with 26 additions and 5 deletions
+5
View File
@@ -77,6 +77,9 @@
| `showCloseButton` | `<ShowCloseButton>` | `true` / `false` — показывать кнопку закрытия |
| `horizontalAlign` | `<HorizontalAlign>` | `Left`, `Center`, `Right` — горизонтальное выравнивание формы |
| `childrenAlign` | `<ChildrenAlign>` | Выравнивание элементов/заголовков (`ItemsLeftTitlesLeft`, `ItemsRightTitlesLeft`, `None`, …) |
| `childItemsWidth` | `<ChildItemsWidth>` | Ширина дочерних элементов формы (`Equal`, `LeftWide`, `LeftNarrow`, …) |
| `verticalAlign` | `<VerticalAlign>` | Вертикальное выравнивание (`Top`/`Center`/`Bottom`) |
| `horizontalSpacing` | `<HorizontalSpacing>` | Горизонтальный интервал между элементами (`Single`/`Double`/`None`/…) |
| `showTitle` | `<ShowTitle>` | `true` / `false` — показывать заголовок формы |
| `conversationsRepresentation` | `<ConversationsRepresentation>` | `Auto`, `Show`, `DontShow` — отображение панели обсуждений; pass-through (редкое) |
| `collapseItemsByImportanceVariant` | `<CollapseItemsByImportanceVariant>` | `DontUse`, `Use` — сворачивание элементов по важности; pass-through (редкое) |
@@ -491,6 +494,8 @@ companion-панели с собственным контентом. Оба не
| `path` | string | DataPath |
| `radioButtonType` | string | `Auto` (по умолчанию), `RadioButtons`, `Tumbler` |
| `columnsCount` | int | Число колонок раскладки |
| `itemTitleHeight` | int | Высота заголовка пункта (`<ItemTitleHeight>`) |
| `equalItemsWidth` | bool | Равная ширина пунктов (`<EqualItemsWidth>`); общий с `check` |
| `titleLocation` | string | Расположение заголовка. **Нет ключа** → умный дефолт `None`. **`""`** → не выводить тег (платформа применит своё умолчание). Значение → как указано |
| `choiceList` | array | Варианты выбора: массив `{ value, presentation }` |