feat(form-compile): авто-вид кнопки по контексту АКП

Кнопки внутри cmdBar/autoCmdBar/popup автоматически получают
CommandBarButton (или CommandBarHyperlink при type="hyperlink") —
указывать вид вручную не нужно. Резолвер прощающий: принимает и
короткие DSL-формы, и XML-имена в любом контексте.

Пример «Диалог загрузки файла» в SKILL.md и тест-кейс file-dialog
переведены на нативный паттерн с autoCmdBar вместо отдельной
горизонтальной группы кнопок внизу формы.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-05-03 19:41:43 +03:00
co-authored by Claude Opus 4.7
parent 60de083a05
commit 6c60398406
8 changed files with 125 additions and 59 deletions
@@ -10,6 +10,7 @@
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="ИзменитьВыделенные" id="1">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.ИзменитьВыделенные</CommandName>
<LocationInCommandBar>InAdditionalSubmenu</LocationInCommandBar>
<ExtendedTooltip name="ИзменитьВыделенныеРасширеннаяПодсказка" id="2"/>
@@ -14,11 +14,13 @@
<CommandBar name="Панель" id="1">
<ChildItems>
<Button name="Выполнить" id="2">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.Выполнить</CommandName>
<DefaultButton>true</DefaultButton>
<ExtendedTooltip name="ВыполнитьРасширеннаяПодсказка" id="3"/>
</Button>
<Button name="Закрыть" id="4">
<Type>CommandBarButton</Type>
<CommandName>Form.StandardCommand.Close</CommandName>
<ExtendedTooltip name="ЗакрытьРасширеннаяПодсказка" id="5"/>
</Button>
@@ -7,16 +7,30 @@
</v8:item>
</Title>
<AutoTitle>false</AutoTitle>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="Загрузить" id="1">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.Загрузить</CommandName>
<DefaultButton>true</DefaultButton>
<ExtendedTooltip name="ЗагрузитьРасширеннаяПодсказка" id="2"/>
</Button>
<Button name="Закрыть" id="3">
<Type>CommandBarButton</Type>
<CommandName>Form.StandardCommand.Close</CommandName>
<ExtendedTooltip name="ЗакрытьРасширеннаяПодсказка" id="4"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<UsualGroup name="ГруппаФайл" id="1">
<UsualGroup name="ГруппаФайл" id="5">
<Group>Horizontal</Group>
<ExtendedTooltip name="ГруппаФайлРасширеннаяПодсказка" id="2"/>
<ExtendedTooltip name="ГруппаФайлРасширеннаяПодсказка" id="6"/>
<ChildItems>
<InputField name="ИмяФайла" id="3">
<InputField name="ИмяФайла" id="7">
<DataPath>ИмяФайла</DataPath>
<Title>
<v8:item>
@@ -30,21 +44,21 @@
<v8:content>Выберите файл...</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ИмяФайлаКонтекстноеМеню" id="4"/>
<ExtendedTooltip name="ИмяФайлаРасширеннаяПодсказка" id="5"/>
<ContextMenu name="ИмяФайлаКонтекстноеМеню" id="8"/>
<ExtendedTooltip name="ИмяФайлаРасширеннаяПодсказка" id="9"/>
<Events>
<Event name="StartChoice">ИмяФайлаНачалоВыбора</Event>
</Events>
</InputField>
<CheckBoxField name="ПерваяСтрокаЗаголовок" id="6">
<CheckBoxField name="ПерваяСтрокаЗаголовок" id="10">
<DataPath>ПерваяСтрокаЗаголовок</DataPath>
<TitleLocation>Right</TitleLocation>
<ContextMenu name="ПерваяСтрокаЗаголовокКонтекстноеМеню" id="7"/>
<ExtendedTooltip name="ПерваяСтрокаЗаголовокРасширеннаяПодсказка" id="8"/>
<ContextMenu name="ПерваяСтрокаЗаголовокКонтекстноеМеню" id="11"/>
<ExtendedTooltip name="ПерваяСтрокаЗаголовокРасширеннаяПодсказка" id="12"/>
</CheckBoxField>
</ChildItems>
</UsualGroup>
<InputField name="Результат" id="9">
<InputField name="Результат" id="13">
<DataPath>Результат</DataPath>
<Title>
<v8:item>
@@ -56,33 +70,18 @@
<MultiLine>true</MultiLine>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>8</Height>
<ContextMenu name="РезультатКонтекстноеМеню" id="10"/>
<ExtendedTooltip name="РезультатРасширеннаяПодсказка" id="11"/>
<ContextMenu name="РезультатКонтекстноеМеню" id="14"/>
<ExtendedTooltip name="РезультатРасширеннаяПодсказка" id="15"/>
</InputField>
<UsualGroup name="ГруппаКнопок" id="12">
<Group>Horizontal</Group>
<ExtendedTooltip name="ГруппаКнопокРасширеннаяПодсказка" id="13"/>
<ChildItems>
<Button name="Загрузить" id="14">
<CommandName>Form.Command.Загрузить</CommandName>
<DefaultButton>true</DefaultButton>
<ExtendedTooltip name="ЗагрузитьРасширеннаяПодсказка" id="15"/>
</Button>
<Button name="Закрыть" id="16">
<CommandName>Form.StandardCommand.Close</CommandName>
<ExtendedTooltip name="ЗакрытьРасширеннаяПодсказка" id="17"/>
</Button>
</ChildItems>
</UsualGroup>
</ChildItems>
<Attributes>
<Attribute name="Объект" id="18">
<Attribute name="Объект" id="16">
<Type>
<v8:Type>cfg:DataProcessorObject.ЗагрузкаИзФайла</v8:Type>
</Type>
<MainAttribute>true</MainAttribute>
</Attribute>
<Attribute name="ИмяФайла" id="19">
<Attribute name="ИмяФайла" id="17">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
@@ -97,7 +96,7 @@
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="ПерваяСтрокаЗаголовок" id="20">
<Attribute name="ПерваяСтрокаЗаголовок" id="18">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
@@ -108,7 +107,7 @@
<v8:Type>xs:boolean</v8:Type>
</Type>
</Attribute>
<Attribute name="Результат" id="21">
<Attribute name="Результат" id="19">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
@@ -125,7 +124,7 @@
</Attribute>
</Attributes>
<Commands>
<Command name="Загрузить" id="22">
<Command name="Загрузить" id="20">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
@@ -10,6 +10,7 @@
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="Кн1" id="1">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.Кн1</CommandName>
<ExtendedTooltip name="Кн1РасширеннаяПодсказка" id="2"/>
</Button>
@@ -24,6 +25,7 @@
<CommandBar name="ДопПанель" id="6">
<ChildItems>
<Button name="Кн2" id="7">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.Кн2</CommandName>
<ExtendedTooltip name="Кн2РасширеннаяПодсказка" id="8"/>
</Button>