当我仅使用属性时,我的提取工作正常,但是当我添加链接实体或进行过滤时,它不起作用。这是链接代码。请帮助找到我的错误!
这两个实体与发票中的名称字段和发票行中的发票字段相关。
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);
我需要从发票中获取名称和客户,并从发票行中获取金额。
答案 0 :(得分:0)
我将避免使用Microphone.h
表单,因为您必须添加第三方库才能使用它,并且最新版本不支持SOAP,相反,我建议使用Webapi,因为这是支持的方式和最简单的数据获取方式
这里的链接将为您提供D365 crm中的Webserevice呼叫详细信息。
以下,我尝试获取特定帐户ID的所有联系人, 例如:帐户A有3个与之关联的联系人,而我要提取所有3个联系人。
这是示例代码。
XrmServiceToolkit.Soap.Fetch
还有一种使用以下较小代码调用webapi的全新方法
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();