Добрый день возникла потребность фильтровать справочник с саб селектом. То-есть есть лукам/список привязанный к справочнику, хочу чтобы мне попадали в контрол значения по такому селекту:
SELECT table1.ID, table1.Name FROM table1 WHERENOTEXISTS( SELECT tbale2.ID FROM table2 WHERE table2.table1 = table1.ID )
Перефразирую, как в метод .CreateNotExistsFilter() передать условия фильтрации а не только имя поля по которому производится фильтрация? чтобы построить запрос вида:
SELECT
[Document].[Id][Id]
FROM
[dbo].[Document][Document] WITH(NOLOCK)
WHERE
AND [Document].[SxCompletionDate]<= GETDATE()
AND NOT EXISTS (
SELECT
[SxActivityDocument].[Id][Id]
FROM
[dbo].[SxActivityDocument][SxActivityDocument] WITH(NOLOCK)
LEFT OUTER JOIN [dbo].[Activity][SxActivity] WITH(NOLOCK) ON ([SxActivity].[Id]=[SxActivityDocument].[SxActivityId])
WHERE
[Document].[Id]=[SxActivityDocument].[SxDocumentId]
AND [SxActivity].[ActivityCategoryId]='<Id Категории активности>'---!!!Интересует эта строка
)
Вероятно CreateNotExistsFilter не позволит вам так сделать, попробуйте не использовать CreateNotExistsFilter, а сделать обычный LEFT JOIN своего SxActivityDocument к Document по SxDocumentId, к ним SxActivity по SxActivityId и [SxActivity].[ActivityCategoryId] = '', и уже поверх этого делать условие: (SxActivityDocument IS NULL)
Нашёл вариант в базовом коде BPM Online 7.3.
Добавляем группу фильтров, в которую добавляем все условия и устанавливаем свойство .IsNot = true.
После чего добавляем группу фильтров в фильтры запроса
var notExistsFilterGroup =new EntitySchemaQueryFilterCollection(esq, LogicalOperationStrict.And);
notExistsFilterGroup.IsNot=true;
var accountClientType =new Guid("03a75490-53e6-df11-971b-001d60e938c6");
notExistsFilterGroup.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal,
"[Account:PrimaryContact].Type.Id", accountClientType));
esq.Filters.Add(notExistsFilterGroup);
Получил то, что нужно. NotExists-фильтр с параметрами.
Может кому понадобится.