Dynamics crm 角色/权限概述CRM

Dynamics crm 角色/权限概述CRM,dynamics-crm,roles,crm,dynamics-crm-4,privileges,Dynamics Crm,Roles,Crm,Dynamics Crm 4,Privileges,我正在开发MS CRM 4.0 是否有可能显示所有角色及其在每个实体上的权限的概述? 例如,我需要它在excel中显示给客户。 它应该是这样建造的: 罗兰胺 实体名 创建:组织 阅读:组织 写信:业务单位 这有什么功能吗? 我使用了大量的角色和自定义实体,手动操作需要大量的工作。我在MSDN上找到了这个示例,应该可以满足您的要求。 单击下载选项卡。zip包含四个报告,用于按安全角色和/或业务部门显示权限。有2个按角色的报告和2个按用户的报告 这来自名为RolePrivileges

我正在开发MS CRM 4.0

是否有可能显示所有角色及其在每个实体上的权限的概述? 例如,我需要它在excel中显示给客户。 它应该是这样建造的:

  • 罗兰胺
    • 实体名
      • 创建:组织
      • 阅读:组织
      • 写信:业务单位
这有什么功能吗?
我使用了大量的角色和自定义实体,手动操作需要大量的工作。

我在MSDN上找到了这个示例,应该可以满足您的要求。

单击下载选项卡。zip包含四个报告,用于按安全角色和/或业务部门显示权限。有2个按角色的报告和2个按用户的报告

这来自名为RolePrivileges.sql的文件,应该可以满足您的需要:

-- Query on entity roles, consolidating records
select RoleName, BusinessUnitName, EntityName
, max([Read]) as [Read], max([Write]) as [Write], max([Append]) as [Append], max([AppendTo]) as [AppendTo]
, max([Create]) as [Create], max([Delete]) as [Delete], max([Share]) as [Share], max([Assign]) as [Assign] 
from                                                                                                
-- Use sub query to split rights into columns, then outer query gets the Depth
(select r.name as RoleName, r.businessunitidname as BusinessUnitName, e.Name as EntityName
, isnull(case when p.AccessRight & 1  0 then max(rp.PrivilegeDepthMask) end, 0) as [Read]         
-- Use AccessRight to determine action
, isnull(case when p.AccessRight & 2  0 then max(rp.PrivilegeDepthMask) end, 0) as [Write]
, isnull(case when p.AccessRight & 4  0 then max(rp.PrivilegeDepthMask) end, 0) as [Append]
, isnull(case when p.AccessRight & 16  0 then max(rp.PrivilegeDepthMask) end, 0) as [AppendTo]
, isnull(case when p.AccessRight & 32  0 then max(rp.PrivilegeDepthMask) end, 0) as [Create]
, isnull(case when p.AccessRight & 65536  0 then max(rp.PrivilegeDepthMask) end, 0) as [Delete]
, isnull(case when p.AccessRight & 262144  0 then max(rp.PrivilegeDepthMask) end, 0) as [Share]
, isnull(case when p.AccessRight & 524288  0 then max(rp.PrivilegeDepthMask) end, 0) as [Assign]
from 
    dbo.FilteredRole r
    join dbo.RolePrivileges rp on r.roleid = rp.roleid
    join dbo.FilteredPrivilege p on rp.privilegeid = p.privilegeid
    join dbo.PrivilegeObjectTypeCodes potc on p.privilegeid = potc.privilegeid
    join MetadataSchema.Entity e on potc.ObjectTypeCode = e.ObjectTypeCode
group by 
    r.name, r.businessunitidname, e.Name, p.AccessRight) as Role
group by 
    RoleName, BusinessUnitName, EntityName

我在MSDN上找到了这个示例,它应该可以满足您的要求。

单击下载选项卡。zip包含四个报告,用于按安全角色和/或业务部门显示权限。有2个按角色的报告和2个按用户的报告

这来自名为RolePrivileges.sql的文件,应该可以满足您的需要:

-- Query on entity roles, consolidating records
select RoleName, BusinessUnitName, EntityName
, max([Read]) as [Read], max([Write]) as [Write], max([Append]) as [Append], max([AppendTo]) as [AppendTo]
, max([Create]) as [Create], max([Delete]) as [Delete], max([Share]) as [Share], max([Assign]) as [Assign] 
from                                                                                                
-- Use sub query to split rights into columns, then outer query gets the Depth
(select r.name as RoleName, r.businessunitidname as BusinessUnitName, e.Name as EntityName
, isnull(case when p.AccessRight & 1  0 then max(rp.PrivilegeDepthMask) end, 0) as [Read]         
-- Use AccessRight to determine action
, isnull(case when p.AccessRight & 2  0 then max(rp.PrivilegeDepthMask) end, 0) as [Write]
, isnull(case when p.AccessRight & 4  0 then max(rp.PrivilegeDepthMask) end, 0) as [Append]
, isnull(case when p.AccessRight & 16  0 then max(rp.PrivilegeDepthMask) end, 0) as [AppendTo]
, isnull(case when p.AccessRight & 32  0 then max(rp.PrivilegeDepthMask) end, 0) as [Create]
, isnull(case when p.AccessRight & 65536  0 then max(rp.PrivilegeDepthMask) end, 0) as [Delete]
, isnull(case when p.AccessRight & 262144  0 then max(rp.PrivilegeDepthMask) end, 0) as [Share]
, isnull(case when p.AccessRight & 524288  0 then max(rp.PrivilegeDepthMask) end, 0) as [Assign]
from 
    dbo.FilteredRole r
    join dbo.RolePrivileges rp on r.roleid = rp.roleid
    join dbo.FilteredPrivilege p on rp.privilegeid = p.privilegeid
    join dbo.PrivilegeObjectTypeCodes potc on p.privilegeid = potc.privilegeid
    join MetadataSchema.Entity e on potc.ObjectTypeCode = e.ObjectTypeCode
group by 
    r.name, r.businessunitidname, e.Name, p.AccessRight) as Role
group by 
    RoleName, BusinessUnitName, EntityName