Получить EntityReference от Organization-Service, используя oDATA REST и JavaScript - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь получить информацию от клиента об ответе на кампанию в Dynamics CRM 2016 (локальная версия). Поскольку я нахожусь в форме объекта, я хочу использовать JavaScript для запросов REST.

Получение информации об ответе кампании не является проблемой. Однако в ответе XML PartyId имеет тип EntityReference

... <!-- more XML omitted -->
<d:PartyId m:type="Microsoft.Crm.Sdk.Data.Services.EntityReference">
          <d:Id m:type="Edm.Guid">13cb3e39-46c5-e711-80ce-005056a04f81</d:Id>
          <d:LogicalName>contact</d:LogicalName>
          <d:Name>Jane Doe</d:Name>
          <d:RowVersion m:null="true" />
        </d:PartyId>
...<!-- more XML omitted -->

Так что теперь проблема в том, что я не могу напрямую запросить динамику для контакта, используя

https://example.com/OrganizationName/XRMServices/2011/OrganizationData.svc/contactSet(guid'13cb3e39-46c5-e711-80ce-005056a04f81')

I получить следующую ошибку

<error>
<code/>
<message xml:lang="de-DE">Resource not found for the segment 'contactSet'.</message>
</error>

, потому что это EntityReference.

Кажется, что конечная точка не похожа на

https://example.com/OrganizationName/XRMServices/2011/OrganizationData.svc/EntityReferenceSet(guid'13cb3e39-46c5-e711-80ce-005056a04f81')

Я могу не выяснить, как получить цель ссылки на сущность, используя REST и Javascript. Кто-нибудь знает, как это сделать?

Что я знаю из C# фреймворка, так это то, что EntityReference - это только Контейнер, который содержит реальную информацию о ссылочной сущности. Таким образом, идентификатор, который задается как

<d:PartyId m:type="Microsoft.Crm.Sdk.Data.Services.EntityReference">
          <d:Id m:type="Edm.Guid">13cb3e39-46c5-e711-80ce-

, является только идентификатором EntityReference и должен быть преобразован в реальный идентификатор объекта контактов. Но как?

Ответы [ 2 ]

1 голос
/ 25 марта 2020

Вы должны иметь возможность запрашивать объекты, используя конечную точку OData:

https://example.com/OrganizationName/api/data/v8.0/contacts(13cb3e39-46c5-e711-80ce-005056a04f81)

или WCF \ SOAP

https://example.com/OrganizationName/XRMServices/2011/OrganizationData.svc/ContactSet(guid'13cb3e39-46c5-e711-80ce-005056a04f81')

Обе ссылки работают правильно в D365 v9 on-prem. Но у меня нет env для тестирования непосредственно на CRM 2016.

1 голос
/ 23 марта 2020

URL-адрес OData чувствителен к регистру, поэтому вместо contactSet используйте ContactSet для получения результата.

https://example.com/OrganizationName/XRMServices/2011/OrganizationData.svc/ContactSet(guid'13cb3e39-46c5-e711-80ce-005056a04f81')
...