我会避免使用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);
}
);