zoukankan      html  css  js  c++  java
  • Dynamics CRM2016 Web API之Expand related entities & $ref & $count

          本篇介绍两个关于1:N关系中通过主实体取关联子实体的api,这两个api会经常被用到而且比原来的odata方式更加方便,之前如果我们要取主实体下所有的关联实体的记录都是通过Retrieve Multiple的方式。

        直接上代码,注意url最后的写法

     var req = new XMLHttpRequest()
        req.open("get",Xrm.Page.context.getClientUrl() + "/api/data/v8.0/accounts("
    +Xrm.Page.data.entity.getId().replace('{', '').replace('}', '')
    +")?$expand=contact_customer_accounts" , 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) {
                if (this.status == 200) {
                    var data=JSON.parse(this.responseText).value;
                }
                else {
                    var data=JSON.parse(this.responseText).error.message;
                }
            }
        };
        req.send();


    通过下面的截图就能看到,取出了客户下面的联系人记录,默认取出了记录中的所有属性字段,要取特定字段加上select即可?$expand=contact_customer_accounts($select=name)


    而下面的截图中没加?$expand=contact_customer_accounts则只取了account实体记录而没有contact


          也可以通过如下代码取到客户下所有的关联联系人,返回的是包含联系人guid的url。

    其中核心的url:/accounts("+Xrm.Page.data.entity.getId().replace('{', '').replace('}', '')+")/contact_customer_accounts/$ref,这里主要用到了$ref,还有一个$count 可以计算出客户下关联的联系人的总数。

     var req = new XMLHttpRequest()
        req.open("get",Xrm.Page.context.getClientUrl() + "/api/data/v8.0/accounts("
    +Xrm.Page.data.entity.getId().replace('{', '').replace('}', '')
    +")/contact_customer_accounts/$ref" , 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) {
                if (this.status == 200) {
                    var data=JSON.parse(this.responseText).value;
                }
                else {
                    var data=JSON.parse(this.responseText).error.message;
                }
            }
        };
        req.send();





        上文中反复出现的连接客户和联系人的关系contact_customer_accounts是怎么来的,这可不是客户中的属性字段哦,具体看下面截图,是客户和联系人1:N关系的架构名称。


  • 相关阅读:
    Elementary Methods in Number Theory Exercise 1.2.25
    Elementary Methods in Number Theory Exercise 1.2.14
    图解欧几里德算法
    图解欧几里德算法
    Elementary Methods in Number Theory Exercise 1.2.14
    Android中的长度单位详解(dp、sp、px、in、pt、mm)
    分享下多年积累的对JAVA程序员成长之路的总结
    android异常之都是deamon惹的祸The connection to adb is down, and a severe error has occured.
    TomatoCartv1.1.8.2部署时报错
    JavaScript浏览器对象之二Document对象
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6205822.html
Copyright © 2011-2022 走看看