Consultar valor específico en una matriz de una entidad de metadatos en Dynamics 365

Aug 19 2020

Estoy tratando de evitar iterar a través de esta matriz, pero imagino que es la única forma de manejar esto. Solo veo si hay una forma de consultar directamente este valor en la matriz desde el URI de la API web.

Este es el ejemplo de URI:

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

Y este es un ejemplo de la respuesta:

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

Básicamente, tengo lo "Value": 799680006que es lo que quiero agregar de alguna manera a los parámetros de consulta de URI, para que finalmente pueda obtener "Label": "ABC123".

¿Alguna sugerencia o está iterando a través de la matriz de objetos con if Value = xrealmente la única opción?

Respuestas

1 ArunVinoth Aug 19 2020 at 05:50

Déjame aclarar dos cosas:

  1. Consultar metadatos como los que está utilizando GlobalOptionSetDefinitionspara obtener todas las etiquetas localizadas si tiene varios paquetes de idiomas o para verificar personalizaciones o para el propósito de implementación de Devops es una cosa
  2. Obtener la etiqueta para el valor de la lista de selección seleccionada en uno de los registros de la base de datos de transacciones es otro propósito

Si simplemente necesita un segundo propósito, puede obtenerlo seleccionando el valor Formateado, después de agregar un encabezado en la solicitud de la API web. Leer más en mi respuesta SO

Otra forma de inspeccionar la etiqueta es utilizando la entidad de mapa de cadenas.

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