Настройка фильтра ссылочного поля по другому ссылочному полю
В Comindware Business Application Platform для выбора значения из другого шаблона записи необходимо использовать атрибут типа «ссылка». По умолчанию в выпадающем списке отображаются все записи, но в некоторых сценариях необходимо показывать только определенные записи.
Для ограничения отображения и выбора записи необходимо использовать функционал «фильтр» (см. Настройка фильтра для атрибутов записи) ссылочного поля в настройках конструктора конкретной формы, на которой вынесен данный атрибут.
Сценарий: при создании заявки на командировку сотруднику нужно выбрать аэропорт, в который ему необходимо прибыть. Выбирать из всех аэропортов не совсем удобно, желательно отфильтровать аэропорты по выбранной стране и городу командировки.
Настройка:
1. Создайте:
- Шаблон записи «Страны» (countries) с атрибутами:
- Название – текст
- Шаблон записи «Города» (cities) с атрибутами:
- Название – текст
- Страна (country) – ссылка на шаблон записи «Страны»
- Шаблон записи «Аэропорты» (airports) с атрибутами:
- Название – текст
- Город (city) – ссылка на шаблон записи «Города»
- Шаблон записи «Заявки на командировки» с атрибутами:
- Название – текст
- Страна (request_country) – ссылка на шаблон записи «Страны»
- Город (request_city) – ссылка на шаблон записи «Города»
- Аэропорт (request_airport) – ссылка на шаблон записи «Аэропорты»
2. На форме создания заявки напишите выражения на языке Comindware Expression Language:
- Для атрибута Город (request_city) фильтр для отображения только городов выбранной страны:
(from a in db->cities where a->country == $request_country select a->id) |
- Для атрибута Аэропорт (request_airport) фильтр для отображения только аэропортов выбранного города:
(from a in db->airports where a->city == $request_city select a->id) |
3. Проверьте работу фильтров, выбрав сначала страну, потом город, потом аэропорт. В выпадающем списке показываются записи с учетом прав доступа согласно роли пользователя. При отсутствии записей для выбора проверьте права доступа (см. Настройка привилегий в ролях).