Получить все значения OptionSet, используя OData в Dynamics CRM

Я довольно новичок в динамике CRM. Я строю приложение, которое должно обновить сущность в Dynamics CRM. Я могу обновлять простые типы без каких-либо проблем. Теперь ситуация такова, что я объявил несколько пользовательских наборов опций в объекте Contact.

Есть ли способ получить все возможные значения Option Set (текст и значение), чтобы мое приложение могло найти подходящее значение и установить его в полезной нагрузке, которую оно генерирует?

Я не могу найти конечную точку в WebAPI так же как XRMServices/2011/OrganizationData.svc, Любая помощь будет действительно потрясающей.

5 ответов

Решение

Для извлечения метаданных и моделей данных в Microsoft Dynamics CRM можно использовать либо веб-API, либо службу организации. Проверьте подстатьи этого для конкретных примеров и деталей.

Пример веб-API Запрос атрибутов EntityMetadata.

Следующий запрос вернет только атрибуты PicklistAttributeMetadata и будет включать LogicalName, а также расширять свойства навигации, имеющие значения коллекции OptionSet и GlobalOptionSet.

GET [Organization URI]/api/data/v8.1/EntityDefinitions(70816501-edb9-4740-a16c-6a5efbc05d84)/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?$select=LogicalName&$expand=OptionSet,GlobalOptionSet

Другой вариант - получить данные через объект StringMap:

[Organization URI]/api/data/v9.1/stringmaps?fetchXml=<fetch><entity name='stringmap'><filter><condition attribute='objecttypecodename' operator='in'><value>account</value><value>opportunity</value></condition></filter></entity></fetch>

Предоставит данные, которые выглядят так:

{
"@odata.etag": "W/\"406742363\"",
"value": "Open",
"attributename": "statecode",
"langid": 1033,
"objecttypecode": "opportunity",
"attributevalue": 0,
"stringmapid": "0fe09734-3914-e711-80ef-e0071b6a7121",
"organizationid": "f95718b2-5c63-46df-adc3-c3b546cf686a",
"displayorder": 1
},
{
"@odata.etag": "W/\"406742364\"",
"value": "Won",
"attributename": "statecode",
"langid": 1033,
"objecttypecode": "opportunity",
"attributevalue": 1,
"stringmapid": "10e09734-3914-e711-80ef-e0071b6a7121",
"organizationid": "f95718b2-5c63-46df-adc3-c3b546cf686a",
"displayorder": 2
},

Более простой запрос:

[Organization URI]/api/data/v9.1/stringmaps?$filter=objecttypecode eq 'account' or objecttypecode eq 'opportunity'

Используйте приведенный ниже код, чтобы получить определенный набор параметров для конкретной сущности: (замените EntityLogicalName и AttributeLogicalName вашими входными параметрами)

GET [Organization URI]/api/data/v9.1/EntityDefinitions(LogicalName='EntityLogicalName')/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?$select=LogicalName&$expand=OptionSet($select=Options),GlobalOptionSet($select=Options)&$filter=LogicalName eq 'AttributeLogicalName'

Если ваши параметры являются глобальными, это самый простой способ получить все параметры:

      /api/data/v9.1/GlobalOptionSetDefinitions(Name='new_category')

Во-первых, вам нужно имя и тип атрибута, которые вы можете найти здесь:

      /api/data/v9.1/EntityDefinitions(LogicalName='myEntity')?$select=LogicalName&$expand=Attributes($select=LogicalName)

Замените вышеуказанное на имя вашего объекта. На получившейся странице перечислены все атрибуты, из которых состоит ваша сущность. Найдите нужный атрибут набора параметров и запишите его логическое имя и тип.

Вооружившись этой информацией, идите сюда:

      /api/data/v9.1/EntityDefinitions(LogicalName='myEntity')/Attributes(LogicalName='myAttribute')/Microsoft.Dynamics.CRM.MultiSelectPicklistAttributeMetadata?$select=LogicalName&$expand=OptionSet($select=Options),GlobalOptionSet($select=Options)

ЗаменятьmyEntityиmyAttributeс именем вашей сущности и именем атрибута соответственно. Если ваш тип атрибута неMultiSelectPicklistAttributeMetadata, замените его правильным типом, найденным на предыдущей странице. Это возвращает список всех возможных значений для набора параметров (как текстовые, так и числовые значения).

Другие вопросы по тегам