Перейти к содержанию

Атрибут типа «Список значений». Вычисление значения по справочнику

Введение

Здесь представлен способ вычисления значения атрибута типа «Список значений» по справочнику из связанного шаблона.

См. также подробное описание и другие примеры использования атрибута типа «Список значений».

Структура атрибута типа «Список значений»

  • Атрибут типа «Список значений» хранит 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"))) 

Прикладная задача

Требуется настроить простейшую форму заказа транспортных услуг со следующей бизнес-логикой:

  1. Заказчик создаёт заявку на перевозку и выбирает её тип:

    • автобусная перевозка;
    • грузоперевозка;
    • перевозка на легковом автомобиле;
    • перевозка на микроавтобусе.
  2. На форме заявки и в списке заявок должен автоматически отображаться подходящий для выполнения заявки тип транспортного средства с цветовой маркировкой и соответствующим значком.

Исходные данные

Для выполнения примера создайте указанные в следующей таблице шаблоны и атрибуты.

Шаблон записи Название / системное имя атрибута Тип атрибута Описание
Типы заявок Наименование типа заявки / Наименованиетипазаявки Текст Атрибут «Наименование типа заявки» содержит наглядное название типа заявки.
Код типа заявки / Кодтипазаявки Текст Атрибут «Код типа заявки» содержит условное обозначение типа заявки.
Заявки Тип заявки / Типзаявки Запись Атрибут «Тип заявки» связан с шаблоном «Типы заявок».

Настройка приложения

  1. В шаблоне «Типы заявок» создайте четыре записи:

    Наименование типа заявки Код типа заявки
    Автобусная перевозка bus
    Грузоперевозка truck
    Перевозка на микроавтобусе van
    Перевозка на легковом автомобиле passengerCar
  2. Поместите на форму и в таблицу шаблона «Заявки» атрибут «Тип заявки».

  3. Создайте и поместите на форму и в таблицу шаблона «Заявки» атрибут «Тип транспортного средства»:

    • Тип данных: Список значений
    • Формат отображения:Бейдж
    • Вычислять автоматически: флажок установлен
    • Вычисляемое значение: формула
     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

Тестирование

  1. Создайте запись в шаблоне «Заявки».
  2. На форме заявки выберите любой тип заявки.
  3. В поле «Тип транспортного средства» должны автоматически отображаться соответствующие значения.

    Автоматическое вычисление значения атрибута типа «Список значений» по значению атрибута из справочника
    Автоматическое вычисление значения атрибута типа «Список значений» по значению атрибута из справочника

  4. Откройте таблицу с записями шаблона «Заявки».

  5. Столбец «Тип транспортного средства» должен выглядеть как показано на иллюстрации.

    Представление атрибута типа «Список значений» в таблице
    Представление атрибута типа «Список значений» в таблице

Связанные статьи

К началу