Приступим к настройке внешнего вида списковых форм и форм редактирования. Для этого нужно отредактировать соответствующие им представления.

Настройка атрибутов представлений

Для настройки конкретных представлений и форм откроем диаграмму классов Сущности. Разберем процесс настройки на примере класса Order (Заказ). Для этого перейдем:

Order → [правая кнопка мыши] → ORM: Редактировать свойства → Представления

Представления класса Order

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

В приведенном примере мы видим два представления для класса Order (E- и L-представление). Откроем на редактирование представление для списковой формы (OrderL) (кнопка [ … ] справа от строки:

Старое L-представление класса Order

Используя стрелки [▲] и [▼], а также указывая корректные русские заголовки, придадим списку атрибутов следующий вид:

Новое L-представление класса Order

Number ‒ Номер
Status ‒ Статус
CreateDate ‒ Дата оформления 1
Manager.LastName ‒ Менеджер 2
TotalSum ‒ Стоимость заказа
PaymentDate‒ Дата оплаты
ShipmentDate ‒ Дата отгрузки

1 атрибуты наследуются от класса Document (Документ);
2 атрибут принадлежит связанному ассоциацией классу Employee (Сотрудник).

Аналогично настроим представление для формы редактирования (OrderE):

Новое E-представление класса Order


Самостоятельно настройте порядок и заголовки представлений остальных классов (в L-представлениях нужно включать только поле с названием у мастера, то есть Мастер.Name, а в E-представлениях нужно включать и мастер, и поле с названием у мастера, но при этом поле с названием у мастера делать невидимым):

OrderItem

Product.Name ‒ Товар
Amount ‒ Количество
PriceWTaxes ‒ Цена с налогом
Total Sum ‒ Сумма по позиции

Invoice

Number ‒ Номер
Status ‒ Статус
CreateDate ‒ Дата оформления
Order.Number ‒ Номер заказа (Заказ 1)
CustomerName ‒ Получатель
TotalSum ‒ Сумма заказа
TotalWeight ‒ Вес заказа (кг)
Note ‒ Примечание
ShipmentDateTime ‒ Дата и время отгрузки
ResponsiblePerson.LastName ‒ Товар выдал

InvoiceItem

Product.Name ‒ Товар
Amount ‒ Количество
Weight ‒ Вес (кг)
Price ‒ Цена
TotalSum ‒ Сумма по позиции

Storehouse

Number ‒ Номер
Address ‒ Адрес
StoreKeeper.LastName ‒ Кладовщик

StoreProduct

Product.Name ‒ Товар
Amount ‒ Количество

Product

Product code ‒ Код товара
Name ‒ Наименование
Measure ‒ Единица измерения
Description ‒ Описание
Price ‒ Цена за ед.
Weight - Вес в кг

Employee

Number ‒ Табельный номер
LastName ‒ Фамилия
FirstName ‒ Имя
MiddleName ‒ Отчество
PhoneNumber ‒ Телефон
Email ‒ Электронная почта
Position ‒ Должность

1 заголовок указан для формы редактирования.


Настройка мастеровых и детейловых атрибутов

Рассмотрим на примере класса Order (Заказ) предварительный внешний вид формы редактирования:

Order → [ПКМ] → ORM: Редактировать свойства → Представления → OrderE → [...] → Атрибуты → Просмотр

Предпросмотр формы радктирования Order

Можно заметить, что все поля, кроме таблицы Order item, имеют корректно отображаемые русские названия полей. Таким образом, требуется переименовать заголовок атрибута, соответствующего таблице. В виде таблиц на форме редактирования обычно отображаются детейловые атрибуты - для них заголовки настраиваются на отдельной вкладке.

Для того, чтобы переименовать заголовок у атрибута, являющегося детейлом, закроем предварительный просмотр и перейдем на вкладку |Детейлы|. На этой вкладке в поле “Заголовок” указываем новое значение:

Order item → Содержимое заказа

Список детейлов E-представления класса Order

Далее, нажав снова на кнопку [Просмотр], мы можем убедиться, что изменения применились, и теперь заголовок отображается корректно.

Другим требующим настройки свойством в E-представлении класса Order является поле Manager. Оно является мастеровым, поэтому на форме редактирования ему будет соответствовать компонент лукапа (lookup). Под лукапом мы понимаем компонент, позволяющий выбрать связанную запись из другого класса и записать её в указанное свойство данного класса.

Так как связанный мастеровой класс содержит в себе целый набор свойств, нужно выбрать, значение какого свойства будет выводится в лукапе для поля “Manager”, когда мы его выберем. Для этого щелкнем на поле Manager в вкладке |Атрибуты|, выберем для него тип лукапа standard и укажем свойство мастера LastName:

Настройка лукапа атрибута Manager формы редактирования Order

Теперь все мастера и детейлы для E-представления класса Order настроены. В L-представлении этого делать не требуется, т.к. лукапы и детейлы на соответствующей списковой форме не отображаются, а получение мастеровых свойств для списка мы указали через выбор атрибутов вида “Мастер.Свойство” на предыдущем шаге.


Самостоятельно настройте порядок и заголовки представлений остальных классов:

Invoice

Детейл: Invoice item → Список товаров к выдаче
Мастера:
 Order (Заказ) → Number
 ResponsiblePerson (Материально ответственное лицо) → LastName

Storehouse

Детейл: Stock product → Список товаров
Мастер: Storekeeper (Кладовщик) → LastName

InvoiceItem

Мастер: Product (Товар) → Name

OrderItem

Мастер: Product (Товар) → Name

StoreProduct

Мастер: Product (Товар) → Name


Итог

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

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

Перейти