В Comindware Platform для выбора значения из другого шаблона записи необходимо использовать атрибут типа «Запись». По умолчанию в раскрывающемся списке отображаются все записи, но в некоторых сценариях необходимо показывать только определённые записи.
Для ограничения отображения и выбора записей используйте функционал «Фильтр» в настройках конструктора формы, на которую вынесен данный атрибут.
Сценарий
При создании заявки на командировку сотруднику нужно выбрать город, в который ему необходимо прибыть. Выбирать из всех городов не совсем удобно — желательно отфильтровать города по выбранной стране командировки.
Исходные данные
Создайте следующие шаблоны записи и атрибуты:
| Шаблон записи | Атрибуты |
|---|---|
Страны (countries) |
title — текст; Gorodastrany — запись с несколькими значениями |
Города (cities) |
title — текст; country — запись из шаблона countries |
Заявки на командировки (Zayavkinakomandirovku) |
title — текст; request_country — запись из шаблона countries; request_city — запись из шаблона cities |
Порядок настройки
-
В конструкторе формы шаблона «Заявки на командировки» для поля «Город» (
request_city) в свойстве «Фильтр» выберите один из вариантов фильтрации:- Атрибут — выберите атрибут: Страны → Города страны;
-
Формула — введите выражение на языке Comindware Platform 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-запроса
-
Проверьте работу фильтра: выберите сначала страну, затем город. В раскрывающемся списке показываются записи с учётом прав доступа согласно роли пользователя. При отсутствии записей для выбора проверьте права доступа.
Примечание
С помощью правил для формы можно настроить динамическое отображение полей для более удобного заполнения.