feat(form-decompile,form-compile): пачка простых скаляров (generic pass-through + точечные)

Generic pass-through таблица простых скаляров элемента (captured/emitted «как
есть»): verticalAlign, throughAlign, enableContentChange, pictureSize, titleHeight,
childItemsWidth, showLeftMargin, cellHyperlink, viewMode, verticalScrollBar,
rowInputMode, mask, createButton. Один Emit-GenericScalars в Emit-Layout (покрывает
все элементы) + Add-GenericScalars в пост-обработке декомпилятора (skip-if-present —
специфичная обработка побеждает).

Точечно: Command>modifiesSavedData (bool), Page>showTitle:false, фикс InputField>
textEdit (компилятор эмитил, декомпилятор не ловил).

Баг-фикс: <FillChecking> в схеме НЕТ (0 в корпусе) — реальный тег <FillCheck>
(значение ShowError). Ключ fillCheck (синоним fillChecking, forgiving bool→ShowError).

TOTAL 408→246 (−162), match 81→107. Зеркало py (байт-в-байт). Кейсы groups/commands/
attributes-types/pages сертифицированы в 1С. Регресс 39/39 ps1+py.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-06-08 19:50:42 +03:00
parent 8ac0dfefd0
commit fb3bce5811
12 changed files with 159 additions and 15 deletions
@@ -23,7 +23,7 @@
],
"attributes": [
{ "name": "Объект", "type": "DataProcessorObject.Типы", "main": true },
{ "name": "Строка", "type": "string(200)", "view": false, "save": true },
{ "name": "Строка", "type": "string(200)", "view": false, "save": true, "fillCheck": true },
{ "name": "Число", "type": "decimal(10,0,nonneg)", "edit": false },
{ "name": "Дата", "type": "dateTime", "title": "" },
{ "name": "Булево", "type": "boolean" },
@@ -27,7 +27,7 @@
{ "name": "Результат", "type": "string" }
],
"commands": [
{ "name": "Выполнить", "action": "ВыполнитьОбработка", "shortcut": "Ctrl+Enter", "use": false }
{ "name": "Выполнить", "action": "ВыполнитьОбработка", "shortcut": "Ctrl+Enter", "use": false, "modifiesSavedData": true }
]
}
}
+3 -3
View File
@@ -17,12 +17,12 @@
"title": "Группы",
"elements": [
{ "cmdBar": "КоманднаяПанель", "autofill": true },
{ "group": "horizontal", "name": "ГруппаШапка", "behavior": "usual", "showTitle": true, "title": "Шапка", "horizontalStretch": true, "groupHorizontalAlign": "Right", "children": [
{ "input": "Поле1", "path": "Поле1", "title": "Поле 1", "width": 20, "skipOnInput": true },
{ "group": "horizontal", "name": "ГруппаШапка", "behavior": "usual", "showTitle": true, "title": "Шапка", "horizontalStretch": true, "groupHorizontalAlign": "Right", "throughAlign": "Use", "verticalAlign": "Top", "childItemsWidth": "Equal", "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" }
]},
{ "group": "vertical", "name": "ГруппаПодвал", "behavior": "collapsible", "collapsed": true, "title": { "ru": "Подвал", "en": "Footer" }, "children": [
{ "group": "vertical", "name": "ГруппаПодвал", "behavior": "collapsible", "collapsed": true, "title": { "ru": "Подвал", "en": "Footer" }, "showLeftMargin": false, "enableContentChange": false, "children": [
{ "input": "Поле3", "path": "Поле3", "title": "Поле 3" }
]}
],
+1 -1
View File
@@ -18,7 +18,7 @@
"properties": { "autoTitle": false },
"elements": [
{ "pages": "СтраницыМастера", "pagesRepresentation": "None", "tooltip": "Страницы мастера настройки", "children": [
{ "page": "Шаг1", "title": "", "children": [
{ "page": "Шаг1", "title": "", "showTitle": false, "children": [
{ "input": "Параметр1", "path": "Параметр1" }
]},
{ "page": "Шаг2", "title": "Результат", "tooltip": "Шаг \"Результат\"", "group": "horizontal", "children": [
@@ -60,6 +60,7 @@
<Save>
<Field>Строка</Field>
</Save>
<FillCheck>ShowError</FillCheck>
</Attribute>
<Attribute name="Число" id="15">
<Title>
@@ -73,6 +73,7 @@
<xr:Common>false</xr:Common>
</Use>
<Action>ВыполнитьОбработка</Action>
<ModifiesSavedData>true</ModifiesSavedData>
<Shortcut>Ctrl+Enter</Shortcut>
</Command>
</Commands>
@@ -26,6 +26,9 @@
<Behavior>Usual</Behavior>
<HorizontalStretch>true</HorizontalStretch>
<GroupHorizontalAlign>Right</GroupHorizontalAlign>
<VerticalAlign>Top</VerticalAlign>
<ThroughAlign>Use</ThroughAlign>
<ChildItemsWidth>Equal</ChildItemsWidth>
<ExtendedTooltip name="ГруппаШапкаРасширеннаяПодсказка" id="4"/>
<ChildItems>
<InputField name="Поле1" id="5">
@@ -38,6 +41,7 @@
</Title>
<SkipOnInput>true</SkipOnInput>
<Width>20</Width>
<Mask>999-999</Mask>
<ContextMenu name="Поле1КонтекстноеМеню" id="6"/>
<ExtendedTooltip name="Поле1РасширеннаяПодсказка" id="7"/>
</InputField>
@@ -74,6 +78,8 @@
<Group>Vertical</Group>
<Behavior>Collapsible</Behavior>
<Collapsed>true</Collapsed>
<EnableContentChange>false</EnableContentChange>
<ShowLeftMargin>false</ShowLeftMargin>
<ExtendedTooltip name="ГруппаПодвалРасширеннаяПодсказка" id="15"/>
<ChildItems>
<InputField name="Поле3" id="16">
@@ -20,6 +20,7 @@
<ExtendedTooltip name="СтраницыМастераРасширеннаяПодсказка" id="2"/>
<ChildItems>
<Page name="Шаг1" id="3">
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="Шаг1РасширеннаяПодсказка" id="4"/>
<ChildItems>
<InputField name="Параметр1" id="5">