Skip to content

[NEW] Контекстные меню (<ContextMenu>) не попадают в элементы формы #675

Description

@sfaqer

Описание функциональности

Выделено из #657 по просьбе @theshadowco: в #674 сделано всё, кроме контекстного меню.

<ContextMenu> — единственный из перечисленных в #657 соседей <ChildItems>, который остаётся не прочитанным. Тег стоит почти у каждого элемента формы: конфигуратор добавляет его автоматически полю ввода, таблице, группе. На форме документа из пяти полей и одной таблицы в выгрузке уже шесть таких тегов:

<InputField name="Номер" id="1">
  <DataPath>Объект.Number</DataPath>
  <ContextMenu name="НомерКонтекстноеМеню" id="2"/>
  <ExtendedTooltip name="НомерРасширеннаяПодсказка" id="3"/>
</InputField>
<Table name="ТабличнаяЧасть1" id="16">
  <ContextMenu name="ТабличнаяЧасть1КонтекстноеМеню" id="17"/>
  …
</Table>

Отдельно от #657 есть и вторая половина задачи: в FormElementType нет константы под этот вид. Для дополнений они были заведены заранее (ADDITION, SEARCH_STRING_ADDITION, VIEW_STATUS_ADDITION, SEARCH_CONTROL_ADDITION), а для контекстного меню — нет; ближайший по смыслу POPUP («Подменю») это другой вид, подменю внутри командной панели.

Что хотелось бы получить

  1. Чтобы <ContextMenu> попадал в getItems()/getPlainItems() наравне с содержимым <ChildItems> — вместе со своими <ChildItems>, если они есть (для <AutoCommandBar> потеря содержимого вместе с веткой была показана экспериментом в [NEW] Контекстные меню, подсказки, командные панели и дополнения не попадают в элементы формы #657).
  2. Новую константу FormElementType под этот вид.

Зачем

На рантайме контекстное меню — полноценный элемент коллекции Форма.Элементы, доступный по имени: Элементы.НомерКонтекстноеМеню. Пока элемент не читается, потребители модели его не видят, и обращение к нему в коде выглядит как обращение к несуществующему элементу формы.

Потребитель — BSL Language Server: элементы формы из mdclasses становятся членами типа формы (Элементы.<Имя>), и от полноты этого списка зависит и автодополнение, и диагностика обращений к несуществующим элементам.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions