Настройка фильтра для переменной типа "Объект"

Часто при проектировании бизнес-процессов возникает необходимость ограничить диапазон отображаемых значений для переменных, в качестве типа которых выбран какой-либо объект. Например, если добавить в контекст задачи переменную типа Контакт, то в выпадающем списке по умолчанию будут отображены все имеющиеся в базе данных контакты. Но, допустим, необходимо отображать только контакты, относящиеся к конкретному, заранее выбранному контрагенту. Для этого можно в сценарии установить соответствующий фильтра на переменную типа Контакт.

Пусть в процессе есть две переменные: Контрагент (Kontragent) и Контакт (Kontakt). Нужно, чтобы при выборе контрагента в списке контактов отражались только контакты выбранного контрагента. Установим в настройках контекста задачи сценарий при изменении переменной Контрагент (подробнее о динамических формах задачи см. соответстующий раздел справки). Сценарий будет выглядеть следующим образом:

var contactSettings = (EntitySettings)context.GetSettingsFor(c => c.Kontakt);
contactSettings.FilterQuery = context.Kontragent != null ? "Contractor=" + context.Kontragent.Id : "Id > 0";
contactSettings.Save();

Если Контрагент не выбран, то список Контактов будет полным:

Рис. 1. Список всех существующих контактов

Если Контрагент выбран, то список будет отфильтрован:

Рис. 2. Список контактов выбранного контрагента