Valor específico de consulta na matriz de uma entidade de metadados no Dynamics 365
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": 799680006
que é 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 = x
realmente a única opção?
Respostas
Deixe-me esclarecer duas coisas:
- Consultar metadados como você está usando
GlobalOptionSetDefinitions
para 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 - 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