Skip to content

[NEW] Конфигурационные основные формы (DefaultConstantsForm и родственные) в Configuration #673

Description

@sfaqer

@

Чего не хватает

Часть основных форм задаётся не у объекта метаданных, а у корня конфигурации. В designer-формате это отдельные свойства Configuration.xml:

<Configuration>
  <Properties>
    <DefaultConstantsForm>CommonForm.Константы</DefaultConstantsForm>
    <DefaultReportForm/>
    <DefaultReportVariantForm/>
    <DefaultReportSettingsForm/>
    <DefaultDynamicListSettingsForm/>
    <DefaultSearchForm/>
    <DefaultDataHistoryChangeHistoryForm/>
    <DefaultDataHistoryVersionDataForm/>
    <DefaultDataHistoryVersionDifferencesForm/>
    <DefaultCollaborationSystemUsersChoiceForm/>

Проверено

javap по mdclasses 0.20.0: у com.github._1c_syntax.bsl.mdclasses.Configuration из «default»-аксессоров есть только getDefaultLanguage() и getDefaultRunMode(). Ни одной конфигурационной основной формы не отдаётся.

Показательно, что виды этих форм в DefaultFormKind уже есть — REPORT_FORM, REPORT_VARIANT_FORM, REPORT_SETTINGS_FORM, DYNAMIC_LIST_SETTINGS_FORM, SEARCH_FORM, — то есть перечисление их знает, а источника данных под них нет: FormOwner.getDefaultFormMap() работает по объекту, а эти формы принадлежат корню.

Зачем

Расширение обычной формы выбирается по её роли у владельца: форма, назначенная основной формой элемента справочника, получает Расширение формы элемента справочника. Для форм, назначенных корнем, эта схема не работает — общая форма, назначенная основной формой констант, ничем не отличается от любой другой общей формы, и Расширение формы констант остаётся неприменённым.

То же касается основных форм отчёта, вариантов и настроек отчёта, настроек динамического списка и формы поиска: их роль известна только из корня.

Достаточно аксессоров на Configuration, возвращающих MdoReference (как getDefaultLanguage()).

Смежное: #670 (ссылка на план счетов у регистра), #671 (источник данных динамического списка).

Найдено при работе над системой типов bsl-language-server.
@

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