У сущности «Пользователь» (systemuser) в Microsoft Dynamics CRM есть возможность добавить других пользователей в качестве помощников. Давайте рассмотрим возможность получения списка помощников пользователя с помощью JavaScript.
Для начала создадим JavaScript ресурс и загрузим его в CRM. Подробнее о добавлении ресурсов можно прочитать в Добавление HTML Web Resources в Microsoft Dynamics CRM. Ниже приведена асинхронная функция, выполняющая запрос к веб api экземпляра Dynamics CRM. Она получает список всех помощников пользователя, чей идентификатор был передан в функцию. В случае возникновении ошибки создает исключение. Обратите внимание, что для работы скрипта необходимо указывать правильный адрес web api CRM. Найти его можно Параметры -> Настройки -> Ресурсы для разработчиков
/** * Получить помощников * @param {Guid} userId идентификатор пользователя */ function getAssistant(userId) { return new Promise(function (resolve, reject) { var parameters = {}; var req = new XMLHttpRequest(); req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.1/systemusers(" + userId + ")/Microsoft.Dynamics.CRM.RetrieveAllChildUsersSystemUser", true); req.setRequestHeader("OData-Version", "4.0"); req.setRequestHeader("OData-MaxVersion", "4.0"); req.setRequestHeader("Accept", "application/json"); req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); req.onreadystatechange = function () { if (this.readyState === 4) { req.onreadystatechange = null; if (this.status === 200) { var result = JSON.parse(this.response); if (result && result.value && result.value.length) { resolve(result.value); } } else { reject("Не удалось получить помощников пользователя."); } } }; req.send(JSON.stringify(parameters)); }); }
Теперь рассмотрим вызов данной функции.
function foo() { var id = Xrm.Page.context.getUserId(); getAssistant(id) .then(function (assist) { if (assist) { var message = ""; assist.forEach(function (currentValue, index, array) { message += currentValue.fullname + "\r\n"; }); alert(message); } }) .catch(function (errorData) { console.error(errorData); }); }