Введение
В ряде случаев требуется отображать записи с определённым значением атрибута типа «Список значений».
Здесь представлен пример настройки фильтрации записей связанного шаблона по значению атрибута типа «Список значений».
См. также подробное описание и другие примеры использования атрибута типа «Список значений».
Структура атрибута типа «Список значений»
- Атрибут типа «Список значений» хранит ID значения, выбранного из предварительно заданного списка.
- Список возможных значений настраивается в свойствах атрибута и не может быть изменён при выполнении приложения.
- Каждое возможное значение содержит:
- Системное имя значения.
- Отображаемые названия на русском, английском и немецком языках (достаточно указать название на одном языке).
- Цвет — числовой код в десятичном формате. Для поиска кодов цветов и их преобразования из шестнадцатеричной в десятичную форму можно воспользоваться, например, сайтом https://convertingcolors.com/.
- Значок — строка с кодом FontAwesome. Для поиска кодов значков можно воспользоваться встроенной галереей значков или сайтом https://fontawesome.com/.
Фильтрация значения атрибута с помощью N3
С помощью N3 для атрибута типа «Список значений» можно выполнять фильтрацию по системному имени его значения:
-
Фильтрация (в таблице шаблона) записей с требуемым значением атрибута:
@prefix convert: <http://comindware.com/logics/convertions#>.@prefix object: <http://comindware.com/ontology/object#>.{# Получаем атрибут типа «Список значений» из шаблона по системному имени.("TemplateSystemName" "EnumAttributeSystemName") object:findProperty ?enumAttribute.# Получаем ID значения атрибута по системному имени.("EnumAttributeSystemName" "enumValueSystemName") convert:enumValue ?enumValueId.# Возвращаем записи, у которых атрибут имеет значение "enumValueSystemName".?item ?enumAttribute ?enumValueId.} -
Фильтрация добавляемых записей (в таблице на форме или раскрывающемся списке на форме) записей с требуемым значением атрибута:
@prefix convert: <http://comindware.com/logics/convertions#>.@prefix object: <http://comindware.com/ontology/object#>.{# Получаем атрибут типа «Список значений» из шаблона по системному имени.("TemplateSystemName" "EnumAttributeSystemName") object:findProperty ?enumAttribute.# Получаем ID значения атрибута по системному имени.("EnumAttributeSystemName" "enumValueSystemName") convert:enumValue ?enumValueId.# Фильтруем и возвращаем записи,# у которых атрибут имеет значение "enumValueSystemName".?filteredRecordIds ?enumAttribute ?enumValueId.?filteredRecordIds -> ?value.} -
Фильтрация отображаемых записей (в таблице на форме, раскрывающемся списке на форме, вычисляемом атрибуте или правиле для формы) записей с требуемым значением атрибута:
@prefix convert: <http://comindware.com/logics/convertions#>.@prefix object: <http://comindware.com/ontology/object#>.{# Получаем атрибут типа «Запись» из шаблона с коллекцией записей.("ParentTemplateSystemName" "RecordAttributeSystemName") object:findProperty ?RecordAttribute.# Получаем атрибут типа «Список значений» из связанного шаблона по системному имени.("LinkedTemplateSystemName" "EnumAttributeSystemName") object:findProperty ?enumAttribute.# Получаем ID значения атрибута по системному имени.("EnumAttributeSystemName" "enumValueSystemName") convert:enumValue ?enumValueId.# Получаем коллекцию записей из атрибута RecordAttribute.?item ?RecordAttribute ?filteredRecordIds.# Фильтруем и возвращаем записи,# у которых атрибут имеет значение "enumValueSystemName".?filteredRecordIds ?enumAttribute ?enumValueId.?filteredRecordIds -> ?value.}
Прикладная задача
Имеется шаблон «Клиенты», с которым связан шаблон «Заявки на перевозку».
В шаблоне «Заявки на перевозку» имеется атрибут «Статус» типа «Список значений».
Требуется выводить на форме заявки таблицу со списком просроченных заявок.
Исходные данные
- Имеется шаблон записи «Заявки на перевозку» (с системным именем
Заявкинаперевозку). -
В шаблоне «Заявки на перевозку» есть атрибут «Статус» типа «Список значений» с системным именем
Статуси следующими значениями:Системное имя RU Overdue Просрочена Timely В срок Cancelled Отменена -
В шаблоне «Клиенты» имеется атрибут «Заявки на перевозку»:
- Тип данных: Запись
- Системное имя:
Заявкинаперевозку - Связанный шаблон: Заявки на перевозку
- Хранить несколько значений: флажок установлен.
Распределение заявок по значению атрибута список значений
- Откройте для редактирования форму шаблона «Клиенты».
- Поместите на форму атрибут «Заявки на перевозку».
- Настройте представление атрибута «Заявки на перевозку» в виде таблицы.
- Добавьте в таблицу «Заявки на перевозку» атрибут «Статус».
- Добавьте в область кнопок таблицы «Заявки на перевозку» кнопку «Создать».
- Поместите повторно на форму атрибут «Заявки на перевозку».
-
Настройте свойства поля «Заявки на перевозку»:
- Отображаемое название: Просроченные заявки
- Представление: таблица
- Фильтр — Отображаемые записи: N3
# Импортируем функции для работы# с записями, строками и базой данных.@prefix object: <http://comindware.com/ontology/object#>.@prefix convert: <http://comindware.com/logics/convertions#>.{# Находим атрибут «Заявки на перевозку» в шаблоне «Клиенты».("Клиенты" "Заявкинаперевозку") object:findProperty ?TransportRequestsAttribute.# Находим атрибут «Статус» в шаблоне «Заявки на перевозку».("Заявкинаперевозку" "Статус") object:findProperty ?StatusAttribute.# Берём значения ?TransportRequestsAttribute# и помещаем в ?TransportRequestsValue.?item ?TransportRequestsAttribute ?TransportRequestsValue.# Находим ID значения Overdue «Просрочена»# атрибута «Статус».("Статус" "Overdue") convert:enumValue ?enumIdOverdue.# Фильтруем ?TransportRequestsValue# по значению ?StatusAttribute равному ?enumIdOverdue.?TransportRequestsValue ?StatusAttribute ?enumIdOverdue.# Возвращаем отфильтрованные значения из ?TransportRequestsValue.?TransportRequestsValue -> ?value.} -
Сохраните форму.
Тестирование
- Создайте запись в шаблоне «Клиенты».
- Создайте несколько связанных записей в таблице атрибута «Заявки на перевозку», выбрав разные статусы заявок, включая «Просрочена».
- В таблице «Просроченные заявки» должны отобразиться соответствующие заявки.