2016-07-08 1 views
2

У меня есть три объекта - 1. «Регистрация» 2. «Событие» 3. «Категория события»Динамика crm с использованием odata для извлечения указателя из «type: Microsoft.Crm.Sdk.Data.Services.EntityReference»

При сохранении регистрационной записи я хотел бы использовать указатель «события», выбранный для извлечения указателя соответствующей «категории событий». Я считаю, что проблема с поиском «категории событий» - это потому, что поиск категории событий - это EntityReference. Я не уверен, как построить мой запрос odata, чтобы получить только руководство по категории событий.

Мой код для создания OData URL выглядит следующим образом:

function getAssociatedEventId() { 
var eventId = getEventId(); 
retrieveMultiple("new_eventclassSet", "?$select=new_EventCategoryId&$expand=new_new_eventcategory_new_eventclass/new_eventcategoryId&$filter=new_eventclassId eq (guid'" + eventId + "')", findEventQuestions, null, null); 
} 

function retrieveMultiple(odataSetName, filter, successCallback, errorCallback, _executionObj) { 

var serverUrl = Xrm.Page.context.getClientUrl(); 
var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc"; 

var odataUri = serverUrl + ODATA_ENDPOINT + "/" + odataSetName; 
if (filter) { 
odataUri += filter; 
} 

Сначала я получить идентификатор события через яваскрипта функции в веб-ресурсе, а затем я надеюсь использовать, чтобы получить идентификатор от категории события, связанной с событием. Когда мой код работает, он вызывает функцию successCallback, но данные возвращаются «undefined». Я считаю, что это связано с тем, что ответ данных, который я получаю с использованием построенного мной URL-адреса, возвращает ссылку на сущность. Я не уверен, как создать URL-адрес, чтобы указать идентификатор. Я включил изображение вкладки «ответ» с консоли разработчика. Надеюсь, это поможет. Большое спасибо за любой вклад.

Data Response from Developer's Console

+0

Ответ просто сериализуется, тип возврата совпадает с отношением (1: N), которое относится к типу EntityReference, почему бы вам не разобрать JSON и не прочитать значение «Id»? – dynamicallyCRM

ответ

0

Возвращение в EntityReference является нормальным и ожидаемым. Просто извлеките Id, например. EntityReference.Id, то есть Guid вашей записи.

+0

Спасибо за ваш ответ. Я не знаю, где извлечь идентификатор? Я использую вызов jQuery ajax для извлечения данных. Моя текущая функция successCallback выглядит следующим образом (просто пытаюсь проверить, что данные определены): 'function findRegQuestions (data, textStatus, XmlHttpRequest) { var totalCount = данные [0] .new_EventCategoryId.results.length; document.getElementById ("regQuestions"). InnerText = totalCount; } '. Жирная линия - это то место, где я запутался, думаю. Я использую «new_EventCategoryId», потому что это то, что я выбираю в своем фильтре. Я попробовал «EntityReference.Id» до результатов безрезультатно. –

0

Если служба OData имеет версии протокола V4, правильный URL запрос должен быть:

$filter=new_eventclassId/Id eq 4c2c1c1e-1838-42ca-b730-399816de85f8 

Обратите внимание на отсутствие одинарные кавычки вокруг Guid.