Получить все значения 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
, замените его правильным типом, найденным на предыдущей странице. Это возвращает список всех возможных значений для набора параметров (как текстовые, так и числовые значения).