Здравствуйте. Подскажите пожалуйста, каким образом можно отфильтровать типы контрагента на его карточке для разных групп пользователей? Добавил в tbl_AccountType поле Группа, нужно как-то в запросе поставить фильт тех типов КА, которые не попадают в группу для текущего пользователя. При этом для пользователей, не входящих в эти группы, должен отображаться полный список типов.
Добавьте в sq_AccountType параметр UserID с типом данных Функция и значением Текущий пользователь. Также добавьте
Include фильтер.
NOT
([tbl_AccountType].[GroupID] IN
(SELECT
[tbl_UserInGroup].[GroupID] AS [GroupID]
FROM
[dbo].[tbl_UserInGroup] AS [tbl_UserInGroup]
WHERE([tbl_UserInGroup].[UserID]=:UserID)))
И включайте его в карточке. Можна на OnPrepare.
P.S.Насчет NOT в фильтре неуверен. Не совсем понял какие типы вам надо скрыть. Но думаю разберетесь. Удачи.
"Underscore a.k.a. _" написал:Добавьте в sq_AccountType параметр UserID с типом данных Функция и значением Текущий пользователь.
Функция вернула значение AdminUnit.UserContactID для моего пользователя. А в таблице UserInGroup UserID связан с AdminUnit.ID как и GroupID, поэтому сейчас ничего не пересекается.
Частично работает так:
WHERE([tbl_AccountType].[Группа] IN
(SELECT
[tbl_UserInGroup].[GroupID] AS [GroupID]
FROM
[dbo].[tbl_UserInGroup] AS [tbl_UserInGroup]
WHERE([tbl_UserInGroup].[UserID]=(SELECT
[tbl_AdminUnit].[ID] AS [ID]
FROM
[dbo].[tbl_AdminUnit] AS [tbl_AdminUnit]
WHERE([tbl_AdminUnit].[UserContactID]=:UserID)))))
Но осталась проблема, те пользователи, которые не входят в группы, указаные для типов КА должны видеть весь список типов. Можно включить этих общих пользователей во все указанные группы, но это какое-то странное решение. :)
"Матвеев Сергей" написал:Но осталась проблема, те пользователи, которые не входят в группы
что то такого плана (([tbl_AccountType].[Группа] IN
(SELECT
[tbl_UserInGroup].[GroupID] AS [GroupID]
FROM
[dbo].[tbl_UserInGroup] AS [tbl_UserInGroup], [dbo].[tbl_AdminUnit] AS [tbl_AdminUnit]
WHERE([tbl_UserInGroup].[UserID] = [tbl_AdminUnit].[ID][tbl_AdminUnit].[UserContactID] = :UserID)))
or ((SELECT top 1
[tbl_UserInGroup].[GroupID] AS [GroupID]
FROM
[dbo].[tbl_UserInGroup] AS [tbl_UserInGroup],[tbl_AccountType] as [AccountType]
WHERE( [AccountType].[Группа] = [tbl_UserInGroup].[GroupID]))) is null ))