feat(form-decompile,form-compile): батч скаляров (IncompleteChoiceMode/EqualColumnsWidth/ChildrenAlign/ImageScale/Zoomable/Shape/PictureLocation) + форменные ShowCloseButton/HorizontalAlign/ChildrenAlign/ShowTitle + PictureDecoration NonselectedPictureText + ShowTitle factual

Из топа list-iter2 (формы из корпуса):
- Generic-скаляры (input/radio/group/picDecoration/button через Emit-Layout): IncompleteChoiceMode,
  EqualColumnsWidth(bool), ChildrenAlign, ImageScale, Zoomable(bool), Shape, PictureLocation.
- Форменные свойства → KNOWN_FORM_PROPS (декомпилятор) + авто-PascalCase Emit-Properties:
  ShowCloseButton, HorizontalAlign, ChildrenAlign, ShowTitle.
- PictureDecoration NonselectedPictureText (ML, как у picField; после Title).
- ShowTitle factual у UsualGroup/Page/ColumnGroup — раньше ловили/эмитили только false,
  явный <ShowTitle>true> терялся (8989 в корпусе); теперь true/false при наличии.

⚠️ Table HeaderHeight/FooterHeight/CurrentRowUse НЕ добавлены: строгий Table-XSD требует точной
позиции тегов (Representation→…→HeaderHeight→Footer→…→CurrentRowUse→RowFilter), generic-позиция
ломает загрузку (XDTO exception) — отдельная задача по позициям в Emit-Table.

