Crear y actualizar selecciones (conjuntos de opciones) mediante la API web

Normalmente, usa los conjuntos de opciones global para establecer columnas de tabla de modo que diferentes columnas puedan compartir el mismo conjunto de opciones, que se mantienen en una ubicación. A diferencia de los conjuntos de opciones local que se definen solo para una columna específica, puede reutilizar conjuntos de opciones globales. Estos valores también se usan en los parámetros de solicitudes de manera similar a una enumeración.

Nota

Solo puede cambiar un conjunto de opciones administrado existente si es el editor. Para realizar un cambio, como la opción de cambio de nombre o la opción de eliminación, en estos conjuntos de opciones, se debe realizar una actualización a la solución que agregó el conjunto de opciones. Más información: Actualizar una solución

Cuando define un conjunto de opciones global mediante una solicitud POST en [URI de organización]/api/data/v9.2/GlobalOptionSetDefinitions, se recomienda dejar que el sistema asigne un valor. Deje que el sistema asigne el valor pasando un valor null cuando cree la nueva instancia OptionMetadata. Al definir una opción, contiene un determinada prefijo de valor de opción específico del contexto del editor establecido para la solución en la que se crea el conjunto de opciones. Este prefijo ayuda a reducir la posibilidad de crear conjuntos de opciones duplicados para una solución administrada y en cualquier conjunto de opciones que se definan en entornos donde está instalada la solución administrada. Para obtener más información, consulte Combinar opciones del conjunto de opciones.

Mensajes

La siguiente tabla enumera los mensajes que se pueden usar con los conjuntos de opciones globales.

Publicación Operación de API web
CreateOptionSet Use la solicitud POST para URI de organización/api/data/v9.2/GlobalOptionSetDefinitions.
DeleteOptionSet Use la solicitud DELETE para URI de organización/api/data/v9.2/GlobalOptionSetDefinitions(Name='<name>').
RetrieveAllOptionSets Use la solicitud GET para URI de organización/api/data/v9.2/GlobalOptionSetDefinitions.
RetrieveOptionSet Use la solicitud GET para URI de organización/api/data/v9.2/GlobalOptionSetDefinitions(Name='<name>').

La siguiente tabla enumera los mensajes que se pueden usar con los conjuntos de opciones globales y locales.

Publicación Operación de API web
DeleteOptionValue
Elimina uno de los valores de un conjunto de opciones globales.
Acción DeleteOptionValue
Ejemplo: Opción de eliminación
InsertOptionValue
Inserta una opción en un conjunto de opciones globales.
Acción InsertOptionValue
Ejemplo: Opciones de inserción
InsertStatusValue
Inserta una nueva opción en el conjunto de opciones global usado en la columna Status.
Acción InsertStatusValue
Ejemplo: Insertar un nuevo valor de estado
OrderOption
Cambia el orden relativo de las opciones de un conjunto de opciones.
Acción OrderOption
Ejemplo: Opciones de pedido
UpdateOptionSet Use la solicitud PUT con OptionSetMetadataBase EntityType para [Organization URI]/api/data/v9.2/GlobalOptionSetDefinitions(metadataid)
Solo aquellas propiedades definidas por OptionSetMetadataBase se pueden actualizar. Estas propiedades no incluyen las opciones. Utilice otras acciones para realizar cambios en las opciones.
UpdateOptionValue
Actualiza una opción de un conjunto de opciones.
Acción UpdateOptionValue
Ejemplo: Opciones de actualización
UpdateStateValue
Inserta una nueva opción en el conjunto de opciones usado en la columna Status.
Acción UpdateStateValue

Ejemplos

Creación de un conjunto de opciones global

El siguiente ejemplo usará estas propiedades para crear una opción global.

Propiedades de OptionSetMetadata Valores
Name sample_colors
DisplayName Colores
Description Opción de color
OptionSetType Picklist
Options valor:727000000, etiqueta:Rojo
valor:727000001, etiqueta:Amarillo
valor:727000002, etiqueta:Verde

El siguiente ejemplo crea una opción global usando las propiedades.

El URI para la opción global se devuelve en la respuesta. También puede hacer referencia a esta opción global con el nombre: GlobalOptionSetDefinitions(Name='sample_colors').

Solicitud:

POST [Organization Uri]/api/data/v9.2/GlobalOptionSetDefinitions
MSCRM.SolutionUniqueName: examplesolution
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json
Content-Type: application/json; charset=utf-8
Content-Length: 2769

