Здравствуйте. Подскажите пожалуйста, каким образом можно отфильтровать типы контрагента на его карточке для разных групп пользователей? Добавил в 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. _" написал:И включайте его в карточке. Можна на OnPrepare.
лучше включать на OnPrepareSelectWindow , контрола типов
"Матвеев Сергей" написал:не входящих в эти группы, должен отображаться полный список типов.
данный фильтр непоможет
необходимо определится , что это за группы такие
и вобще , являются ли они группами пользователей
"Денис М" написал:данный фильтр непоможет
Почему не поможет? Если пользоватль не входит в группу, которая соотнесена с типом, то он этот тип и не увидит. Если я конечно правильно понял задачу.
"Денис М" написал:лучше включать на OnPrepareSelectWindow
Возможно. Просто я подумал что там выпадающий список и не был уверен работает ли для него это событие.
"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 ))