Зеркало py. Выборка 82 формы: 0 корневых утечек батч-тегов (остаток — CFE-форма с потерянным
контейнером расширения, не связано). Кейсы table/radio-tumbler-strings/groups/element-appearance/
input-fields расширены и сертифицированы в 1С (явный ShowTitle=true, форменные props, picDecoration
NPT, button Shape/PictureLocation). Регресс 43/43 (ps1+py).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-06-11 22:09:32 +03:00
parent 330447c95f
commit 6e4fdb443a
12 changed files with 78 additions and 18 deletions
@@ -31,6 +31,7 @@
"font": "style:NormalTextFont",
"border": "style:ControlBorder" },
{ "button": "ОК", "title": "ОК",
"shape": "Oval", "pictureLocation": "Right",
"backColor": "web:Honeydew",
"borderColor": "style:BorderColor",
"font": "style:NormalTextFont" },
@@ -38,6 +39,7 @@
{ "input": "Цена2", "path": "Объект.Цена", "textColor": "web:DimGray" }
]},
{ "picture": "Логотип", "src": "StdPicture.Print",
"imageScale": 150, "zoomable": true, "nonselectedPictureText": "Нет изображения",
"textColor": "web:FireBrick", "font": "style:NormalTextFont",
"border": { "width": 1, "style": "Single" } }
]
+2 -1
View File
@@ -15,9 +15,10 @@
"validatePath": "DataProcessors/СГруппами/Forms/Форма/Ext/Form.xml",
"input": {
"title": "Группы",
"properties": { "showCloseButton": false, "horizontalAlign": "Left", "childrenAlign": "ItemsLeftTitlesLeft" },
"elements": [
{ "cmdBar": "КоманднаяПанель", "autofill": true },
{ "group": "horizontal", "name": "ГруппаШапка", "behavior": "usual", "showTitle": true, "title": "Шапка", "shortcut": "Ctrl+G", "horizontalStretch": true, "groupHorizontalAlign": "Right", "throughAlign": "Use", "verticalAlign": "Top", "childItemsWidth": "Equal", "horizontalSpacing": "None", "children": [
{ "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": [
{ "input": "Поле1", "path": "Поле1", "title": "Поле 1", "width": 20, "skipOnInput": true, "mask": "999-999" },
{ "input": "Поле2", "path": "Поле2", "title": "Поле 2" },
{ "labelField": "Метка", "path": "Поле1", "groupVerticalAlign": "Center" }
@@ -21,7 +21,7 @@
{ "input": "МногострочноеПоле", "path": "МногострочноеПоле", "multiLine": true, "height": 5, "title": "Комментарий", "wrap": false, "showInHeader": false, "showInFooter": false, "autoCellHeight": true, "footerHorizontalAlign": "Right", "openButton": false, "chooseType": false },
{ "input": "ПолеПароля", "path": "ПолеПароля", "passwordMode": true, "title": "Пароль" },
{ "input": "ЧисловоеПоле", "path": "ЧисловоеПоле", "title": "Число", "minValue": 1, "maxValue": 100, "displayImportance": "VeryHigh" },
{ "input": "ПолеСКнопками", "path": "ПолеСКнопками", "choiceButton": true, "clearButton": true, "dropListButton": false, "spinButton": true, "choiceListButton": true, "quickChoice": false, "autoChoiceIncomplete": true, "choiceHistoryOnInput": "DontUse", "choiceForm": "DataProcessor.ПоляВвода.Form.Форма", "title": "Выбор" },
{ "input": "ПолеСКнопками", "path": "ПолеСКнопками", "choiceButton": true, "clearButton": true, "dropListButton": false, "spinButton": true, "choiceListButton": true, "quickChoice": false, "autoChoiceIncomplete": true, "incompleteChoiceMode": "OnActivate", "choiceHistoryOnInput": "DontUse", "choiceForm": "DataProcessor.ПоляВвода.Form.Форма", "title": "Выбор" },
{ "input": "ПолеСписокВыбора", "path": "ПолеСписокВыбора", "title": "Список выбора", "choiceList": [
{ "value": "", "presentation": "Все" },
{ "value": "Первый" },
@@ -35,6 +35,8 @@
},
{
"radio": "ВидСчета",
"equalColumnsWidth": true,
"columnsCount": 1,
"choiceList": [
{ "value": "Active", "valueType": "ent:AccountType", "presentation": "Активный" },
{ "value": "Passive", "valueType": "ent:AccountType", "presentation": "Пассивный" },
@@ -51,6 +51,8 @@
<v8:content>ОК</v8:content>
</v8:item>
</Title>
<Shape>Oval</Shape>
<PictureLocation>Right</PictureLocation>
<BackColor>web:Honeydew</BackColor>
<BorderColor>style:BorderColor</BorderColor>
<Font ref="style:NormalTextFont" kind="StyleItem"/>
@@ -69,10 +71,18 @@
</ChildItems>
</UsualGroup>
<PictureDecoration name="Логотип" id="17">
<NonselectedPictureText>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Нет изображения</v8:content>
</v8:item>
</NonselectedPictureText>
<Picture>
<xr:Ref>StdPicture.Print</xr:Ref>
<xr:LoadTransparent>false</xr:LoadTransparent>
</Picture>
<ImageScale>150</ImageScale>
<Zoomable>true</Zoomable>
<TextColor>web:FireBrick</TextColor>
<Font ref="style:NormalTextFont" kind="StyleItem"/>
<Border width="1">
@@ -7,6 +7,9 @@
</v8:item>
</Title>
<AutoTitle>false</AutoTitle>
<ShowCloseButton>false</ShowCloseButton>
<HorizontalAlign>Left</HorizontalAlign>
<ChildrenAlign>ItemsLeftTitlesLeft</ChildrenAlign>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<Autofill>false</Autofill>
</AutoCommandBar>
@@ -24,6 +27,7 @@
</Title>
<Group>Horizontal</Group>
<Behavior>Usual</Behavior>
<ShowTitle>true</ShowTitle>
<HorizontalStretch>true</HorizontalStretch>
<GroupHorizontalAlign>Right</GroupHorizontalAlign>
<VerticalAlign>Top</VerticalAlign>
@@ -31,6 +35,7 @@
<ChildItemsWidth>Equal</ChildItemsWidth>
<HorizontalSpacing>None</HorizontalSpacing>
<Shortcut>Ctrl+G</Shortcut>
<ChildrenAlign>ItemsRightTitlesLeft</ChildrenAlign>
<ExtendedTooltip name="ГруппаШапкаРасширеннаяПодсказка" id="4"/>
<ChildItems>
<InputField name="Поле1" id="5">
@@ -143,6 +143,7 @@
<AutoChoiceIncomplete>true</AutoChoiceIncomplete>
<ChoiceForm>DataProcessor.ПоляВвода.Form.Форма</ChoiceForm>
<ChoiceHistoryOnInput>DontUse</ChoiceHistoryOnInput>
<IncompleteChoiceMode>OnActivate</IncompleteChoiceMode>
<ContextMenu name="ПолеСКнопкамиКонтекстноеМеню" id="17"/>
<ExtendedTooltip name="ПолеСКнопкамиРасширеннаяПодсказка" id="18"/>
</InputField>
@@ -60,6 +60,7 @@
</Title>
<TitleLocation>None</TitleLocation>
<RadioButtonType>Auto</RadioButtonType>
<ColumnsCount>1</ColumnsCount>
<ChoiceList>
<xr:Item>
<xr:Presentation/>
@@ -101,6 +102,7 @@
</xr:Value>
</xr:Item>
</ChoiceList>
<EqualColumnsWidth>true</EqualColumnsWidth>
<ContextMenu name="ВидСчетаКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="ВидСчетаРасширеннаяПодсказка" id="6"/>
</RadioButtonField>