{
  "@odata.type": "Microsoft.Dynamics.CRM.OptionSetMetadata",
  "Options": [
    {
      "Value": 727000000,
      "Label": {
        "@odata.type": "Microsoft.Dynamics.CRM.Label",
        "LocalizedLabels": [
          {
            "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
            "Label": "Red",
            "LanguageCode": 1033,
            "IsManaged": false
          }
        ],
        "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Red",
          "LanguageCode": 1033,
          "IsManaged": false
        }
      }
    },
    {
      "Value": 727000001,
      "Label": {
        "@odata.type": "Microsoft.Dynamics.CRM.Label",
        "LocalizedLabels": [
          {
            "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
            "Label": "Yellow",
            "LanguageCode": 1033,
            "IsManaged": false
          }
        ],
        "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Yellow",
          "LanguageCode": 1033,
          "IsManaged": false
        }
      }
    },
    {
      "Value": 727000002,
      "Label": {
        "@odata.type": "Microsoft.Dynamics.CRM.Label",
        "LocalizedLabels": [
          {
            "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
            "Label": "Green",
            "LanguageCode": 1033,
            "IsManaged": false
          }
        ],
        "UserLocalizedLabel": {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Green",
          "LanguageCode": 1033,
          "IsManaged": false
        }
      }
    }
  ],
  "Description": {
    "@odata.type": "Microsoft.Dynamics.CRM.Label",
    "LocalizedLabels": [
      {
        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
        "Label": "Color Choice",
        "LanguageCode": 1033,
        "IsManaged": false
      }
    ],
    "UserLocalizedLabel": {
      "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
      "Label": "Color Choice",
      "LanguageCode": 1033,
      "IsManaged": false
    }
  },
  "DisplayName": {
    "@odata.type": "Microsoft.Dynamics.CRM.Label",
    "LocalizedLabels": [
      {
        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
        "Label": "Colors",
        "LanguageCode": 1033,
        "IsManaged": false
      }
    ],
    "UserLocalizedLabel": {
      "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
      "Label": "Colors",
      "LanguageCode": 1033,
      "IsManaged": false
    }
  },
  "Name": "sample_colors",
  "OptionSetType": "Picklist"
}

Respuesta:

HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/GlobalOptionSetDefinitions(1d733907-4d05-ee11-8f6e-000d3a993550)

Cree una columna de elección usando un conjunto de opciones global

El siguiente ejemplo usará estas propiedades para crear una columna de elección usando una opción global.

Propiedades de atributo de lista de selección Valores
SchemaName sample_Colors
DisplayName Colores de muestra
Description Atributo de lista de selección global de colores
RequiredLevel None
GlobalOptionSet Esta propiedad de navegación de un solo valor debe establecerse utilizando la sintaxis @odata.bind con una referencia a la opción global. Este ejemplo usa MetadataId como clave, pero también podría usar clave alternativa con Name: GlobalOptionSetDefinitions(Name='sample_colors')

El siguiente ejemplo crea una columna local usando las propiedades y la agrega a la tabla sample_bankaccount.

El URI para el atributo se devuelve en la respuesta.

Solicitud:

POST [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes
MSCRM.SolutionUniqueName: examplesolution
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json
Content-Type: application/json; charset=utf-8
Content-Length: 1465

{
  "@odata.type": "Microsoft.Dynamics.CRM.PicklistAttributeMetadata",
  "AttributeType": "Picklist",
  "AttributeTypeName": {
    "Value": "PicklistType"
  },
  "SourceTypeMask": 0,
  "GlobalOptionSet@odata.bind": "/GlobalOptionSetDefinitions(1d733907-4d05-ee11-8f6e-000d3a993550)",
  "Description": {
    "@odata.type": "Microsoft.Dynamics.CRM.Label",
    "LocalizedLabels": [
      {
        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
        "Label": "Colors Global Picklist Attribute",
        "LanguageCode": 1033,
        "IsManaged": false
      }
    ],
    "UserLocalizedLabel": {
      "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
      "Label": "Colors Global Picklist Attribute",
      "LanguageCode": 1033,
      "IsManaged": false
    }
  },
  "DisplayName": {
    "@odata.type": "Microsoft.Dynamics.CRM.Label",
    "LocalizedLabels": [
      {
        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
        "Label": "Sample Colors",
        "LanguageCode": 1033,
        "IsManaged": false
      }
    ],
    "UserLocalizedLabel": {
      "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
      "Label": "Sample Colors",
      "LanguageCode": 1033,
      "IsManaged": false
    }
  },
  "RequiredLevel": {
    "Value": "None",
    "CanBeChanged": false,
    "ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings"
  },
  "SchemaName": "sample_Colors"
}

Respuesta:

HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(25733907-4d05-ee11-8f6e-000d3a993550)

Insertar opciones

El siguiente ejemplo usa la acción InsertOptionValue para agregar una nueva opción con el valor 727000005 y la etiqueta Echo a la columna de elección local creada por Cree una columna de elección.

Solicitud:

POST [Organization Uri]/api/data/v9.2/InsertOptionValue
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json
Content-Type: application/json; charset=utf-8
Content-Length: 612

{
  "AttributeLogicalName": "sample_choice",
  "EntityLogicalName": "sample_bankaccount",
  "Value": 727000005,
  "Label": {
    "@odata.type": "Microsoft.Dynamics.CRM.Label",
    "LocalizedLabels": [
      {
        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
        "Label": "Echo",
        "LanguageCode": 1033,
        "IsManaged": false
      }
    ],
    "UserLocalizedLabel": {
      "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
      "Label": "Echo",
      "LanguageCode": 1033,
      "IsManaged": false
    }
  },
  "SolutionUniqueName": "examplesolution"
}

Respuesta:

HTTP/1.1 200 OK
OData-Version: 4.0

{
  "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.InsertOptionValueResponse",
  "NewOptionValue": 727000005
}

Opciones de actualización

Para actualizar opciones individuales, debe usar la acción Actualizar valor de opción. El siguiente ejemplo actualiza TrueOption del ejemplo de columna booleana en Crear una columna booleana y cambia la etiqueta para que sea Up en lugar de True. Debido a que este es un conjunto de opciones 'local', usa AttributeLogicalName y EntityLogicalName. Para un conjunto de opciones globales, use el parámetro OptionSetName en su lugar.

Solicitud:

POST [Organization Uri]/api/data/v9.2/UpdateOptionValue HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "AttributeLogicalName": "new_boolean",
  "EntityLogicalName": "new_bankaccount",
  "Value": 1,
  "Label": {
    "@odata.type": "Microsoft.Dynamics.CRM.Label",
    "LocalizedLabels": [
      {
        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
        "Label": "Up",
        "LanguageCode": 1033,
        "IsManaged": false
      }
    ],
    "UserLocalizedLabel": {
      "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
      "Label": "Up",
      "LanguageCode": 1033,
      "IsManaged": false
    }
  },
  "MergeLabels": true
}

