1. Создать схему замещающего объекта
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
-
На панели инструментов реестра раздела нажмите Добавить —> Замещающий объект (Add —> Replacing object).
-
Заполните свойства схемы.
- Код (Code) — "Project".
- Заголовок (Title) — "Проект" ("Project").
- Родительский объект (Parent object) — выберите "Project".
-
В схему добавьте колонку.
- В контекстном меню узла Колонки (Columns) структуры объекта нажмите .
-
В выпадающем меню нажмите Справочник (Lookup).
-
Заполните свойства добавляемой колонки.
- Код (Code) — "UsrCurrency".
- Заголовок (Title) — "Валюта" ("Currency").
- Справочник (Lookup) — выберите "Currency".
-
Значение по умолчанию (Default value).
- В поле Значение по умолчанию (Default value) нажмите .
- Тип значения (Default value type) — выберите "Cистемная настройка" ("System setting").
-
Cистемная настройка (System setting) — выберите "Базовая валюта" ("Base currency", код PrimaryCurrency).
Свойства колонки представлены на рисунке ниже.
-
Аналогично добавьте колонки, которые содержат общую сумму, сумму в базовой валюте и курс валют. Свойства колонок приведены в таблице ниже.
Тип данных (Data type)
Код (Code)
Заголовок (Title)
Деньги (Currency)
"UsrAmount" "Общая сумма" ("Amount")
Деньги (Currency)
"UsrPrimaryAmount" "Сумма в базовой валюте" ("Amount, base currency")
Дробное число (0,0001) (Decimal (0.0001))
"UsrCurrencyRate" "Курс валют" ("Exchange rate")
- На панели инструментов дизайнера объектов нажмите Сохранить (Save), а затем Опубликовать (Publish).
2. Создать схему замещающей модели представления страницы проекта
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
-
На панели инструментов реестра раздела нажмите Добавить —> Замещающая модель представления (Add —> Replacing view model).
-
Заполните свойства схемы.
- Код (Code) — "ProjectPageV2".
- Заголовок (Title) — "Страница редактирования проекта" ("Project edit page").
- Родительский объект (Parent object) — выберите "ProjectPageV2".
- В объявлении класса модели представления в качестве зависимостей добавьте модули MoneyModule, MultiCurrencyEdit, MultiCurrencyEditUtilities.
-
Настройте расположение мультивалютного поля.
-
В свойство attributes добавьте атрибуты:
- UsrCurrency — валюта. Соответствует колонке UsrCurrency.
- UsrCurrencyRate — курс валюты. Соответствует колонке UsrCurrencyRate.
- UsrAmount — общая сумма. Соответствует колонке UsrAmount.
- UsrPrimaryAmount — сумма в базовой валюте. Соответствует колонке UsrPrimaryAmount.
- Currency — валюта. Соответствует колонке Currency. Это колонка, с которой взаимодействует мультивалютный модуль. В атрибуте Currency объявите виртуальную колонку, которую с помощью метода-обработчика свяжите с колонкой UsrCurrency.
- CurrencyRateList — коллекция курсов валют. Предназначен для корректной работы мультивалютного модуля.
- CurrencyButtonMenuList — коллекция для кнопки выбора валюты. Предназначен для корректной работы мультивалютного модуля.
- В свойство mixins добавьте миксин MultiCurrencyEditUtilities.
-
В свойстве methods реализуйте методы:
- onEntityInitialized() — переопределяет базовый виртуальный метод. Срабатывает после выполнения инициализации схемы объекта страницы записи.
- setCurrencyRate() — устанавливает курс валюты.
- recalculateAmount() — пересчитывает общую сумму.
- recalculatePrimaryAmount() — пересчитывает сумму в базовой валюте.
- onVirtualCurrencyChange() — метод-обработчик изменения виртуальной колонки валюты.
- В массив модификаций diff добавьте конфигурационный объект с настройками расположения мультивалютного поля.
Исходный код схемы замещающей модели представления страницы проекта представлен ниже.
-
- На панели инструментов дизайнера нажмите Сохранить (Save).
Результат выполнения примера
Чтобы посмотреть результат выполнения примера, обновите страницу раздела Проекты (Projects).
В результате выполнения примера на страницу проекта добавлено мультивалютное поле Общая сумма (Amount).
Значение поля автоматически пересчитывается после выбора валюты в выпадающем списке.