Настройка фильтра ссылочного поля по другому ссылочному полю
В 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. Проверьте работу фильтров, выбрав сначала страну, потом город, потом аэропорт. В выпадающем списке показываются записи с учетом прав доступа согласно роли пользователя. При отсутствии записей для выбора проверьте права доступа (см. Настройка привилегий в ролях).