Настройка фильтра для переменной типа "Объект"
Часто при проектировании бизнес-процессов возникает необходимость ограничить диапазон отображаемых значений для переменных, в качестве типа которых выбран какой-либо объект. Например, если добавить в контекст задачи переменную типа Контакт, то в выпадающем списке по умолчанию будут отображены все имеющиеся в базе данных контакты. Но, допустим, необходимо отображать только контакты, относящиеся к конкретному, заранее выбранному контрагенту. Для этого можно в сценарии установить соответствующий фильтра на переменную типа Контакт.
Пусть в процессе есть две переменные: Контрагент (Kontragent) и Контакт (Kontakt). Нужно, чтобы при выборе контрагента в списке контактов отражались только контакты выбранного контрагента. Установим в настройках контекста задачи сценарий при изменении переменной Контрагент (подробнее о динамических формах задачи см. соответстующий раздел справки). Сценарий будет выглядеть следующим образом:
var contactSettings = (EntitySettings)context.GetSettingsFor(c => c.Kontakt); contactSettings.FilterQuery = context.Kontragent != null ? "Contractor=" + context.Kontragent.Id : "Id > 0"; contactSettings.Save();
Если Контрагент не выбран, то список Контактов будет полным:
Рис. 1. Список всех существующих контактов
Если Контрагент выбран, то список будет отфильтрован: