描述 方法 备注
获取当前记录的guid Xrm.Page.data.entity.getId();
获取当前用户 Xrm.Page.context.getUserId(); 
获取当前界面某个字段的值 Xrm.Page.getAttribute("字段").getValue();
设置某个字段的值 Xrm.Page.getAttribute("字段").setValue(value);
设置某个字段必填 Xrm.Page.getAttribute("字段").setRequiredLevel("required");
界面上取消某个字段必填属性 Xrm.Page.getAttribute("字段").setRequiredLevel("none");
datetime类型字段读取值 var myContactBirthday;
myContactBirthday = Xrm.Page.getAttribute("birthdate").getValue();
alert("Contact birthday is: " + myContactBirthday);
var year = myContactBirthday.getFullYear();
var month = myContactBirthday.getMonth(); // from 0 to 11
var day = myContactBirthday.getDate(); // from 1 to 31
month = month + 1;
alert("Year: " + year + ", Month: " + month + ", Day: " + day);
时间类型字段赋值 Xrm.Page.data.entity.attributes.get("new_status_category_date_detail").setValue(new Date())
设置某个tab隐藏 Xrm.Page.ui.tabs.get("TAB名称").setVisible(false);
设置某个字段显示与隐藏 Xrm.Page.getControl("字段").setDisabled(true);
界面上js控制阻止保存 ExecutionObj.getEventArgs().preventDefault();//阻止保存操作
货币(currency)类型字段保存 Xrm.Page.getAttribute("字段").setValue(parseFloat(具体值));
接口查询方式    var clientURL = Xrm.Page.context.getClientUrl();
        var req = new XMLHttpRequest();

req.open("GET", encodeURI(clientURL + "/api/data/v9.1/cr15f_allowancelists?$select=_cr15f_allowancenamelookup_value,cr15f_allowance&$filter=_cr15f_allowanceno_value eq '" + guid + "'"), false);
        req.setRequestHeader("Accept", "application/json");
        req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
        req.setRequestHeader("OData-MaxVersion", "4.0");
        req.setRequestHeader("OData-Version", "4.0");
        req.onreadystatechange = function () {
            if (this.readyState == 4) {
                req.onreadystatechange = null;
                if (this.status == 200) {
                    var rdata = JSON.parse(this.responseText);

}
                else {
                    var error = JSON.parse(this.responseText).error;
                    Xrm.Utility.alertDialog("查询实体记录出错." + error.message);
                    result = false;
                }
            }
        };
        req.send();

日期类型字段求day差     var new_tender_estimated_date_detail = Date.parse(Xrm.Page.data.entity.attributes.get("new_tender_estimated_date_detail").getValue());   //预计投标日期
    var createdon = Date.parse(Xrm.Page.data.entity.attributes.get("createdon").getValue());   //商机创建日期
    var days = (new_tender_estimated_date_detail - createdon) / (1 * 24 * 60 * 60 * 1000);
界面上所有字段只读设置(循环遍历方式)             var controls = Xrm.Page.ui.controls.get();
            for (var i in controls) {
                var control = controls[i];
                control.setDisabled(true);
            }
查询当前记录的方法         var req = new XMLHttpRequest();
        req.open("PATCH", Xrm.Page.context.getClientUrl() + "/api/data/v9.0/opportunities(" + entityId.toString().replace('{', '').replace('}', '') + ")", false);   //new_orders  要修改的表名
        req.setRequestHeader("Accept", "application/json");
        req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
        req.setRequestHeader("OData-MaxVersion", "4.0");
        req.setRequestHeader("OData-Version", "4.0");
        req.onreadystatechange = function () {
            if (this.readyState == 4 /* complete */) {
                req.onreadystatechange = null;
                if ((this.status == 204) || (this.status == 200)) {
                    Xrm.Utility.alertDialog("执行成功!");
                    console.log(this.responseText);
                }
                else {
                    Xrm.Utility.alertDialog(this.responseText);
                }
                Xrm.Utility.openEntityForm(Xrm.Page.data.entity.getEntityName(), Xrm.Page.data.entity.getId()); //刷新当前界面
            }
        };
        req.send(JSON.stringify(entity));
js调用workflow的方法 function executeWorkflow(entityId, workflowId, clientUrl) {
    var clientURL = Xrm.Page.context.getClientUrl();   //获取当前客户端的url
    var req = new XMLHttpRequest()
    req.open("POST", encodeURI(clientURL + "/api/data/v9.0/workflows(" + workflowId + ")/Microsoft.Dynamics.CRM.ExecuteWorkflow"), true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.setRequestHeader("OData-MaxVersion", "4.0");
    req.setRequestHeader("OData-Version", "4.0");
    req.onreadystatechange = function () {
        if (this.readyState == 4 /* complete */) {
            req.onreadystatechange = null;
            //Xrm.Utility.alertDialog(this.status);
            if ((this.status == 204) || (this.status == 200)) {
                Xrm.Utility.alertDialog("执行成功!");
                console.log(this.responseText);
            }
            else {
                Xrm.Utility.alertDialog("执行出错。");
                console.log(this.responseText);
            }
            Xrm.Utility.openEntityForm(Xrm.Page.data.entity.getEntityName(), Xrm.Page.data.entity.getId()); //刷新当前界面
        }
    };
    var requestMsg = {};
    var entityids = entityId.toString();
    requestMsg.EntityId = entityids;

req.send(JSON.stringify(requestMsg));
}

js调用自定义api接口的方法                                 var req4 = new XMLHttpRequest()
                                req4.open("post", "http://139.217.100.219:9001/api/Opportunity/GetOpportunity", false);
                                //req4.open("post", configvalue, false);
                                req4.setRequestHeader("Accept", "application/json");
                                req4.setRequestHeader("Content-Type", "application/json; charset=utf-8");
                                req4.setRequestHeader("OData-MaxVersion", "4.0");
                                req4.setRequestHeader("OData-Version", "4.0");
                                req4.onreadystatechange = function () {
                                    if (this.readyState == 4) {
                                        if (this.status == 200 || this.status == 204) {
                                            var result = JSON.parse(this.responseText);
                                        }
                                        else {
                                            Xrm.Utility.alertDialog(this.responseText);
                                        }
                                    }
                                };
                                req4.send(JSON.stringify(entitys));
                            }
刷新当前打开的form窗体 Xrm.Utility.openEntityForm(Xrm.Page.data.entity.getEntityName(), Xrm.Page.data.entity.getId()); //刷新当前界面
获取lookup类型字段 function SetValue() {
    var state = new Array();
    state = Xrm.Page.getAttribute("parentaccountid").getValue();
    if (state != null) {
        var stateText = state[0].name;
        var stateId = state[0].id;
        var stateType = state[0].entityType;
        alert(stateType);
    }
}
lookup清空值 var state = Xrm.Page.getAttribute("new_state");
if (state != null)
{
Xrm.Page.getAttribute("new_state").setValue(null);
}
lookup赋值 var state = new Array();
state[0] = new Object();
state[0].id = "{BA0762E4-64D2-E111-909E-00155D6C871A}";
state[0].name = "New York";
state[0].entityType = "new_state";
Xrm.Page.getAttribute("new_state").setValue(state);
optionset类型字段读取值 var sval = Xrm.Page.getAttribute("new_optionset").getSelectedOption().text;
var sval = Xrm.Page.getAttribute("new_optionset").getSelectedOption().value;
分别读取显示文本和值
另外,我们还可以用下面的方法来获取text和value:
var sval = Xrm.Page.getAttribute("new_optionset").getText();
var sval = Xrm.Page.getAttribute("new_optionset").getValue();
optionset类型字段赋值 function SetOSValue(osName, osLabel)
{
var options = Xrm.Page.getAttribute(osName).getOptions();
for(i = 0; i < options.length; i++)
{
if (options[i].text == osLabel)
Xrm.Page.getAttribute(osName).setValue(options[i].value);
}
}
节隐藏 Xrm.Page.ui.tabs.get("tab_5").sections.get("tab_5_section_1").setVisible(false); tab_5:选项卡
tab_5_section_1:节
标签隐藏 Xrm.Page.ui.tabs.get("tab_5").setVisible(false); tab_5:选项卡

//判断用户是否具有某个角色

function RoleControlFields_lead()
{
    //获取用户的角色ID
    var roleIdArray = Xrm.Utility.getGlobalContext().userSettings.securityRoles;
    var roleIdFilter = "";
    roleIdArray.forEach(function (element) {
        roleIdFilter = roleIdFilter + "roleid eq " + element + " or ";
    });
    var roleOwner;

//通过Web API返回用户拥有的角色名称
    var queryRoleName = "?$select=name&$filter=" + roleIdFilter.substring(0, roleIdFilter.length - 3);
    Xrm.WebApi.retrieveMultipleRecords("role", queryRoleName).then(
        function success(result) {
            //判断是否有HW 商务专员、HW 商务经理、HW 商机负责人的角色
            for (var i = 0; i < result.entities.length; i++) {
                if (result.entities[i]["name"] == "窗体部分字段显示(非华为)") {   //|| result.entities[i]["name"] == "HW 商务经理"
                    roleOwner = "X";
                }
            }
            SetFieldVisible_leadform(roleOwner);
        },
        function (error) {
            // handle error conditions           
        }
    );

}

//注册执行业务线的查找列表事件(绑定在窗体onload事件上)
function setBusinessLineFilter() {
    Xrm.Page.getControl("new_businessline").addPreSearch(function () {
        businessFilter("new_businessline", "new_businessgroup");
    });
}

//根据业务部门,角色名查询用户   -----webApi的其他使用方式
function setExecutivedeliverymanager(rolename, businessunitid, targetfieldname) {

//用户 systemuser:systemuserid
    //角色 role:roleid
    //角色权限  systemuserroles:   systemuserid,roleid

var fetchxml = "<fetch mapping='logical' version='1.0'>" +
        "<entity name='role' >" +
        "<filter>" +
        "<condition attribute='name' operator='eq' value='" + rolename + "' />" +
        "<condition attribute='businessunitid' operator='eq' value='" + businessunitid + "' />" +
        "</filter>" +
        "<link-entity name='systemuserroles' from='roleid' to='roleid' alias='b' link-type='inner'>" +
        "<attribute name='systemuserid' />" +
        "</link-entity>" +
        "</entity >" +
        "</fetch > ";
    var req = new XMLHttpRequest();
    req.open("GET", encodeURI(Xrm.Page.context.getClientUrl() + "/api/data/v9.0/roles?fetchXml=" + encodeURI(fetchxml), false));
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.setRequestHeader("OData-MaxVersion", "4.0");
    req.setRequestHeader("OData-Version", "4.0");
    req.onreadystatechange = function () {
        if (this.readyState == 4) {
            req.onreadystatechange = null;
            if ((this.status == 204) || (this.status == 200)) {
                if (JSON.parse(this.response).value.length > 0) {
                    var data = JSON.parse(this.response).value;
                    var systemuserid = data[0]["b.systemuserid"].toString();
                    //var arr = new Array();
                    //arr[0] = new Object();
                    //arr[0].id = "{" + systemuserid + "}";
                    //arr[0].name = "textValue";
                    //arr[0].entityType = "systemuser";
                    //Xrm.Page.getAttribute(targetfieldname).setValue(arr);

Xrm.WebApi.retrieveRecord("systemuser", systemuserid, "?$select=fullname").then(
                        function success(result) {
                            console.log("Retrieved values: Name: " + result.name + ", Revenue: " + result.revenue);
                            var arr = new Array();
                            arr[0] = new Object();
                            arr[0].id = "{" + systemuserid + "}";
                            arr[0].name = result.fullname;
                            arr[0].entityType = "systemuser";
                            Xrm.Page.getAttribute(targetfieldname).setValue(arr);
                        },
                        function (error) {
                            console.log(error.message);
                            // handle error conditions
                        }
                    );
                    //
                }
                else {
                    Xrm.Page.getAttribute("new_executivedeliverymanager").setValue(null);
                }
            }
            else {
                var error = JSON.parse(this.response).error;
            }
        }
    };
    req.send();

}

//执行各业务部门查找列表   ----webapi新的使用方式
function businessFilter(selectedFieldName, parentFieldName) {
    var businessUnitFilter;
    var parentFieldValue = Xrm.Page.getAttribute(parentFieldName).getValue();
    if (parentFieldValue != null) {
        if (selectedFieldName == "new_businessline") {
            businessUnitFilter = "<filter type='and'>"
                + "<condition attribute='parentbusinessunitid' operator='eq' value='" + parentFieldValue[0].id + "'/>"
                + "<condition attribute='name' operator='like' value='%业务线%' />"
                + "</filter>";
        }
        else {
            businessUnitFilter = "<filter type='and'>"
                + "<condition attribute='parentbusinessunitid' operator='eq' value='" + parentFieldValue[0].id + "'/>"
                + "</filter>";
        }
    }
    else {
        businessUnitFilter = "<filter type='and'>"
            + "<condition attribute='parentbusinessunitid' operator='eq' value='00000000-0000-0000-0000-000000000000'/>"
            + "</filter>"
    }

Xrm.Page.getControl(selectedFieldName).addCustomFilter(businessUnitFilter, 'businessunit');
}

dynamics crm 常用js相关推荐

  1. Microsoft Dynamics CRM 常用JS语法(已转成vs2017语法提示)

    背景 最近接触到Microsoft Dynamics CRM的开发.前端js是必不可少的部分,奈何没有一个语法提示,点不出来后续的语句. 在vscode上面搜索插件的时候发现,有一个大神写的插件htt ...

  2. Dynamics CRM 365 JS 语法使用

    CRM字段类型: 货币:new Money(Decimal){SQL更新Money类型字段,需要同时更新_base字段,存在汇率差的时候值不同} 查找:new EntityReference(obje ...

  3. Microsoft Dynamics CRM 2011 JS操作集锦

    1.Xrm.Page.context 用户ID:getUserId() 用户角色:getUserRoles() 用户语言:getUserLcid() 组织名称:getOrgUniqueName() 组 ...

  4. Dynamics CRM中跨域调用Web API 2

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复224或者20160611可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...

  5. Dynamics CRM - 如何修复 Access Is Denied,ObjectTypeCode: 2500 的错误

    最近被 Dynamics CRM 的权限配置问题恶心了一个星期,老是报"Access Is Denied",几经波折,最后终于找到一个比较合适的解决方案,写个博客 mark 下来, ...

  6. Dynamics CRM: 表单(Form)中的显示字段变成只读的几种情况

    有的时候,当我们打开一条记录, 我们会发现这条记录或者记录中的某个字段变成了不可编辑的状态, 但让表单中的显示字段变成只读的情况有很多, 你可以使用JS代码中的setDisabled, 也可以使用系统 ...

  7. Microsoft Dynamics CRM(一)——解决方案(Solution)

    目录 1. 解决方案 (1)非托管解决方案(Unmanaged) (2)托管解决方案(Managed) 2. 解决方案常用组件 3. 更改默认发布商的解决方案发布商前缀 修改解决方案发布商前缀 3. ...

  8. Dynamics CRM Xrm.Page模型

    在Dynamics CRM 中编写JS时,将于Xrm.Page 命名空间的对象交互 context:执行上下文 data:数据 entity:实体 // 获取包含显示页面,记录.保存方法.窗体所有属性 ...

  9. 为Dynamics CRM的Office附件注释定制个无需下载即可在线查看的功能

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复164或者20151021可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 上一篇博客: 为Dynamics ...

最新文章

  1. centos7 选定默认启动内核,及删除无用内核
  2. WeX5 -- xcode7+iphone免费帐号打包详解
  3. PAT甲级1075 PAT Judge:[C++题解]排序、结构体
  4. Nginx学习笔记(七) 创建子进程
  5. Md5 Md5实现原理
  6. 大数据基础系列 5:Hadoop 实验——熟悉常用的 HDFS 目录操作和文件操作
  7. Debian/Ubuntu系统下,apt-get update 、apt-get upgrade 、apt-get dist-upgrade 命令之间的区别
  8. 【“互联网+”大赛华为云赛道】API命题攻略:厘清三步解题思路,用好开发工具
  9. LeetCode Assign Cookies
  10. opencv-api boxPoints
  11. java 时间格式化 星期_Java SimpleDateFormate时间格式化
  12. 冯诺依曼提出的三个计算机改进理论,冯诺依曼体系结构的计算机..docx
  13. C语言函数 bzero
  14. Git的author与committer的区别
  15. c++thread里暂停线程_C语言如何正确的终止正在运行的子线程
  16. 20201110提莫攻击
  17. 李宏毅机器学习课程自测练习题
  18. 柔性电子: Triboelectric Nanogenerator摩擦生电
  19. 【Unity3D应用案例系列】答题系统开发
  20. codeblocks编译出错问题的解答!(编译c++ 或者c程序)

热门文章

  1. Vue 点击获得父元素,子元素,兄弟元素(DOM操作)
  2. Mysql8.0.17压缩包安装——超详细简单教程
  3. bch纠错码 码长8_密码学BCH纠错编码算法
  4. 小说作者推荐:休屠城合集
  5. C++三角定位法求两圆交点坐标
  6. win7计算机自动关机设置在哪里设置方法,Win7小技巧:自动关机怎么设置?
  7. java中画幅相机推荐_比全画幅更大 平民中画幅相机推荐
  8. 字母序列号生成 A...Z..AA..ZZ....
  9. 无人机编程donekit及通讯(一)
  10. 关于RPC框架封装时ThreadPool的选型和设计