在Dynamics 365 CRM上使用Xrm对象设置表单只读

Mar*_*mal 1 javascript microsoft-dynamics dynamics-crm xrm dynamics-crm-365

我正在阅读Microsoft文档中的Xrm对象,但我找不到具体的东西.

我需要限制创建或编辑门户评论(活动类型)的一些角色.因此,我不能简单地修改安全角色.

我在编辑门户网站评论表单时看到有一个JavaScript页面在页面加载时执行:

页面加载脚本

编辑时,它会使用很多这个Xrm对象.

在伪代码中我应该这样做

if(ActiveUser.hasRoles(["Some role", "Some other role"]) {
    Page.setReadOnly(true);
}
Run Code Online (Sandbox Code Playgroud)

我已经有一个脚本(作为一个Web资源)来检查这样的角色,但我不知道如何使表单"只读"或仅使用Xrm.任何线索如何实现这一点?

编辑1:

我可以使用以下代码执行此操作:

// Ribbon "Save" button
document.querySelector('#crmRibbonManager').style.display = "none";
// Status "Save" button
document.querySelector('#savefooter_statuscontrol').style.display = "none";
Xrm.Page.ui.controls.get().forEach(function (control) {          
    if(!control.getDisabled()) {
        control.setDisabled(true);
    }
});
Run Code Online (Sandbox Code Playgroud)

当然,由于文档尚未加载,我收到页面加载错误.但我很确定我可以使用一些技术来禁用这些属性,我必须研究它.Xrm

Aru*_*oth 5

你走在正确的轨道上.就像你说的那样,创建/修改你的js库web资源并在表单加载时注册,而不是编辑现有的OOB adx表单脚本js文件.在您的js代码中 - 检查当前用户的安全角色.

Xrm.Page.context.getUserRoles();
Run Code Online (Sandbox Code Playgroud)

然后批量禁用字段.

Xrm.Page.getControl("myfield").setDisabled(true);
Run Code Online (Sandbox Code Playgroud)

Dynamics 365 CRM平台有两种形式,即只读和已禁用,当用户对该特定实体仅具有读取权限而后者为非活动记录呈现后,将加载前者.不幸的是,我们无法强制加载任何这些形式.