【问题标题】:I'm trying to fetch Invoices entity linked with Invoiceline entity ,and I get no result我正在尝试获取与 Invoiceline 实体链接的 Invoices 实体,但没有得到任何结果
【发布时间】:2019-06-30 17:53:45
【问题描述】:

当我只使用属性时,我的 fetch 工作正常,但是当我添加链接实体或过滤时它不起作用。这是链接代码。请帮忙找出我的错误!

这两个实体与 Invoice 中的 name 字段和 invoiceline 中的 invoice 字段相连。

    var fetchInvoices = '<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">';
        fetchInvoices += '<entity name="hms_invoice">';
        fetchInvoices += '<attribute name="hms_name"/>';
        fetchInvoices += '<attribute name="hms_customer" />';
        fetchInvoices += '<link-entity name="hms_invoiceline" from="hms_invoice" to="hms_name">';
        fetchInvoices += '<attribute name="hms_amount" />';
        fetchInvoices += '</link-entity>';
        fetchInvoices += '</entity>';
        fetchInvoices += '</fetch>';

    var invoices = XrmServiceToolkit.Soap.Fetch(fetchInvoices);
    alert(invoices.length);

我需要从发票中获取姓名和客户,并从发票行中获取金额。

【问题讨论】:

    标签: javascript dynamics-365 fetchxml


    【解决方案1】:

    我会避免使用XrmServiceToolkit.Soap.Fetch,因为您必须添加第三方库才能使用它,并且最新版本不支持 SOAP,相反,我建议使用 Webapi,因为这是获取数据的受支持方式和最简单的方式。

    这里的链接将为您提供更多关于 D365 crm 中 Web 服务调用的详细信息。

    下面我尝试获取特定帐户 ID 的所有联系人, 例如:账户 A 有 3 个联系人链接到它,我正在获取所有 3 个联系人。

    这是它的示例代码。

    var req = new XMLHttpRequest();
    req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v9.1/contacts?$select=_accountid_value,contactid,fullname&$filter=_accountid_value eq 4930FC98-5F75-E911-A83C-000D3A385DD4", true);
    req.setRequestHeader("OData-MaxVersion", "4.0");
    req.setRequestHeader("OData-Version", "4.0");
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
    req.onreadystatechange = function() {
        if (this.readyState === 4) {
            req.onreadystatechange = null;
            if (this.status === 200) {
                var results = JSON.parse(this.response);
                for (var i = 0; i < results.value.length; i++) {
                    var _accountid_value = results.value[i]["_accountid_value"];
                    var _accountid_value_formatted = results.value[i]["_accountid_value@OData.Community.Display.V1.FormattedValue"];
                    var _accountid_value_lookuplogicalname = results.value[i]["_accountid_value@Microsoft.Dynamics.CRM.lookuplogicalname"];
                    var contactid = results.value[i]["contactid"];
                    var fullname = results.value[i]["fullname"];
                }
            } else {
                Xrm.Utility.alertDialog(this.statusText);
            }
        }
    };
    req.send();
    

    还有一种开箱即用的新方法可以用更小的代码调用 webapi,如下所示

    Xrm.WebApi.online.retrieveMultipleRecords("contact", "?$select=_accountid_value,contactid,fullname&$filter=_accountid_value eq 4930FC98-5F75-E911-A83C-000D3A385DD4").then(
        function success(results) {
            for (var i = 0; i < results.entities.length; i++) {
                var _accountid_value = results.entities[i]["_accountid_value"];
                var _accountid_value_formatted = results.entities[i]["_accountid_value@OData.Community.Display.V1.FormattedValue"];
                var _accountid_value_lookuplogicalname = results.entities[i]["_accountid_value@Microsoft.Dynamics.CRM.lookuplogicalname"];
                var contactid = results.entities[i]["contactid"];
                var fullname = results.entities[i]["fullname"];
            }
        },
        function(error) {
            Xrm.Utility.alertDialog(error.message);
        }
    );
    

    【讨论】:

      猜你喜欢
      • 2019-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-16
      • 1970-01-01
      • 2012-03-29
      • 2013-03-20
      • 2023-03-31
      相关资源
      最近更新 更多