【发布时间】:2016-07-31 15:25:59
【问题描述】:
我有几个自定义实体。有两个用户:user1 和 user2。
对于一种实体类型,我在列表中有 2 项。
user1 只需要显示一项,user2 只需要显示第二项。
我尝试通过共享对话框管理权限,但它只能限制写入权限,但我需要从列表视图中隐藏项目。
我该怎么做?
【问题讨论】:
标签: dynamics-crm microsoft-dynamics dynamics-crm-2015
我有几个自定义实体。有两个用户:user1 和 user2。
对于一种实体类型,我在列表中有 2 项。
user1 只需要显示一项,user2 只需要显示第二项。
我尝试通过共享对话框管理权限,但它只能限制写入权限,但我需要从列表视图中隐藏项目。
我该怎么做?
【问题讨论】:
标签: dynamics-crm microsoft-dynamics dynamics-crm-2015
CRM 安全模型使用安全角色限制对记录的访问。您可以设置具有本地读取权限的自定义实体,这仅允许用户访问他们拥有的读取记录。
User1 将拥有 Record1,而 User2 将拥有 Record2。
或者,您还可以考虑建立业务单位的层次结构,这也细分了数据的可见性。
查看How role-based security can be used to control access to entities in Microsoft Dynamics CRM 和The security model of Microsoft Dynamics CRM 了解更多信息。
【讨论】:
你可以用两个解决方案来完成这个功能。
解决方案1:使用字段安全配置文件,在此解决方案中,您必须在字段自定义中启用字段安全选项,然后转到自定义>自定义系统>字段安全配置文件,然后您可以看到启用字段安全选项的字段在上一个会话中,然后单击新建按钮并选择用户 1,然后在读取更新创建字段 1 和字段 2 和用户 2 的权限选项之间选择您想要的权限选项。(注意:此选项仅在用户没有时有效t 管理员安全角色。)
解决方案 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 函数,一切都很好:)
希望你的问题解决了:)
【讨论】: