Для настройки внешнего вида списковых форм и форм редактирования необходимо отредактировать соответствующие им представления.
Настройка атрибутов представлений
Настройка конкретных представлений и форм в существующем примере будет продемонстрирована на диаграмме классов Сущности, класс Order (Заказ). Для этого необходимо открыть класс на редактирование:
Order → [правая кнопка мыши] → ORM: Редактировать свойства → Представления
Как было сказано ранее, представление - это перечень атрибутов некоторого объекта данных, который используется в операциях чтения данных из источника данных. В каждое представление могут входить не только собственные атрибуты конкретного объекта данных, но и атрибуты связанных с ним объектов данных. Кроме того, для каждого представления можно указать заголовок - он будет учитываться при генерации приложения в виде подписи к полю, которое связано с соответствующим свойством.
В приведенном примере показаны два представления для класса Order (E- и L-представление). Открыть на редактирование представление для списковой формы (OrderL) (выбрать в строке с OrderL ячейку в столбце Properties и нажать на кнопку [ … ], появившуюся справа от строки):
С помощью стрелок [▲]
и [▼]
и именования заголовков на русском языке списку атрибутов можно задать следующий вид:
Number ‒ Номер
Status ‒ Статус
CreateDate ‒ Дата оформления 1
Manager.LastName ‒ Менеджер 2
TotalSum ‒ Стоимость заказа
PaymentDate‒ Дата оплаты
ShipmentDate ‒ Дата отгрузки
1 атрибуты наследуются от класса Document (Документ);
2 атрибут принадлежит связанному ассоциацией классу Employee (Сотрудник).
Аналогично настраивается представление для формы редактирования (OrderE):
Остался видимым только атрибут Manager для отображения на форме выбранного сотрудника. Атрибут Manager.LastName был скрыт (но не убран совсем из представления!): далее он потребуется при загрузке данных для лукапа - компонента, который используется для выбора из списка значения связанного мастера (мастерового объекта данных).
У таких атрибутов заголовки лучше оставлять пустыми (чтобы было легко их отличать от видимых). Для этого в поле Заголовок добавляется символ ~ (тильда).
При копировании наименований могут возникнуть неточности, приводящие к ошибкам генерации. Рекомендуется вводить все наименования вручную.
Далее можно настроить порядок и заголовки представлений остальных классов (в 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 item, имеют корректно отображаемые русские названия полей. Таким образом, требуется переименовать заголовок атрибута, соответствующего таблице. В виде таблиц на форме редактирования обычно отображаются детейловые атрибуты - для них заголовки настраиваются на отдельной вкладке.
Для того чтобы переименовать заголовок у атрибута, являющегося детейлом, нужно закрыть предварительный просмотр и перейти на вкладку |Детейлы|
. На этой вкладке в поле “Заголовок” указать новое значение:
Order item → Содержимое заказа
Далее, нажав снова на кнопку [Просмотр]
, можно убедиться, что изменения применились, и теперь заголовок отображается корректно.
Другим требующим настройки свойством в E-представлении класса Order является поле Manager. Оно является мастеровым, поэтому на форме редактирования ему будет соответствовать компонент лукап (lookup). Под лукапом понимается компонент, позволяющий выбрать связанную запись из другого класса и записать её в указанное свойство данного класса.
Так как связанный мастеровой класс содержит в себе целый набор свойств, нужно выбрать, значение какого свойства будет выводится в лукапе для поля “Manager”, когда он будет выбран. Для этого щелкнуть на поле Manager в вкладке |Атрибуты|
, выбрать для него тип лукапа standard и указать свойство мастера LastName:
Теперь все мастера и детейлы для E-представления класса Order настроены. В L-представлении этого делать не требуется, т.к. лукапы и детейлы на соответствующей списковой форме не отображаются, а получение мастеровых свойств для списка указаны через выбор атрибутов вида “Мастер.Свойство” на предыдущем шаге.
Самостоятельно необходимо настроить порядок и заголовки представлений остальных классов:
Класс Invoice
Детейл: Invoice item → Список товаров к выдаче
Мастера
Order (Заказ) → Number
ResponsiblePerson (Материально ответственное лицо) → LastName
Класс Storehouse
Детейл: Stock product → Список товаров
Мастер: Storekeeper (Кладовщик) → LastName
Класс InvoiceItem
Мастер: Product (Товар) → Name
Класс OrderItem
Мастер: Product (Товар) → Name
Класс StoreProduct
Мастер: Product (Товар) → Name
Итог
Настройка представлений - очень важный шаг, так как он определеяет внешний вид форм и данные, которые будут подгружаться для отображения на соответствующей форме. Этому этапу всегда стоит уделять особое внимание, потому что перегенерация приложения в случае каких-то изменений не всегда является простой задачей.
При настройке представлений для списковых форм и форм редактирования обязательно нужно удостовериться, что выбраны все необходимые атрибуты для отображения или редактирования на соответствующей форме. Кроме того, необходимо помнить, что диаграммы классов - это перечень бизнес-объектов, которые используются как на бэкенде, так и на фронтенде, поэтому при изменении перечня или структуры классов на диаграммах необходимо выполнять перегенерацию как фронтенда, так и бэкенда.