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

Настройка зависимого фильтра для атрибута с типом данных "Запись"

В 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 запроса

Пример DMN запроса

3. Проверьте работу фильтра, выбрав сначала страну, потом город. В раскрывающемся списке показываются записи с учетом прав доступа согласно роли пользователя. При отсутствии записей для выбора проверьте права доступа.

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