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
+1 -1
View File
@@ -15,7 +15,7 @@
"validatePath": "DataProcessors/СГруппами/Forms/Форма/Ext/Form.xml",
"input": {
"title": "Группы",
"properties": { "showCloseButton": false, "horizontalAlign": "Left", "childrenAlign": "ItemsLeftTitlesLeft" },
"properties": { "showCloseButton": false, "horizontalAlign": "Left", "childrenAlign": "ItemsLeftTitlesLeft", "childItemsWidth": "Equal", "verticalAlign": "Top", "horizontalSpacing": "Double" },
"elements": [
{ "cmdBar": "КоманднаяПанель", "autofill": true },
{ "group": "horizontal", "name": "ГруппаШапка", "behavior": "usual", "showTitle": true, "title": "Шапка", "shortcut": "Ctrl+G", "childrenAlign": "ItemsRightTitlesLeft", "horizontalStretch": true, "groupHorizontalAlign": "Right", "throughAlign": "Use", "verticalAlign": "Top", "childItemsWidth": "Equal", "horizontalSpacing": "None", "children": [
@@ -35,6 +35,8 @@
"title": "Способ курса",
"radioButtonType": "Auto",
"columnsCount": 1,
"itemTitleHeight": 1,
"equalItemsWidth": false,
"choiceList": [
{ "value": "Enum.СпособыКурса.EnumValue.Авто", "presentation": { "ru": "Автоматически", "en": "Automatic" } },
{ "value": "Enum.СпособыКурса.EnumValue.Ручной", "presentation": "вручную" },
@@ -10,6 +10,9 @@
<ShowCloseButton>false</ShowCloseButton>
<HorizontalAlign>Left</HorizontalAlign>
<ChildrenAlign>ItemsLeftTitlesLeft</ChildrenAlign>
<ChildItemsWidth>Equal</ChildItemsWidth>
<VerticalAlign>Top</VerticalAlign>
<HorizontalSpacing>Double</HorizontalSpacing>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<Autofill>false</Autofill>
</AutoCommandBar>
@@ -65,6 +65,8 @@
</xr:Value>
</xr:Item>
</ChoiceList>
<EqualItemsWidth>false</EqualItemsWidth>
<ItemTitleHeight>1</ItemTitleHeight>
<ContextMenu name="СпособКурсаКонтекстноеМеню" id="2"/>
<ExtendedTooltip name="СпособКурсаРасширеннаяПодсказка" id="3"/>
</RadioButtonField>