Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los personalizadores pueden definir una columna Choices que permita la selección de varias opciones. En este artículo se explica cómo establecer, consultar y crear columnas de opciones mediante la API web y el SDK para .NET. La MultiSelectPicklistAttributeMetadata clase define un tipo de columna que hereda de la EnumAttributeMetadata clase . Al igual que la PicklistAttributeMetadata clase , esta columna incluye una propiedad OptionSetMetadata.Options que contiene las opciones válidas para la columna. La diferencia es que los valores que se obtienen o se establecen son de un tipo OptionSetValueCollection que contiene una matriz de enteros que representan las opciones seleccionadas. Los valores con formato para esta columna son una cadena separada por punto y coma que contiene las etiquetas de las opciones seleccionadas.
Con la API web, esta columna se define mediante el tipo de entidad MultiSelectPicklistAttributeMetadata.
Al igual que las columnas de opciones, técnicamente no hay ningún límite superior en el número de opciones que puede definir. Aplique consideraciones de usabilidad como factor limitante. Sin embargo, solo puede seleccionar 150 opciones para una sola columna. Además, no se puede establecer un valor predeterminado.
Establecer los valores de la columna Opciones
En los ejemplos siguientes se muestra cómo establecer valores de opciones para una columna denominada sample_outdooractivities que se agrega a la contact tabla.
Mediante la API web, establezca los valores pasando una cadena que contiene valores numéricos separados por comas:
Solicitud:
POST [organization uri]/api/data/v9.2/contacts HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
{
"@odata.type": "Microsoft.Dynamics.CRM.contact",
"firstname": "Wayne",
"lastname": "Yarborough",
"sample_outdooractivities": "1, 9"
}
Respuesta:
HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [organization uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)
Consulta de datos de columnas de opciones
Dos operadores de condición admiten la consulta de valores en las opciones:
| API de la Web | FetchXml | ConditionOperator |
|---|---|---|
| ContainValues | contain-values |
ContainValues |
| DoesNotContainValues | not-contain-values |
DoesNotContainValues |
Nota:
Estos operadores dependen de la indexación de texto completo que se aplicará en las tablas de base de datos que almacenan los varios valores. Hay cierta latencia después de crear nuevos registros y el índice de texto completo surte efecto. Es posible que tenga que esperar varios segundos después de crear nuevos registros antes de que los filtros que usen estos operadores puedan evaluar los valores.
Otros operadores de condición existentes que se pueden usar con este tipo de columna incluyen lo siguiente:
| API de la Web | FetchXml | ConditionOperator |
|---|---|---|
eq |
eq |
Equal |
ne |
neq |
NotEqual |
not null |
not-null |
NotNull |
eq null |
null |
Null |
| In | in |
In |
| NotIn | not-in |
NotIn |
En los siguientes ejemplos se muestra el uso de los operadores ContainValues y DoesNotContainValues en el siguiente conjunto de datos en la columna de opciones denominada sample_outdooractivities en la tabla contact.
Valores de opciones sample_outdooractivities
| Importancia | Etiqueta |
|---|---|
| 1 | Natación |
| 2 | Senderismo |
| 3 | Montañismo |
| 4 | Pesca |
| 5 | Hunting |
| 6 | Correr |
| 7 | Remo |
| 8 | Esquí |
| 9 | Acampada |
Consulte Crear columnas de opciones con código para ver un ejemplo de código para crear esta columna.
Valores de la tabla de contactos
fullname |
sample_outdooractivities |
|---|---|
| Wayne Yarborough | 1,9 |
| Monte Orton | 2 |
| Randal Maple | 4 |
| Hiram Mundy | 2,3,8,9 |
| Barbara Weber | 1,4,7 |
| Georgette Sullivan | 4,5,9 |
| Verna Kennedy | 2,4,9 |
| Marvin Bracken | 1,2,8,9 |
En este ejemplo se muestra cómo usar la función de consulta ContainValues para devolver todos los contactos a los que les gusta hacer senderismo. La respuesta incluye el texto de las opciones como anotaciones debido a la odata.include-annotations="OData.Community.Display.V1.FormattedValue" preferencia aplicada.
Solicitud:
GET [organization uri]/api/data/v9.2/contacts?$select=fullname,sample_outdooractivities&$filter=Microsoft.Dynamics.CRM.ContainValues(PropertyName='sample_outdooractivities',PropertyValues=%5B'2'%5D) HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Prefer: odata.include-annotations="OData.Community.Display.V1.FormattedValue"
Respuesta:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
Preference-Applied: odata.include-annotations="OData.Community.Display.V1.FormattedValue"
Content-Length: 1092
{
"@odata.context": "[organization uri]/api/data/v9.2/$metadata#contacts(fullname,sample_outdooractivities)",
"value": [{
"@odata.etag": "W/\"529811\"",
"fullname": "Monte Orton",
"sample_outdooractivities@OData.Community.Display.V1.FormattedValue": "Hiking",
"sample_outdooractivities": "2",
"contactid": "cdbcc48e-0b8d-e711-811c-000d3a75bdf1"
}, {
"@odata.etag": "W/\"529823\"",
"fullname": "Hiram Mundy",
"sample_outdooractivities@OData.Community.Display.V1.FormattedValue": "Hiking; Mountain Climbing; Skiing; Camping",
"sample_outdooractivities": "2,3,8,9",
"contactid": "d7bcc48e-0b8d-e711-811c-000d3a75bdf1"
}, {
"@odata.etag": "W/\"529838\"",
"fullname": "Verna Kennedy",
"sample_outdooractivities@OData.Community.Display.V1.FormattedValue": "Hiking; Fishing; Camping",
"sample_outdooractivities": "2,4,9",
"contactid": "e6bcc48e-0b8d-e711-811c-000d3a75bdf1"
}, {
"@odata.etag": "W/\"529843\"",
"fullname": "Marvin Bracken",
"sample_outdooractivities@OData.Community.Display.V1.FormattedValue": "Swimming; Hiking; Skiing; Camping",
"sample_outdooractivities": "1,2,8,9",
"contactid": "ebbcc48e-0b8d-e711-811c-000d3a75bdf1"
}]
}
Código de ejemplo mediante FetchXml
En el código siguiente se muestra el uso de FetchXml con la API web y el SDK para .NET.
En este ejemplo se muestra el uso del not-contain-values operador en la consulta siguiente FetchXml mediante la API web.
<fetch>
<entity name='contact'>
<attribute name='fullname' />
<attribute name='sample_outdooractivities' />
<filter type='and'>
<condition attribute='sample_outdooractivities' operator='not-contain-values'>
<value>2</value>
</condition>
</filter>
</entity>
</fetch>
Solicitud:
GET [organization uri]/api/data/v9.2/contacts?fetchXml=%253Cfetch%2520distinct%253D'false'%2520no-lock%253D'false'%2520mapping%253D'logical'%253E%253Centity%2520name%253D'contact'%253E%253Cattribute%2520name%253D'fullname'%2520%252F%253E%253Cattribute%2520name%253D'sample_outdooractivities'%2520%252F%253E%253Cfilter%2520type%253D'and'%253E%253Ccondition%2520attribute%253D'sample_outdooractivities'%2520operator%253D'not-contain-values'%253E%253Cvalue%253E2%253C%252Fvalue%253E%253C%252Fcondition%253E%253C%252Ffilter%253E%253C%252Fentity%253E%253C%252Ffetch%253E HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Prefer: odata.include-annotations="OData.Community.Display.V1.FormattedValue"
Respuesta:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
Preference-Applied: odata.include-annotations="OData.Community.Display.V1.FormattedValue"
{
"@odata.context": "[organization uri]/api/data/v9.2/$metadata#contacts(fullname,sample_outdooractivities,contactid)",
"value": [{
"@odata.etag": "W/\"529806\"",
"fullname": "Wayne Yarborough",
"sample_outdooractivities@OData.Community.Display.V1.FormattedValue": "Swimming; Camping",
"sample_outdooractivities": "1,9",
"contactid": "c8bcc48e-0b8d-e711-811c-000d3a75bdf1"
}, {
"@odata.etag": "W/\"529816\"",
"fullname": "Randal Maple",
"sample_outdooractivities@OData.Community.Display.V1.FormattedValue": "Fishing",
"sample_outdooractivities": "4",
"contactid": "d2bcc48e-0b8d-e711-811c-000d3a75bdf1"
}, {
"@odata.etag": "W/\"529828\"",
"fullname": "Barbara Weber",
"sample_outdooractivities@OData.Community.Display.V1.FormattedValue": "Swimming; Fishing; Boating",
"sample_outdooractivities": "1,4,7",
"contactid": "dcbcc48e-0b8d-e711-811c-000d3a75bdf1"
}, {
"@odata.etag": "W/\"529833\"",
"fullname": "Georgette Sullivan",
"sample_outdooractivities@OData.Community.Display.V1.FormattedValue": "Fishing; Hunting; Camping",
"sample_outdooractivities": "4,5,9",
"contactid": "e1bcc48e-0b8d-e711-811c-000d3a75bdf1"
}]
}
Crear columnas de opciones con código
La manera más fácil de crear opciones es usar el editor de columnas en las herramientas de personalización. Aprenda a crear y editar columnas.
Si necesita automatizar la creación de este tipo de columna, use los ejemplos siguientes con la API web o el SDK para .NET. Ambos ejemplos crean una columna de opciones para actividades al aire libre en la contact tabla.
Más información sobre cómo crear columnas.
Envía una solicitud POST con carga de tipo de entidad MultiSelectPicklistAttributeMetadata a la /Attributes colección de la contact tabla para crear una columna como parte de una solución con el nombre único mySampleSolutionUniqueName.
Aprenda a asociar un componente de solución a una solución
Solicitud:
POST [organization uri]/api/data/v9.2/EntityDefinitions(LogicalName='contact')/Attributes HTTP/1.1
Accept: application/json
MSCRM.SolutionUniqueName: mySampleSolutionUniqueName
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
{
"@odata.type": "Microsoft.Dynamics.CRM.MultiSelectPicklistAttributeMetadata",
"SchemaName": "sample_OutdoorActivities",
"DisplayName": {
"LocalizedLabels": [
{
"Label": "Outdoor activities",
"LanguageCode": 1033
}
]
},
"RequiredLevel": {
"Value": "None"
},
"Description": {
"LocalizedLabels": [
{
"Label": "Outdoor activities that the contact likes.",
"LanguageCode": 1033
}
]
},
"OptionSet": {
"IsGlobal": false,
"OptionSetType": "Picklist",
"Options": [
{
"Value": 1,
"Label": {
"LocalizedLabels": [
{ "Label": "Swimming", "LanguageCode": 1033 }
]
}
},
{
"Value": 2,
"Label": {
"LocalizedLabels": [
{ "Label": "Hiking", "LanguageCode": 1033 }
]
}
},
{
"Value": 3,
"Label": {
"LocalizedLabels": [
{ "Label": "Mountain Climbing", "LanguageCode": 1033 }
]
}
},
{
"Value": 4,
"Label": {
"LocalizedLabels": [
{ "Label": "Fishing", "LanguageCode": 1033 }
]
}
},
{
"Value": 5,
"Label": {
"LocalizedLabels": [
{ "Label": "Hunting", "LanguageCode": 1033 }
]
}
},
{
"Value": 6,
"Label": {
"LocalizedLabels": [
{ "Label": "Running", "LanguageCode": 1033 }
]
}
},
{
"Value": 7,
"Label": {
"LocalizedLabels": [
{ "Label": "Boating", "LanguageCode": 1033 }
]
}
},
{
"Value": 8,
"Label": {
"LocalizedLabels": [
{ "Label": "Skiing", "LanguageCode": 1033 }
]
}
},
{
"Value": 9,
"Label": {
"LocalizedLabels": [
{ "Label": "Camping", "LanguageCode": 1033 }
]
}
}
]
}
}
Respuesta:
HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [organization uri]/api/data/v9.2/EntityDefinitions(LogicalName='contact')/Attributes(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)
Consulte también
Definiciones de columna
Crear una fila de tabla usando la API web
Consultar datos utilizando la API web
Trabajar con definiciones de columna
Ejemplo: Trabajar con definiciones de columnas