Фильтр на детали Контрагенты

Добрый день.

Каким образом нужно собрать фильтр на детали Контрагенты, чтобы он выбирал только тех КА, у которых есть задачи указанного типа и состояния?

Указал Задача:Тип И Задача:Состояние. Без группировок.
Такой фильтр не работает по двум условиям, возвращает тех КА у которых есть задачи указанного типа, но состояние не обязательно соответствует выбранному.

Помогите пожалуйста разобраться. Спасибо!

Нравится

11 комментариев

Если между фильтрами стоит И, то работает все правильно. Возможно вы хотели другого. Этим фильтром отбираются контрагенты у котрых есть ХОТЯ БЫ ОДНА задача с таким типом и состоянием. Какие бы не были остальные задачи, они на результат выборки не повлияют. Возможно Вам нужно было отобрать тех, у кого все задачи имеют такой тип и состояние?

Когда захожу в задачи КА вижу там одну задачу типа Отправить ком. пред., но ее состояние не "в работе"...

если я не ошибаюсь, Вы реализовали каждое из условий фильтром в отдельной ветке в условии WHERE, таким образом фактически между этими двумя фильтрами стоит ИЛИ, чтобы было И нужно задать оба условия в одном фильтре

Точно, у Вас там ИЛИ получается.

Когда нажимаю Добавить связанный элемент (что для Задача:Тип) конструктор предлагает выбрать еще один Тип (и все), еси я хочу указать состояние, этот фильтр переноситься в отдельную строку. И получаеться то что на картинке.

Я просто два раза по плюсику щелкнул и нормально добавилось через И. Там в меню, кажется, есть пункт Объединить

пункт группировка расставляет приоритеты, когда заданы более двух фильтров и между ними есть разные логические операторы

в той ситуации, которая есть сейчас условие выглядит так:
все контрагенты, у которых (существуют задачи с типом "Отправить") И (существуют задачи в состоянии "В работе"), но это на самом деле могут быть 2 разные задачи, дело в том, что И стоит не в том месте,
нужно: все контрагенты, у которых существуют задачи (с типом "Отправить") И (в состоянии "В работе")
т.е. нужно внести изменения в сервис sq_Account, объединить два exists фильтра в один, в котором и будут указаны эти два условия через И

Зачем?
Нажал на +, вибрал фильтр Задача:Тип и нажал еще раз на + (тот которий в той же ветке рисуется). Выбрал Задача:Состояние.
У меня без всяких изменений пошел запрос с таким фильтром

WHERE((EXISTS 
	(SELECT
		[tbl_Task].[ID] AS [ID]
	FROM
		[dbo].[tbl_Task] AS [tbl_Task]
	WHERE([tbl_Task].[AccountID] = [tbl_Account].[ID] AND
		(([tbl_Task].[StatusID] IN (@P1)) AND
		([tbl_Task].[TypeID] IN (@P2)))))))

Вы смотрите в более поздней версии, наверное, в 3.3, поскольку у McCoy возник такой вопрос, я проверила в 3.1.1 и 3.2.1, там два exists фильтра

Да, действительно я смотрел в 3.3.
Но мне почемуто казалось что 3.1 я когда-то делал то же самое и все работало.
P.S. Если сделать так как на скриншоте, то в 3.3 пойдет два запроса.

Остается добавить, что в данной теме речь идет о конструкции, которая называется Пользовательский Фильтр и реализуется в SelectQuery раздела. Воспользовавшись поиском по фразе "пользовательский фильтр" Вы легко найдете на форуме массу примеров их создания и использования.

Показать все комментарии