Иногда возникает необходимость отобразить данные из 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

НазваниеТипОписание
IdStringИдентификатор GUID записи
TypeStringНазвание сущности
SelectStringСписок имен атрибутов для получения
ExpandStringСписок связанных сущностей
SuccessCallbackFunctionФункция вызываемая в случае успешного выполнения
ErrorCallbackFunctionФункция вызываемая в случае возникновения ошибки выполнения

Важные особенности:

  • Функции SuccessCallback и ErrorCallback должны принимать параметр возвращаемой записи и объекта ошибки соответственно.
  • Называние сущности записывается с постфиксом Set.
  • Настоятельно не рекомендуется передавать в select пустую строку, так как это вызовет получения абсолютно всех полей сущности, что может существенно замедлить работу приложения.

RetrieveMultiple

НазваниеТипОписание
TypeStringНазвание сущности
OptionsStringПараметры выбираемых атрибутов и фильтрации
SuccessCallbackFunctionФункция вызываемая в случае успешного выполнения
ErrorCallbackFunctionФункция вызываемая в случае возникновения ошибки выполнения
OnCompleteFunctionФункция вызываема после загрузки всех записей
AsyncBooleanВыполнение функции асинхронно

Важные особенности:

  • Функции SuccessCallback и ErrorCallback должны принимать параметр возвращаемой записи и объекта ошибки соответственно.
  • Называние сущности записывается с постфиксом Set.
  • Настоятельно не рекомендуется передавать в select пустую строку, так как это вызовет получения абсолютно всех полей сущности, что может существенно замедлить работу приложения.
  • Имена загружаемых атрибутов передаются в формате $select=имена. Параметры фильтрации передаются в формате $filter=атрибут условие значение. Объединение условий выполняется с помощью оператора &. Например $select=new_code,new_caseId&$filter= new_code ne null