feat(form-decompile,form-compile): InputField choice-скаляры verbatim + Button Check + FixingInTable + слой рус.синонимов ключей

Раундтрип TOTAL 121→86 (−35), match 114→124.

- InputField choice-кнопки: захват/эмит «как есть» (ChoiceButton/ClearButton/
  DropListButton/SpinButton эмитились только при true, теряя явный false;
  ChoiceButton=true сидел под лишним StartChoice-гейтом). Убран дефолт
  choiceButton=true у ref-полей в from-object — вывод не изменился.
- Новые InputField-скаляры: choiceListButton/quickChoice/autoChoiceIncomplete
  (bool), choiceForm/choiceHistoryOnInput/choiceFoldersAndItems/footerDataPath (value).
- Button checked → <Check>true</Check> (пометка toggle-кнопки). Ключ checked,
  не check (check — тип-ключ CheckBoxField, был бы конфликт диспетчера типов).
- fixingInTable — в generic-скаляры (input/labelField/колонки).
- Общий слой русских синонимов ключей-свойств ($propSynonyms/PROP_SYNONYMS):
  Пометка/Заголовок/Ширина/КнопкаВыбора/ФормаВыбора/… → канон. Нормализация
  в Emit-Element рядом с тип-синонимами; case/space-insensitive; англ. побеждает.

Зеркало py (контент байт-в-байт). Кейсы input-fields/table/synonyms расширены
и сертифицированы загрузкой в 1С. Регресс 39/39 зелёный в обоих рантаймах.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-06-08 22:34:15 +03:00
parent 4a68a977dc
commit 7882c1cc2b
10 changed files with 166 additions and 40 deletions
@@ -20,7 +20,7 @@
{ "labelField": "Ссылка", "path": "ОбычноеПоле", "titleLocation": "left", "hyperlink": true, "format": { "ru": "ДЛФ=D", "en": "DLF=D" } },
{ "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": "ПолеСКнопками", "choiceButton": true, "clearButton": true, "title": "Выбор" },
{ "input": "ПолеСКнопками", "path": "ПолеСКнопками", "choiceButton": true, "clearButton": true, "dropListButton": false, "spinButton": true, "choiceListButton": true, "quickChoice": false, "autoChoiceIncomplete": true, "choiceHistoryOnInput": "DontUse", "choiceForm": "DataProcessor.ПоляВвода.Form.Форма", "title": "Выбор" },
{ "input": "ПолеСписокВыбора", "path": "ПолеСписокВыбора", "title": "Список выбора", "choiceList": [
{ "value": "", "presentation": "Все" },
{ "value": "Первый" },
@@ -109,7 +109,15 @@
<v8:content>Выбор</v8:content>
</v8:item>
</Title>
<ChoiceButton>true</ChoiceButton>
<ClearButton>true</ClearButton>
<SpinButton>true</SpinButton>
<DropListButton>false</DropListButton>
<ChoiceListButton>true</ChoiceListButton>
<QuickChoice>false</QuickChoice>
<AutoChoiceIncomplete>true</AutoChoiceIncomplete>
<ChoiceForm>DataProcessor.ПоляВвода.Form.Форма</ChoiceForm>
<ChoiceHistoryOnInput>DontUse</ChoiceHistoryOnInput>
<ContextMenu name="ПолеСКнопкамиКонтекстноеМеню" id="14"/>
<ExtendedTooltip name="ПолеСКнопкамиРасширеннаяПодсказка" id="15"/>
</InputField>
@@ -19,6 +19,9 @@
<ChildItems>
<InputField name="Поле" id="3">
<DataPath>Поле</DataPath>
<ChoiceButton>true</ChoiceButton>
<QuickChoice>false</QuickChoice>
<Width>15</Width>
<ContextMenu name="ПолеКонтекстноеМеню" id="4"/>
<ExtendedTooltip name="ПолеРасширеннаяПодсказка" id="5"/>
</InputField>
@@ -28,6 +31,7 @@
<Button name="Кн2" id="8">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.Кн2</CommandName>
<Check>true</Check>
<ExtendedTooltip name="Кн2РасширеннаяПодсказка" id="9"/>
</Button>
</ChildItems>
@@ -41,6 +41,7 @@
<Button name="ПанельОбновить" id="8">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.Обновить</CommandName>
<Check>true</Check>
<ExtendedTooltip name="ПанельОбновитьРасширеннаяПодсказка" id="9"/>
</Button>
</ChildItems>
@@ -73,6 +74,7 @@
<ChildItems>
<InputField name="Дата" id="20">
<DataPath>Данные.Дата</DataPath>
<FixingInTable>Left</FixingInTable>
<ContextMenu name="ДатаКонтекстноеМеню" id="21"/>
<ExtendedTooltip name="ДатаРасширеннаяПодсказка" id="22"/>
</InputField>
@@ -1,5 +1,5 @@
{
"name": "Синонимы commandBar/autoCommandBar нормализуются молча",
"name": "Синонимы commandBar/autoCommandBar + русские имена свойств нормализуются молча",
"preRun": [
{
"script": "meta-compile/scripts/meta-compile",
@@ -23,9 +23,9 @@
{ "autoCommandBar": "ФормаКоманднаяПанель", "children": [
{ "button": "Кн1", "command": "Кн1" }
]},
{ "input": "Поле", "path": "Поле" },
{ "input": "Поле", "path": "Поле", "КнопкаВыбора": true, "Быстрый выбор": false, "Ширина": 15 },
{ "commandBar": "ДопПанель", "children": [
{ "button": "Кн2", "command": "Кн2" }
{ "button": "Кн2", "command": "Кн2", "Пометка": true }
]}
],
"commands": [
+2 -2
View File
@@ -20,7 +20,7 @@
"viewStatusLocation": "None", "searchControlLocation": "None",
"excludedCommands": ["Add", "Delete", "MoveUp", "MoveDown"],
"commandBar": { "autofill": false, "children": [
{ "button": "ПанельОбновить", "command": "Обновить" }
{ "button": "ПанельОбновить", "command": "Обновить", "checked": true }
]},
"contextMenu": { "children": [
{ "buttonGroup": "МенюГруппа", "children": [
@@ -28,7 +28,7 @@
]}
]},
"columns": [
{ "input": "Дата", "path": "Данные.Дата" },
{ "input": "Дата", "path": "Данные.Дата", "fixingInTable": "Left" },
{ "input": "Сумма", "path": "Данные.Сумма" },
{ "input": "Комментарий", "path": "Данные.Комментарий" }
]}