我的公司正在使用Microsoft Dynamic CRM 2011,并希望自定义某些功能。如下所述的自定义:
“帐户有密码字段(用于登录我们公司的网站)。密码仅对帐户所有者或销售经理或销售管理员可见。“
我怎样才能做到这一点,MSCRM 2011中的Field Security似乎只支持用户和团队。请告诉我怎么做(即使是通过编程)。
答案 0 :(得分:0)
这可以通过使用javascript实现。
首先,将密码字段设置为默认不可见 - 这将使其最初停止显示,以便没有权限的用户可以看到它(甚至是短暂的)。
其次,提供一个javascript函数来查找登录用户的角色。有很多方法可以做到这一点,每种方式都有自己的优点和缺点。这个link有两种方法可以使用。
第三,使用此函数和一些额外的javascript来检查所有者字段,以使字段可见/不可见。
举个例子:
function CanUserSeePassword() {
var loggedInUserGuid = USER_ID;//USER_ID is built in CRM constant
if (RetrieveUserRoles(loggedInUserGuid)) {
SetPasswordFieldVisibility(true);
}
else {
var ownerGuid = Xrm.Page.getAttribute('ownerid').getValue()[0].id;
SetPasswordFieldVisibility(ownerGuid == USER_ID);
}
}
function SetPasswordFieldVisibility(isVisible) {
Xrm.Page.getAttribute('new_password').setVisible(isVisible);
}
function RetrieveUserRoles() {
//use code from link above to return a bool, either user is in appropriate security role, or is not
}
粗略'准备好',但会完成这项工作。
答案 1 :(得分:0)
现场安全对于特定角色(销售经理等)非常有用,但不适用于“情境感知”场景,例如记录所有者。
您最好的选择是为密码创建一个自定义实体,使主要字段(默认名称)不需要业务。
与Account建立N:1关系,将关系设为“Parental”,并将查找字段设为Business Required。 您现在将在帐户的左侧导航栏中看到“密码”。
编辑密码表单以查找帐户,并为密码本身添加文本字段,并使“名称”字段默认不可见,以便您可以忽略它。
创建安全角色(或编辑现有角色),为读取,创建,更新,分配和追加权限提供密码的用户级访问权限。修改销售经理角色以允许读取所有密码记录。
父母关系将意味着如果重新分配帐户,那么子密码记录也将如此。 但是,有人可以创建密码记录(因此他们拥有密码记录)并将其链接到帐户(甚至可能是他们不拥有的帐户),而无需更改所有者以匹配父级。因此,在密码记录创建,重新父母或重新分配上创建工作流程,这将使所有者更改为与父帐户相同以整理这种情况。
编辑密码的关联视图以显示密码字段。根据需要编辑其他视图。 (如果您确实希望密码在帐户表单上直接显示,请使用内联网格集以使用最少的空间,不使用视图选择器等。但实际上仍然会占用太多。)
希望这有帮助