1. Создать схему замещающего объекта
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
-
На панели инструментов реестра раздела нажмите Добавить —> Замещающий объект (Add —> Replacing object).
-
Заполните свойства схемы.
- Код (Code) — "Order".
- Заголовок (Title) — "Заказ" ("Order").
- Родительский объект (Parent object) — выберите "Order".
-
В схему добавьте колонку.
- В контекстном меню узла Колонки (Columns) структуры объекта нажмите .
-
В выпадающем меню нажмите Число —> Деньги (Number —> Currency).
-
Заполните свойства добавляемой колонки.
- Код (Code) — "UsrBalance".
- Заголовок (Title) — "Остаток для оплаты" ("Payment balance").
- На панели инструментов дизайнера объектов нажмите Сохранить (Save), а затем Опубликовать (Publish).
2. Создать схему замещающей модели представления страницы заказа
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
-
На панели инструментов реестра раздела нажмите Добавить —> Замещающая модель представления (Add —> Replacing view model).
-
Заполните свойства схемы.
- Код (Code) — "OrderPageV2".
- Заголовок (Title) — "Страница редактирования заказа" ("Order edit page").
- Родительский объект (Parent object) — выберите "OrderPageV2".
-
Настройте расположение вычисляемого поля.
- В свойство attributes добавьте атрибут UsrBalance, в котором укажите зависимость от колонок Amount и PaymentAmount, а также метод-обработчик calculateBalance().
-
В свойстве methods реализуйте методы:
-
calculateBalance() — метод-обработчик события изменения колонок Amount и PaymentAmount. Используется для расчета значения колонки UsrBalance, которая указана в атрибуте UsrBalance.
В методе-обработчике необходимо учесть тип данных, который будет получен в результате выполнения и отображен в вычисляемом поле. Например, тип данных Дробное число (0.01) (Decimal (0.01)) предполагает число с двумя знаками после запятой. В таком случае перед записью результата в поле объекта необходимо преобразовать тип данных с помощью функции toFixed(). Исходный код примера преобразования типа данных представлен ниже.
- onEntityInitialized() — переопределяет базовый виртуальный метод. Срабатывает после выполнения инициализации схемы объекта страницы записи. В метод onEntityInitialized() добавьте вызов метода-обработчика calculateBalance(), который обеспечит расчет суммы остатка для оплаты в момент открытия страницы записи, а не только после изменений в колонках-зависимостях.
-
- В массив модификаций diff добавьте конфигурационный объект с настройками расположения вычисляемого поля.
Исходный код схемы замещающей модели представления страницы заказа представлен ниже.
- На панели инструментов дизайнера нажмите Сохранить (Save).
Результат выполнения примера
Чтобы посмотреть результат выполнения примера:
- Очистите кэш браузера.
- Обновите страницу раздела Заказы (Orders).
В результате выполнения примера на страницу заказа добавлено вычисляемое поле Остаток для оплаты (Payment balance). Значение поля — разница между суммой заказа (поле Итого (Total)) и суммой оплаты (поле Сумма оплаты (Payment amount)).