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关系的架构名称。


  • 相关阅读:
    An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling
    Multi-attention Network for One Shot Learning
    Visual Question Answering with Memory-Augmented Networks
    Tutorial on word2vector using GloVe and Word2Vec
    论文笔记:Tracking by Natural Language Specification
    论文笔记:Semantic Segmentation using Adversarial Networks
    论文笔记:Attention Is All You Need
    论文笔记:Capsules for Object Segmentation
    美国签证申请流程
    论文笔记:Diffusion-Convolutional Neural Networks (传播-卷积神经网络)
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6205822.html
Copyright © 2011-2022 走看看