Атрибут типа «Запись». Настройка фильтра записей для раскрывающегося списка на форме
В Comindware Business Application Platform для выбора значения из другого шаблона записи необходимо использовать атрибут с типом данных «Запись». По умолчанию в раскрывающемся списке отображаются все записи, но в некоторых сценариях необходимо показывать только определенные записи.
Для ограничения отображения и выбора записей необходимо использовать функционал «Фильтр» в настройках конструктора конкретной формы, на которую вынесен данный атрибут.
Сценарий: при создании заявки на командировку сотруднику нужно выбрать город, в который ему необходимо прибыть. Выбирать из всех городов не совсем удобно, желательно отфильтровать города по выбранной стране командировки.
Настройка:
1. Создайте:
- Шаблон записи «Страны» (countries) с атрибутами:
- Название (title) — текст;
- Города страны — запись с несколькими значениями.
- Шаблон записи «Города» (cities) с атрибутами:
- Название (title) — текст;
- Страна (country) — запись из шаблона «Страны».
- Шаблон записи «Заявки на командировки» (Zayavkinakomandirovku) с атрибутами:
- Название — текст;
- Страна (request_country) — запись из шаблона «Страны»;
- Город (request_city) — запись из шаблона «Города»;
2. В конструкторе формы шаблона «Заявка на командировку» для поля «Города» (request_city) в свойстве «Фильтр» предусмотрено несколько вариантов фильтрации:
- Атрибут — выберите из раскрывающего списка атрибут: «Страны» -> «Города страны»;
- Формула — напишите выражение на языке Comindware Expression Language: (from a in db->cities where a-> country == $request_country select a->id);
- N3 — напишите выражение на языке N3:
@prefix container: <http://comindware.com/ontology/container#>. @prefix object: <http://comindware.com/ontology/object#>. @prefix math: <http://www.w3.org/2000/10/swap/math#>. { ("cities" "country") object:findProperty ?citiescountryProp. ("Zayavkinakomandirovku" "request_country") object:findProperty ?Zayavkinakomandirovkurequest_countryProp.
?item ?Zayavkinakomandirovkurequest_countryProp ?Zayavkinakomandirovkurequest_countryProperty. ?value a [object:alias "cities"]. ?value ?citiescountryProp? Zayavkinakomandirovkurequest_countryProperty.
} |
- DMN — выберите источник данных Города и настройте в соответствии с информацией ниже:
Пример DMN запроса
3. Проверьте работу фильтра, выбрав сначала страну, потом город. В раскрывающемся списке показываются записи с учетом прав доступа согласно роли пользователя. При отсутствии записей для выбора проверьте права доступа.