Я бы воздержался от использования формы XrmServiceToolkit.Soap.Fetch
, так как вам придется добавить стороннюю библиотеку для ее использования, а SOAP не поддерживается в последней версии. Вместо этого я бы посоветовал использовать Webapi, поскольку это поддерживаемый и самый простой способ извлечения данных.
Вот ссылка, которая предоставит вам более подробную информацию о вызовах Webserevice в D365 crm.
Ниже я попытался извлечь все контакты для определенного идентификатора учетной записи, например: У учетной записи 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);
}
);