Иногда возникает необходимость отобразить данные из CRM в html-ресурсе, встроенном в форму. Эту задачу достаточно легко реализовать при помощи специализированной JavaScript библиотеки XrmServiceToolkit.
Для начала нам необходимо создать и добавить на форму html-ресурс. Подробнее об этом можно прочитать в статье Добавление HTML Web Resources в Microsoft Dynamic CRM.
Все что нам нужно чтобы получить данные из CRM это изменить внутреннюю структуру 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 loadCase() { var re; XrmServiceToolkit.Rest.Retrieve( "{F6D27954-F5A4-E711-80D3-00155D0005EA}", "new_caseSet", "new_code,new_caseId", null, function (result) { re = result; document.getElementById("content").innerHTML = "Загружен случай " + re.new_code + " с идентификатором " + re.new_caseId + ""; }, function (error) { alert("Ошибка загрузки случая"); }, false ); } function loadCases() { var re; var options = "new_code,new_caseId"; XrmServiceToolkit.Rest.RetrieveMultiple( "new_caseSet", "$select=new_code,new_caseId", function (result) { re = result; document.getElementById("content").innerHTML = "Получено " + re.length + " случаев"; }, function (error) { alert("Ошибка загрузки случаев"); }, function onComplete() { }, false ); } </head> <body onload="loadCase()"> <button onclick="loadCases()">Загрузить</button> <p id="content"></p> </body> </html>
Соответственно при загрузке страницы мы вызываем метод loadCase, а при нажатии на кнопку метод loadCases.
Теперь рассмотрим код более подробно.
Обратите внимание, что для корректной работы необходимо подключить три библиотеки XrmServiceToolkit, jquery и json2, при этом проверьте правильность указанного пути.
Далее у нас идет секция скриптов, в которой созданы две функции получения одной записи и получения нескольких записей.
В теле html-страницы у нас есть абзац в котором отображаются результаты выполнения функций и кнопка для вызова функции получения нескольких записей. Получение одной записи выполняется при загрузке страницы.
Retrieve
Название | Тип | Описание |
Id | String | Идентификатор GUID записи |
Type | String | Название сущности |
Select | String | Список имен атрибутов для получения |
Expand | String | Список связанных сущностей |
SuccessCallback | Function | Функция вызываемая в случае успешного выполнения |
ErrorCallback | Function | Функция вызываемая в случае возникновения ошибки выполнения |
Важные особенности:
- Функции SuccessCallback и ErrorCallback должны принимать параметр возвращаемой записи и объекта ошибки соответственно.
- Называние сущности записывается с постфиксом Set.
- Настоятельно не рекомендуется передавать в select пустую строку, так как это вызовет получения абсолютно всех полей сущности, что может существенно замедлить работу приложения.
RetrieveMultiple
Название | Тип | Описание |
Type | String | Название сущности |
Options | String | Параметры выбираемых атрибутов и фильтрации |
SuccessCallback | Function | Функция вызываемая в случае успешного выполнения |
ErrorCallback | Function | Функция вызываемая в случае возникновения ошибки выполнения |
OnComplete | Function | Функция вызываема после загрузки всех записей |
Async | Boolean | Выполнение функции асинхронно |
Важные особенности:
- Функции SuccessCallback и ErrorCallback должны принимать параметр возвращаемой записи и объекта ошибки соответственно.
- Называние сущности записывается с постфиксом Set.
- Настоятельно не рекомендуется передавать в select пустую строку, так как это вызовет получения абсолютно всех полей сущности, что может существенно замедлить работу приложения.
- Имена загружаемых атрибутов передаются в формате $select=имена. Параметры фильтрации передаются в формате $filter=атрибут условие значение. Объединение условий выполняется с помощью оператора &. Например $select=new_code,new_caseId&$filter= new_code ne null