Атрибут типа «Список значений». Вычисление значения по справочнику
Введение
Здесь представлен способ вычисления значения атрибута типа «Список значений» по справочнику из связанного шаблона.
См. также подробное описание и другие примеры использования атрибута типа «Список значений».
Структура атрибута типа «Список значений»
- Атрибут типа «Список значений» хранит ID значения, выбранного из предварительно заданного списка.
- Список возможных значений настраивается в свойствах атрибута и не может быть изменён при выполнении приложения.
- Каждое возможное значение содержит:
- Системное имя значения.
- Отображаемые названия на русском, английском и немецком языках (достаточно указать название на одном языке).
- Цвет — числовой код в десятичном формате. Для поиска кодов цветов и их преобразования из шестнадцатеричной в десятичную форму можно воспользоваться, например, сайтом https://convertingcolors.com/.
- Значок — строка с кодом FontAwesome. Для поиска кодов значков можно воспользоваться встроенной галереей значков или сайтом https://fontawesome.com/.
Получение данных из атрибута типа «Список значений» с помощью формулы
С помощью формулы для атрибута типа «Список значений» можно получить:
-
ID текущего значения атрибута:
$EnumAttributeSystemName—>cmw.variantName
-
системное имя значения атрибута:
$EnumAttributeSystemName—>cmw.variantAlias
-
код значка значения атрибута:
$EnumAttributeSystemName—>cmw.variantIcon
-
цвет значения атрибута в десятичном формате:
$EnumAttributeSystemName—>cmw.color
Сравнение и фильтрация значения атрибута с помощью формулы
С помощью формулы сравнить значение атрибута типа «Список значений» с требуемым можно по системному имени значения следующими способами:
-
равенство
$EnumAttributeSystemName == EnumValueSystemName
или
EQUALS($EnumAttributeSystemName->cmw.variantAlias, "EnumValueSystemName")
или
EQUALS($EnumAttributeSystemName, ENUMVALUE("EnumAttributeSystemName", "EnumValueSystemName"))
-
неравенство
$EnumAttributeSystemName !== EnumValueSystemName
или
NOT(EQUALS($EnumAttributeSystemName->cmw.variantAlias, "EnumValueSystemName"))
или
NOT(EQUALS($EnumAttributeSystemName, ENUMVALUE("EnumAttributeSystemName", "EnumValueSystemName")))
Прикладная задача
Требуется настроить простейшую форму заказа транспортных услуг со следующей бизнес-логикой:
-
Заказчик создаёт заявку на перевозку и выбирает её тип:
- автобусная перевозка;
- грузоперевозка;
- перевозка на легковом автомобиле;
- перевозка на микроавтобусе.
-
На форме заявки и в списке заявок должен автоматически отображаться подходящий для выполнения заявки тип транспортного средства с цветовой маркировкой и соответствующим значком.
Исходные данные
Для выполнения примера создайте указанные в следующей таблице шаблоны и атрибуты.
Шаблон записи | Название / системное имя атрибута | Тип атрибута | Описание |
---|---|---|---|
Типы заявок | Наименование типа заявки / Наименованиетипазаявки |
Текст | Атрибут «Наименование типа заявки» содержит наглядное название типа заявки. |
Код типа заявки / Кодтипазаявки |
Текст | Атрибут «Код типа заявки» содержит условное обозначение типа заявки. | |
Заявки | Тип заявки / Типзаявки |
Запись | Атрибут «Тип заявки» связан с шаблоном «Типы заявок». |
Настройка приложения
-
В шаблоне «Типы заявок» создайте четыре записи:
Наименование типа заявки Код типа заявки Автобусная перевозка bus Грузоперевозка truck Перевозка на микроавтобусе van Перевозка на легковом автомобиле passengerCar -
Поместите на форму и в таблицу шаблона «Заявки» атрибут «Тип заявки».
-
Создайте и поместите на форму и в таблицу шаблона «Заявки» атрибут «Тип транспортного средства»:
- Тип данных: Список значений
- Формат отображения:Бейдж
- Вычислять автоматически: флажок установлен
- Вычисляемое значение: формула
ENUMVALUE("VehicleType",$Типзаявки->Кодтипазаявки)
Синтаксис формулы
ENUMVALUE(enumAttributeSystemName, enumValueSystemName)
— эта функция принимает два аргумента: системное имя атрибута типа «Список значений» и системное имя одного из значений этого атрибута, и возвращает ID указанного значения.ENUMVALUE("VehicleType",$Типзаявки->Кодтипазаявки)
— возвращает строку с ID значения атрибутаVehicleType
, соответствующего значению атрибутаКодтипазаявки
из записи шаблона «Типы заявок», на которую ссылается атрибутТипзаявки
.- Данная формула присваивает атрибуту «Тип транспортного средства» значение, соответствующее из справочника типов заявок
- Список значений:
Системное имя RU Цвет Значок bus
Автобус #ff0000
bus passengerCar
Легковой автомобиль #0000ff
car truck
Грузовик #00ff00
truck van
Микроавтобус #ffff00
van-shuttle Важно!
Системные имена значений атрибута должны совпадать со значениями атрибута «Код типа заявки» в ранее созданных записях шаблона «Типы заявок»:
bus
,passengerCar
,truck
,van
Тестирование
- Создайте запись в шаблоне «Заявки».
- На форме заявки выберите любой тип заявки.
-
В поле «Тип транспортного средства» должны автоматически отображаться соответствующие значения.
Автоматическое вычисление значения атрибута типа «Список значений» по значению атрибута из справочника -
Откройте таблицу с записями шаблона «Заявки».
-
Столбец «Тип транспортного средства» должен выглядеть как показано на иллюстрации.
Представление атрибута типа «Список значений» в таблице
Связанные статьи
- Атрибут типа «Список значений»
- Атрибут типа «Запись»
- Атрибут типа «Список значений». Вычисление текущего значения
- Атрибут типа «Список значений». Вычисление значения по справочнику
- Атрибут типа «Список значений». Фильтрация связанных записей по значению атрибута с помощью N3
- Атрибут типа «Список значений». Вычисление значения с помощью N3 и формул