Respuesta:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Ordenar opciones

Este ejemplo siguiente muestra cómo reordenar las opciones en un conjunto de opciones local con la acción OrderOption. La propiedad Value contiene los valores de la opción en el orden deseado.

Para usar esto con un conjunto de opciones global, especifique el parámetro OptionSetName en lugar de EntityLogicalName y AttributeLogicalName.

El parámetro SolutionUniqueName aplica los cambios como parte de la solución especificada.

Solicitud:

POST [Organization Uri]/api/data/v9.2/OrderOption
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json
Content-Type: application/json; charset=utf-8
Content-Length: 253

{
  "EntityLogicalName": "sample_bankaccount",
  "AttributeLogicalName": "sample_choice",
  "Values": [
    727000002,
    727000000,
    727000003,
    727000001,
    727000005,
    727000004
  ],
  "SolutionUniqueName": "examplesolution"
}

Respuesta:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Opción Eliminar

El siguiente ejemplo muestra cómo eliminar una opción para una columna de opción local mediante la acción DeleteOptionValue.

Para usar esto con un conjunto de opciones global, especifique el parámetro OptionSetName en lugar de EntityLogicalName y AttributeLogicalName.

El parámetro SolutionUniqueName aplica los cambios como parte de la solución especificada.

Solicitud:

POST [Organization Uri]/api/data/v9.2/DeleteOptionValue
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json
Content-Type: application/json; charset=utf-8
Content-Length: 116

{
  "AttributeLogicalName": "sample_choice",
  "EntityLogicalName": "sample_bankaccount",
  "Value": 727000004
}

Respuesta:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Insertar valor de estado

El siguiente ejemplo muestra cómo agregar una opción para una columna de estado mediante la acción InsertStatusValue.

Utilice el parámetro StateCode para especificar a qué opción de código de estado se aplica el valor de estado. El parámetro SolutionUniqueName aplica los cambios como parte de la solución especificada.

La propiedad NewOptionValue devuelta por InsertStatusValueResponse ComplexType contiene el valor asignado a la opción.

Solicitud:

POST [Organization Uri]/api/data/v9.2/InsertStatusValue
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json
Content-Type: application/json; charset=utf-8
Content-Length: 609

{
  "AttributeLogicalName": "statuscode",
  "EntityLogicalName": "sample_bankaccount",
  "Label": {
    "@odata.type": "Microsoft.Dynamics.CRM.Label",
    "LocalizedLabels": [
      {
        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
        "Label": "Frozen",
        "LanguageCode": 1033,
        "IsManaged": false
      }
    ],
    "UserLocalizedLabel": {
      "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
      "Label": "Frozen",
      "LanguageCode": 1033,
      "IsManaged": false
    }
  },
  "StateCode": 1,
  "SolutionUniqueName": "examplesolution"
}

Respuesta:

HTTP/1.1 200 OK
OData-Version: 4.0

{
  "@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.InsertStatusValueResponse",
  "NewOptionValue": 727000000
}

Consulte también

Personalizar opciones
Información general para crear y editar opciones globales
Crear una opción

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).