【问题标题】:Retrieve all OptionSet values using OData in Dynamics CRM在 Dynamics CRM 中使用 OData 检索所有 OptionSet 值
【发布时间】:2017-01-18 12:54:52
【问题描述】:

我对 Dynamics CRM 很陌生。我正在构建一个应该更新 Dynamics CRM 中的实体的应用程序。我可以毫无问题地更新简单类型。现在的情况是,我在 Contact 实体中声明了一些自定义选项集。

是否有任何方法可以检索所有可能的 OptionSet 值(文本和值),以便我的应用程序可以查找适当的值并将其设置在它生成的有效负载中?

我在WebAPIXRMServices/2011/OrganizationData.svc 中找不到任何端点。任何帮助都会非常棒。

【问题讨论】:

    标签: dynamics-crm dynamics-crm-2013 dynamics-crm-webapi


    【解决方案1】:

    如果您的选项是全局的,这是获取所有选项的最简单方法:

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

    【讨论】:

      【解决方案2】:

      另一种选择是通过 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'
      

      【讨论】:

        【解决方案3】:

        使用以下代码获取特定实体特定选项集: (将 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'
        

        【讨论】:

          【解决方案4】:

          您可以使用 Web API 或组织服务来检索 The metadata and data models in Microsoft Dynamics CRM。查看该文章的子文章以获取具体示例和详细信息。

          Web API 示例Querying EntityMetadata attributes

          以下查询将仅返回 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
          

          【讨论】:

          • 这适用于两个选项(AttributeType === 'Boolean'):Microsoft.Dynamics.CRM.BooleanAttributeMetadata
          • 您好,我也是 CRM 新手,也有类似的用例。 1. 上面的查询给了我全局 Optoinset 数据,但不是在实体级别 2 定义的选项集。即使对于全局选项集,我也没有得到所有数据。 3. GUID - 70816501-edb9-4740-a16c-6a5efbc05d84 指定了什么,是通用值吗?如果没有,我在哪里可以得到相应的值。任何进一步详细说明这一点的链接都非常感谢。
          • 更新:能够通过以下方式获得此信息:[组织 URI]/api/data/v8.2/EntityDefinitions(LogicalName='[Entity Name]')/Attributes (LogicalName='[Your Field Name which uses OptionSet]')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?$select=LogicalName&$expand=OptionSet($select=Options),GlobalOptionSet($select=Options)
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-11-11
          • 2023-03-16
          • 2022-07-14
          • 1970-01-01
          • 2019-01-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多