Перейти к основному содержимому

Структура файла описания экранной формы

Файл описания экранной формы имеет следующую структуру:

  • На первом уровне расположен элемент Container.

    В качестве атрибутов элемента Container используются следующие:

    • Name (обязательный атрибут): определяет имя экранной формы.
    • ContainerType (обязательный атрибут): определяет тип экранной формы — Page или PartView. В системном проекте определен тип экранной формы MasterPage.
    • Commands (необязательный атрибут): описывает действия, которые применимы к экранной форме и присутствуют на схеме переходов между экранными формами.
    • Scripts (необязательный атрибут): описывает скрипты, реализующие логику работы экранной формы.

    Следующий фрагмент кода демонстрирует установку значений переменных состояния editableItem, currentTab, editableItemBook экранной формы MainPage.

    <Container Name="MainPage" ContainerType="Page" Commands={[]} Scripts={[editableItemBook
    async () => {
    setState({editableItem: null, currentTab: 1, : null,});
    }
    ]}>

    В скриптах могут использоваться методы JS-библиотеки FrontendCore.

    • DataSources (необязательный атрибут): описывает источники данных, определенные для компонентов экранной формы.

    Следующий пример демонстрирует фрагмент кода экранной формы с атрибутом DataSources:

     DataSources={[
    {
    name: "Source1",
    load: {
    actionAlias: "Action_2",
    type: "rest",
    preProcess: {
    map: [
    {
    children: [
    { key: "skip", path: ["skip"] },
    { key: "take", path: ["take"] },
    { key: "orderParam", path: ["orderParam"] },
    { key: "genreParam", path: ["genreParam"] },
    ],
    },
    ],
    },
    },
    subscribe: {},
    },
    ]}
    • Sid (необязательный атрибут): определяет уникальный идентификатор экранной формы.

    • CombineConfig (необязательный атрибут): описывает переменные состояния экранной формы.

    • Meta (необязательный атрибут): определяет параметры именованного набора метаданных, на основании которого сгенерирована экранная форма. Актуален для экранной формы типа фрагмент.

      примечание

      Значение, присвоенное этому атрибуту при генерации экранной формы, запрещено изменять.

  • На втором уровне расположен только один элемент.

    Созданный по встроенному в DevTools шаблону файл с расширением mdcontainer включает на втором уровне компонент Group.

    Следующий пример демонстрирует структуру файла *.mdcontainer, на втором уровне которого расположен компонент Dialog:

    <Container
    Name="BooksDialog"
    ContainerType="PartView"
    >
    <Dialog Text={(typeForm = typeForm) => typeForm === "add" ? getLocalization("library.addBook") :
    getLocalization("library.editAuthor")} ExtraCloseButton={true} Model-var="editableItemBook" Flayouts="Right">
    ...
    ...
    </Dialog>
    </Container>
  • Компоненты экранной формы описываются тегами, вложенными в тег второго уровня. Кроме тегов с описанием компонентов, код файла с расширением mdcontainer может содержать теги с именами фрагментов экранных форм, для которых ContainerType="PartView".

    Следующий фрагмент кода демонстрирует использование в коде описания экранной формы тегов с именами фрагментов экранных форм — BooksDialog, AuthorsDialog, DeleteDialog:

    <Container Name="MainPage" ContainerType="Page" Commands={[]} Scripts={[
    async () => {
    setState({editableItem: null, currentTab: 1, editableItemBook: null,});
    }
    ]}>
    <Group CSS={["py-16", "px-24", "mb-16"]} Mode="Column">
    ...
    ...
    <BooksDialog/>
    <AuthorsDialog/>
    <DeleteDialog/>
    </Group>
    </Container>;