我对 Dynamics CRM 很陌生。我正在构建一个应该更新 Dynamics CRM 中的实体的应用程序。我可以毫无问题地更新简单类型。现在的情况是,我在 Contact 实体中声明了一些自定义选项集。
有没有办法检索所有可能的 OptionSet 值(文本和值),以便我的应用程序可以查找适当的值并将其设置在它生成的有效负载中?
我找不到任何端点WebAPI
以及XRMServices/2011/OrganizationData.svc
. 任何帮助都会非常棒。
我对 Dynamics CRM 很陌生。我正在构建一个应该更新 Dynamics CRM 中的实体的应用程序。我可以毫无问题地更新简单类型。现在的情况是,我在 Contact 实体中声明了一些自定义选项集。
有没有办法检索所有可能的 OptionSet 值(文本和值),以便我的应用程序可以查找适当的值并将其设置在它生成的有效负载中?
我找不到任何端点WebAPI
以及XRMServices/2011/OrganizationData.svc
. 任何帮助都会非常棒。
您可以使用 Web API 或组织服务来检索Microsoft Dynamics CRM 中的元数据和数据模型。查看该文章的子文章以获取具体示例和详细信息。
Web 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')