Dynamics365のメタデータエンティティから配列内の特定の値をクエリする

Aug 19 2020

この配列を反復処理することは避けようとしていますが、これを処理する唯一の方法だと思います。Web APIURIから配列内のこの値を直接クエリする方法があるかどうかを確認するだけです。

これはURIの例です:

https://example.crm.dynamics.com/api/data/v9.0/GlobalOptionSetDefinitions(f4a9de67-1d00-ea11-a811-000d3a33f702)

そして、これは応答の例です:

{
    "@odata.context": "https://example.crm.dynamics.com/api/data/v9.0/$metadata#GlobalOptionSetDefinitions/Microsoft.Dynamics.CRM.OptionSetMetadata/$entity",
    "MetadataId": "f4a9de67-1d00-ea11-a811-000d3a33f702",
    "Options": [
        {
            "Value": 799680006,
            "Color": "#0000ff",
            "IsManaged": false,
            "ExternalValue": "",
            "ParentValues": [],
            "MetadataId": null,
            "HasChanged": null,
            "Label": {
                "LocalizedLabels": [
                    {
                        "Label": "ABC123",
                        "LanguageCode": 1033,
                        "IsManaged": false,
                        "MetadataId": "b4eb2c69-b500-ea11-a811-000d3a33fe19",
                        "HasChanged": null
                    }
                ],
                "UserLocalizedLabel": {
                    "Label": "ABC123",
                    "LanguageCode": 1033,
                    "IsManaged": false,
                    "MetadataId": "b4eb2c69-b500-ea11-a811-000d3a33fe19",
                    "HasChanged": null
                }
            }
        }
    ]
}

基本的に、私は"Value": 799680006URIクエリパラメータに何とかして追加したいものを持っているので、最終的にを取得できます"Label": "ABC123"

何か提案がありif Value = xますか、それとも本当に唯一のオプションでオブジェクトの配列を反復していますか?

回答

1 ArunVinoth Aug 19 2020 at 05:50

2つのことを明確にしましょう。

  1. GlobalOptionSetDefinitions複数の言語パックがある場合、カスタマイズの検証、またはDevopsデプロイメントの目的で、すべてのローカライズされたラベルを取得するために使用しているようなメタデータをクエリすることは1つのことです
  2. トランザクションデータベースレコードの1つで選択した選択リスト値のラベルを取得することは別の目的です

単に2番目の目的が必要な場合は、Web APIリクエストにヘッダーを追加した後、Formatted値を選択することで取得できます。私のSOの答えでもっと読む

ラベルを検査する別の方法は、stringmapエンティティを使用することです。

https://crmdev.crm.dynamics.com/api/data/v9.1/stringmaps?$filter=objecttypecode eq 'account' and attributename eq 'accountclassificationcode' and attributevalue eq 1