none
登录用户的查询权限 RRS feed

  • 问题

  • 请教各位MVP. 省公司下有两个分公司,分别是A加油站,B加油站。A加油站有客户经理2人,分别A客户经理、B客户经理,此二人对客户实体的访问权限都是用户级别。A加油站还有部门经理一人:A部门经理,此人对客户实体的访问权限是业务部门级别。现在,如何通过代码得到A部门经理所能查看的客户信息呢。正常的结果应该是A客户经理、B客户经理所拥有的客户,A部门经理都能查看。 请各位老大指教。
    2009年8月5日 2:44

答案

全部回复

  • 其实这个问题有个思路可以解决,就是使用当前登录用户“客户”实体的视图“可用客户”,但是“可用客户”这个视图是哪个视图?在CRM webservice 里怎么调用,还请各位大拿指点。

    2009年8月6日 0:42
  • 跟踪到了一段是返回登录用户可查看的客户集合,但是使用CRM WEBSERVICE不知道咋写。
     select top 51 account0.Name as name, account0.PrimaryContactId as primarycontactid, account0.Telephone1 as
    telephone1, account0.new_shi_zhou as new_shi_zhou, account0.OwnerId as ownerid, account0.AccountId as accountid,
    account0.PrimaryContactIdName as primarycontactidname, account0.PrimaryContactIdYomiName as primarycontactidyominame,
     account0.PrimaryContactIdDsc as primarycontactiddsc, account0.new_shi_zhouName as new_shi_zhouname, account0.new_shi_zhouDsc as
    new_shi_zhoudsc, account0.OwnerIdDsc as owneriddsc, account0.OwnerIdYomiName as owneridyominame, account0.OwnerIdType as
     owneridtype, account0.OwnerIdName as owneridname, accountprimarycontactidcontactcontactid.EMailAddress1 as
    emailaddress1 from Account as account0 left outer join Contact as
     accountprimarycontactidcontactcontactid on (account0.PrimaryContactId  =  accountprimarycontactidcontactcontactid.ContactId and
    ((accountprimarycontactidcontactcontactid.DeletionStateCode in (0))
    and (accountprimarycontactidcontactcontactid.OwningUser = '771ae8fc-d169-de11-99ac-00241d150e1a' or accountprimarycontactidcontactcontactid.ContactId in
    (select POA.ObjectId from PrincipalObjectAccess POA join SystemUserPrincipals sup on POA.PrincipalId = sup.PrincipalId where sup.SystemUserId =
    '771ae8fc-d169-de11-99ac-00241d150e1a' and POA.ObjectTypeCode = 2 and ((POA.AccessRightsMask|POA.InheritedAccessRightsMask) & 1) = 1))))
    where (account0.StateCode = 0 and (account0.DeletionStateCode in (0)) and (account0.OwningUser =
    '771ae8fc-d169-de11-99ac-00241d150e1a' or account0.OwningBusinessUnit = 'C4C70E5A-F06C-DE11-99A6-00241D150E1A' or account0.AccountId in (select POA.ObjectId from
    PrincipalObjectAccess POA join SystemUserPrincipals sup on POA.PrincipalId = sup.PrincipalId where sup.SystemUserId =
    '771ae8fc-d169-de11-99ac-00241d150e1a' and POA.ObjectTypeCode = 1 and ((POA.AccessRightsMask|POA.InheritedAccessRightsMask)
     & 1) = 1))) order by account0.Name asc, account0.AccountId asc

    2009年8月6日 4:01
  • 你可以通过CRMService来返回A部门经理所能查看的客户信息,也可以用SQL连接FilteredView来实现查询。


    Jim Wang - MVP Dynamics CRM - http://jianwang.blogspot.com, http://mscrm.cn
    2009年8月6日 8:59
    版主
  • 请教Jim Wang ,如何通过CRMService,用哪个属性查询,才能得到A部门经理所能查看的客户信息。我找了客户实体的字段,没有发现有用的啊。

    2009年8月6日 9:15
  • RetrieveMultiple message
    查询statecode属性 = AccountState.Active
    Batistuta Cai-刀客 | 蔡敏生 | MS CRM MVP | Blog:http://caims.cnblogs.com
    • 已标记为答案 杨五之 2009年8月7日 0:56
    2009年8月6日 9:55
    版主
  • 感谢Jim Wang 和batistuta ,方法确实可行。
    2009年8月7日 0:56