В некоторых случаях возникает необходимость получить данные из CRM используя FetchXML. FetchXML – это специализированный язык запросов, используемый в Microsoft Dynamics 365. Он позволяет сохранять запросы для дальнейшего использования, что в некоторых случаях достаточно удобно.
Для начала нам необходимо сохранить fetch-файл себе на компьютер для дальнейшего использования. Для этого заходим в расширенный поиск.

В открывшимся окне формируем необходимый нам запрос. Пусть для примера это будет получение всех активных случаев. Проверяем правильность составленного запроса нажав кнопку «Результаты».

Получаем следующие корректные данные. После чего возвращаемся во вкладку «Расширенный поиск»

Для сохранения запроса нажимаем кнопку «Загрузить FetchXML»

Открываем скаченный файл блокнотом и наблюдаем примерно следующее:
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false"> <entity name="new_case"> <attribute name="new_caseid" /> <attribute name="new_code" /> <attribute name="createdon" /> <order attribute="new_code" descending="false" /> <filter type="and"> <condition attribute="statecode" operator="eq" value="0" /> </filter> </entity> </fetch>
Далее нам необходимо перевести этот fetch в формат доступный для встраивания его в JavaScript. Это можно сделать руками или же воспользоваться специальной онлайн утилитой FetchXmlFormatter
. Для этого достаточно просто вставить содержимое fetch-файла в верхнее окошко и нажать на среднее, чтобы скопировать форматированный fetch в буфер обмена.

Вставляем получившийся fetch в html-ресурс. Подробнее о добавлении HTML-ресурса можно прочитать в статье Загрузка данных из Microsoft Dynamics 365 в html-ресурс.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Cases</title> http://js/lib/XrmServiceToolkit.min.js http://js/lib/jquery.js http://js/lib/json2.js function createTable(tableData) { var table = document.createElement('table'); table.setAttribute("border", 1); var tableBody = document.createElement('tbody'); fetchXml = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>"+ " <entity name='new_case'>"+ " <attribute name='new_caseid' />"+ " <attribute name='new_code' />"+ " <attribute name='createdon' />"+ " <order attribute='new_code' descending='false' />"+ " <filter type='and'>"+ " <condition attribute='statecode' operator='eq' value='0' />"+ " </filter>"+ " </entity>"+ "</fetch>" var re = XrmServiceToolkit.Soap.Fetch(fetchXml); createTable(re); } </head> <body onload="getCasesFetch()"> </body> </html>
Основная функция getCasesFetch() выполняет создание текстовой переменной в которой сохраняется содержимое Fetch-файла, после чего вызывается Soap функция Fetch библиотеки XrmServiceToolkit, выполняющая получение данных из CRM. Для корректного формирования и отображения результатов запроса добавлена функция createTable(). Отображение данных происходит в момент загрузки формы.
Сохраняем и публикуем изменения. В итоге получаем следующий результат
