Valor específico de consulta na matriz de uma entidade de metadados no Dynamics 365

Aug 19 2020

Estou tentando evitar a iteração por meio desse array, mas imagino que seja a única maneira de lidar com isso. Apenas ver se há uma maneira de consultar diretamente esse valor na matriz do URI da API da web.

Este é o exemplo de URI:

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

E este é um exemplo da resposta:

{
    "@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
                }
            }
        }
    ]
}

Basicamente, tenho o "Value": 799680006que é o que desejo adicionar de alguma forma aos parâmetros de consulta URI, para que possa finalmente obter "Label": "ABC123".

Alguma sugestão ou está iterando através da matriz de objetos com if Value = xrealmente a única opção?

Respostas

1 ArunVinoth Aug 19 2020 at 05:50

Deixe-me esclarecer duas coisas:

  1. Consultar metadados como você está usando GlobalOptionSetDefinitionspara obter todos os rótulos localizados se você tiver vários pacotes de idiomas ou para verificar personalizações ou para fins de implantação de Devops é uma coisa
  2. Obter o rótulo para o valor da lista de opções selecionado em um dos registros do banco de dados de transações é outro propósito

Se você simplesmente precisa para um segundo propósito, pode obtê-lo selecionando o valor Formatado, após adicionar um cabeçalho na solicitação da API da web. Leia mais na minha resposta SO

Outra maneira de inspecionar o rótulo é usando a entidade stringmap.

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