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

Генерация экранных форм на основе класса модели данных

Для ускорения разработки приложения вы можете сгенерировать типовые экранные формы на основе классов модели данных. На основе каждого класса вы можете сгенерировать пару экранных форм: табличную экранную форму — для отображения данных экземпляров класса и карточную экранную форму — для просмотра, создания, редактирования и удаления данных экземпляра класса. Генерация пары экранных форм этих типов позволяет реализовать интерфейс для выполнения CRUD-операций с данными в базе данных, например, для работы со справочниками в разрабатываемом приложении. Типы компонентов на сгенерированных экранных формах соответствуют типам атрибутов класса модели данных.

Соответствие типов атрибутов класса типам компонентов экранных форм показано в следующей таблице.

Тип атрибута классаКомпонент экранной формы
integerInput с возможностью ввода чисел
enumSelect с вариантами согласно значениям enum
dateTimeCalendar с форматом ввода согласно параметрам, указанным для атрибута dateTime
booleanCheckbox

В дальнейшем вы сможете изменить сгенерированные экранные формы, чтобы они максимально соответствовали макетам и бизнес-требованиям к разрабатываемому приложению.

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

  • В папке containers создается папка с именем, соответствующим псевдониму класса, на основе которого генерируются экранные формы. Если папка с таким именем уже существует, новая папка получает имя согласно следующему шаблону: <псевдоним класса>_<индекс>, например, Book_1. В папке создаются файлы описания экранных форм со следующими именами:

    • <имя папки>page.mdcontainer: описывает табличную экранную форму типа Page.
    • <имя папки>form.mdcontainer: описывает карточную экранную форму типа PartView.
  • В файле Actions.mdschema создает действия типа GraphQL для выполнения следующих операций с данными класса:

    • Get<псевдоним класса>_<идентификатор>: получение данных класса;
    • Create<псевдоним класса>_<идентификатор>: создание экземпляра класса;
    • Update<псевдоним класса>_<идентификатор>: изменение данных экземпляра класса;
    • Delete<псевдоним класса>_<идентификатор>: удаление экземпляра класса.
  • Для экранной формы <имя папки>page.mdcontainer создается источник данных с именем Get<псевдоним класса>. В параметрах этого источника данных на вкладке Общие указано действие Get<псевдоним класса>_<идентификатор>, а на вкладке События указаны следующие действия:

    • Create<псевдоним класса>_<идентификатор>;
    • Update<псевдоним класса>_<идентификатор>;
    • Delete<псевдоним класса>_<идентификатор>.
  • На экранной форме <имя папки>page.mdcontainer в обработчик события OnRowClick() компонента DataGrid записывается код, реализующий логику вызова экранной формы <имя папки>form.mdcontainer.

  • На экранной форме <имя папки>form.mdcontainer в обработчик события OnClick() компонента Button записывается код, реализующий создание, изменение и удаление экземпляра класса.

  • Если класс связан с другим классом связью многие-к-одному, на карточной экранной форме создается компонент Select. В разрабатываемом приложении в качестве значений вариантов раскрывающегося списка используются значения атрибута Name связанного класса. Если значения значения атрибута Name связанного класса не определены, используются значения первого по порядку атрибута типа String связанного класса или значения атрибута ID связанного класса.

    Например, в приложении Библиотека определены классы Book и Author, между которыми установлена связь многие-к-одному: многие экземпляры класса Book связаны с одним экземпляром класса Author. В результате генерации экранных форм на основе класса Book на карточной экранной форме будет отображаться раскрывающийся список, в котором можно будет выбрать имя автора книги при условии, что данные об авторе были ранее введены в базу данных.

Чтобы сгенерировать экранные формы для класса модели данных:

  1. В проекте выберите файл DataModel.mdmodel.

  2. На боковой панели нажмите значок UG_settings_icon.png и выберите раздел Классы.

  3. Выберите класс, для которого вы хотите сгенерировать экранные формы.

  4. Справа от имени класса нажмите значок UG_generate_form_icon.png (Сгенерировать экранные формы).

    DevTools генерирует экранные формы. В папке containers отображается новая папка с файлами сгенерированных экранных форм.

    В файл Actions.mdschema добавляются описания действий типа GraphQL для получения, создания, изменения и удаления данных класса.

    Для экранной формы <имя папки>page.mdcontainer создается источник данных.

    В код обработчиков событий для компонентов экранных форм записываются фрагменты кода, реализующие логику перехода из табличной формы к карточной форме, а также логику создания, изменения и удаления данных.

Теперь вы можете перейти к изменению сгенерированных экранных форм, например, изменить CSS-стили компонентов, или оставить экранные формы без изменений, если они соответствуют вашим ожиданиям относительно дизайна и выполняемых функций.