feat(form-decompile,form-compile): дополнения командной панели таблицы (Search/ViewStatus/SearchControl)

Дополнения встроенного поиска таблицы как тип-элементы — обе позиции:

(1) Кастомные (в AutoCommandBar/ChildItems) → элементы в commandBar:
    { "searchString": "Имя", "source": "Список", "width": 15, ... }
    Полный набор свойств поля (Emit-Layout/Appearance/CommonFlags/tooltip);
    source дефолт = родительская таблица; horizontalLocation auto/left/right.

(2) Стандартные (авто-генерация на уровне таблицы) → per-table карта
    отклонений additions: { viewStatus: { horizontalLocation: "left" } }.

Тип-как-ключ searchString/viewStatus/searchControl, forgiving-синонимы
(XML-тег, <Type>, рус.имя, имя «Вид» из конфигуратора). Декомпилятор разводит
по позиции (ChildItems → commandBar.children; прямые дети <Table> → карта
additions, только deviations); убран из COMPANION_TAGS, +ELEMENT_KEY.

Хвост: CommandBarLocation авто-вывод для дин-список-таблицы — суппресс-маркер
"" (компилятор инжектит None, верно по корпусу 203≈213; декомпилятор инвертирует:
нет тега → "", None → опускает, иначе → захват).

Зеркало py (байт-в-байт). Синтет-фикстура (upload/epf/ДополненияКП) — perfect
round-trip LOST 0/ADDED 0. Кейс dynamic-list-form расширен (кастомное+override),
сертифицирован в 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 16:04:52 +03:00
parent 01b598ce8f
commit d06c2c49bb
6 changed files with 322 additions and 57 deletions
@@ -24,10 +24,15 @@
} }
],
"elements": [
{ "table": "Список", "path": "Список", "columns": [
{ "input": "Код", "path": "Список.Code" },
{ "input": "Наименование", "path": "Список.Description" }
]}
{ "table": "Список", "path": "Список",
"additions": { "viewStatus": { "horizontalLocation": "left" } },
"commandBar": [
{ "searchString": "ПоискСписка", "source": "Список", "width": 15, "horizontalStretch": true }
],
"columns": [
{ "input": "Код", "path": "Список.Code" },
{ "input": "Наименование", "path": "Список.Description" }
]}
]
}
}
@@ -29,49 +29,61 @@
<AllowGettingCurrentRowURL>true</AllowGettingCurrentRowURL>
<ContextMenu name="СписокКонтекстноеМеню" id="2"/>
<AutoCommandBar name="СписокКоманднаяПанель" id="3">
<Autofill>false</Autofill>
<ChildItems>
<SearchStringAddition name="ПоискСписка" id="4">
<AdditionSource>
<Item>Список</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<Width>15</Width>
<HorizontalStretch>true</HorizontalStretch>
<ContextMenu name="ПоискСпискаКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="ПоискСпискаРасширеннаяПодсказка" id="6"/>
</SearchStringAddition>
</ChildItems>
</AutoCommandBar>
<ExtendedTooltip name="СписокРасширеннаяПодсказка" id="4"/>
<SearchStringAddition name="СписокСтрокаПоиска" id="5">
<ExtendedTooltip name="СписокРасширеннаяПодсказка" id="7"/>
<SearchStringAddition name="СписокСтрокаПоиска" id="8">
<AdditionSource>
<Item>Список</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="СписокСтрокаПоискаКонтекстноеМеню" id="6"/>
<ExtendedTooltip name="СписокСтрокаПоискаРасширеннаяПодсказка" id="7"/>
<ContextMenu name="СписокСтрокаПоискаКонтекстноеМеню" id="9"/>
<ExtendedTooltip name="СписокСтрокаПоискаРасширеннаяПодсказка" id="10"/>
</SearchStringAddition>
<ViewStatusAddition name="СписокСостояниеПросмотра" id="8">
<ViewStatusAddition name="СписокСостояниеПросмотра" id="11">
<AdditionSource>
<Item>Список</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="СписокСостояниеПросмотраКонтекстноеМеню" id="9"/>
<ExtendedTooltip name="СписокСостояниеПросмотраРасширеннаяПодсказка" id="10"/>
<HorizontalLocation>Left</HorizontalLocation>
<ContextMenu name="СписокСостояниеПросмотраКонтекстноеМеню" id="12"/>
<ExtendedTooltip name="СписокСостояниеПросмотраРасширеннаяПодсказка" id="13"/>
</ViewStatusAddition>
<SearchControlAddition name="СписокУправлениеПоиском" id="11">
<SearchControlAddition name="СписокУправлениеПоиском" id="14">
<AdditionSource>
<Item>Список</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="СписокУправлениеПоискомКонтекстноеМеню" id="12"/>
<ExtendedTooltip name="СписокУправлениеПоискомРасширеннаяПодсказка" id="13"/>
<ContextMenu name="СписокУправлениеПоискомКонтекстноеМеню" id="15"/>
<ExtendedTooltip name="СписокУправлениеПоискомРасширеннаяПодсказка" id="16"/>
</SearchControlAddition>
<ChildItems>
<InputField name="Код" id="14">
<InputField name="Код" id="17">
<DataPath>Список.Code</DataPath>
<ContextMenu name="КодКонтекстноеМеню" id="15"/>
<ExtendedTooltip name="КодРасширеннаяПодсказка" id="16"/>
<ContextMenu name="КодКонтекстноеМеню" id="18"/>
<ExtendedTooltip name="КодРасширеннаяПодсказка" id="19"/>
</InputField>
<InputField name="Наименование" id="17">
<InputField name="Наименование" id="20">
<DataPath>Список.Description</DataPath>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="18"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="19"/>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="21"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="22"/>
</InputField>
</ChildItems>
</Table>
</ChildItems>
<Attributes>
<Attribute name="Список" id="20">
<Attribute name="Список" id="23">
<Type>
<v8:Type>cfg:DynamicList</v8:Type>
</Type>