Есть ли способ применить фильтр при использовании saveQuery в Dynamics CRM Web API?
Есть ли способ применить фильтр при использовании saveQuery? Например, если сохраненное / предварительно определенное представление возвращает несколько учетных записей, например, со следующим URL-адресом ".../api/data/v9.0/accounts? SaveQuery=9e3ddee9-9e74-e811-a95d-000d3a34afa9", существует способ вернуть результаты одного и того же сохраненного представления для одной учетной записи?
1 ответ
Решение
Вы можете отправить выборочный XML в Web API. Просто загрузите XML для просмотра через расширенный поиск. Вот пример в javascript:
var accountFetchXML = ['< fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">' +
'< entity name="account">' +
'< attribute name="name" />' +
'< filter type="and">' +
'< condition attribute="industrycode" operator="not-null" />' +
'</ filter>' +
'< link-entity name="contact" from="contactid" to="primarycontactid" visible="false" link-type="outer" alias="prmContact">' +
'< attribute name="telephone3" />' +
'< attribute name="description" />' +
'</ link-entity>' +
'</ entity>' +
'</ fetch>'].join('');
var encodedFetchXML = encodeURIComponent(accountFetchXML);
var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.2/accounts?fetchXml=" + encodedFetchXML, true);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Prefer", "odata.include-annotations=\"OData.Community.Display.V1.FormattedValue\"");
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 accountDetails = results.value[i];
//Single Line Text
var nameValue = accountDetails['name'];
}
}
else {
alert(this.statusText);
}
}
};
req.send();