如何限制对MS Dynamics CRM中实体列表中特定项的访问

时间:2016-07-31 15:26:00

标签: dynamics-crm microsoft-dynamics dynamics-crm-2015

我有几个自定义实体。有两个用户:user1user2

对于一个实体类型,我在列表中有2个项目。

我只需显示user1的一个项目,user2仅显示第二项。

我尝试通过共享对话框管理权限,但它只能限制写入权限,但我需要在列表视图中隐藏项目。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

CRM安全模型使用安全角色限制对记录的访问。您可以使用Local Read特权设置自定义实体,这只允许用户访问他们拥有的读取记录。

User1将拥有Record1,而User2将拥有Record2。

或者,您还可以考虑使用业务单位的层次结构,这也可以对数据的可见性进行细分。

有关详细信息,请查看How role-based security can be used to control access to entities in Microsoft Dynamics CRMThe security model of Microsoft Dynamics CRM

答案 1 :(得分:1)

你可以用两个解决方案来完成这个功能。

解决方案1:使用现场安全配置文件,在此解决方案中,您必须在字段自定义中启用字段安全性选项,然后转到自定义&gt; <定制系统>现场安全配置文件,然后您可以在上一个会话中看到启用了字段安全性选项的字段,然后单击新按钮并选择用户1,并选择权限选项,读取更新为字段1创建,并为字段2更新和用户2.(注意:此选项仅在用户没有管理员安全角色时才有效。)

解决方案2:您可以使用Javascript并处理此操作客户端。首先,您必须转到表单自定义并添加新库并添加此代码。

function onload() 
{
    checkUser(); 
}  

function checkUser() 
{
    var userID = Xrm.Page.context.getUserId();
    if( userID == "user1 id")
    {
        Xrm.Page.getControl("field1").setVisible(true);
        Xrm.Page.getControl("field2").setVisible(false);
    }
    else if( userID == "user2 id")
    {
        Xrm.Page.getControl("field1").setVisible(false);
        Xrm.Page.getControl("field2").setVisible(true);
    }
}

然后在表单上加载事件调用onload函数并且结束并且所有事情都很棒:)

我希望你的问题得到解决:)