💡 Introducción
Las columnas de tipo Choice (antes conocidas como Option Sets) son uno de los componentes más utilizados en Dataverse para estandarizar la entrada de datos. Sin embargo, a diferencia de una simple columna de texto, las elecciones tienen una lógica dual: una etiqueta que ve el usuario y un valor numérico subyacente que procesa el sistema. En este artículo, desglosaremos cómo cargar estas opciones en tus controles y cómo realizar un Patch correcto para evitar errores de tipo de datos.
💻 En Power Apps
📋 Cargar Opciones: La Función Choices()
El error más común es intentar llenar un Dropdown o ComboBox escribiendo los valores manualmente. Esto rompe la integridad si la lista cambia en Dataverse. La forma profesional de hacerlo es utilizando la función Choices().
Para un control llamado drpEstado, la propiedad Items debe ser:
Choices('NombreDeTuTabla'.'NombreDeLaColumnaChoice')
Ventaja: Si agregas una nueva opción en Dataverse, tu aplicación la mostrará automáticamente sin necesidad de editar el código.
Tabla de Propiedades Clave
| Propiedad en Power Apps | Propósito | Ejemplo de Uso |
| Value | Devuelve la etiqueta de la opción seleccionada. | drpEstado.Selected.Value |
| Choices() | Extrae los metadatos de la columna. | Fuente de datos para Dropdowns. |
| Logic | Comparación interna. | ThisItem.Estado = ‘Estado (Cuentas)’.Activo |
🛠️ Cómo realizar un Patch con Columnas Choice
Cuando usamos la función Patch(), Dataverse espera recibir el registro de la opción, no solo un texto. Si intentas enviar un String, la función fallará.
Sintaxis Correcta para Patch: Si quieres actualizar un registro con la selección de un Dropdown:
Patch( Proyectos, LookUp(Proyectos, ID = 1), { Prioridad: drpPrioridad.Selected.Value })
✏️ Nota: Power Fx es lo suficientemente inteligente ahora para mapear .Selected.Value directamente al metadato de la columna Choice en Dataverse.
💻 Filtrado por Choice
Si deseas filtrar una galería basada en una elección, la sintaxis debe referenciar la enumeración global de la tabla:
Filter(Proyectos, Prioridad = 'Prioridad (Proyectos)'.Alta)
✍️ Mini Ejercicio Práctico: Selector de Estatus
Sigue estos pasos para implementar un guardado manual de una columna Choice:
- En una pantalla, inserta un Combo Box y llámalo cmbPrioridad.
- En su propiedad Items, escribe: Choices(Tareas.Prioridad).
- Inserta un Botón y en su propiedad OnSelect pega lo siguiente (asegúrate de que los nombres coincidan con tu tabla):
Patch( Tareas, Defaults(Tareas), { Asunto: "Nueva Tarea de Prueba", Prioridad: cmbPrioridad.Selected.Value });Notify("Registro guardado con éxito", NotificationType.Success)
- Cambia la selección y presiona el botón. Verifica en Dataverse cómo el valor se ha guardado correctamente.
💡Usa el siguiente Sandbox para tus pruebas!
Power Fx Interactive Sandbox: Registros
Cargando el entorno interactivo de Power Fx…
🤖 En Power Automate
Trabajar con Dataverse en Power Automate es sumamente potente, pero tiene una «trampa» común para los principiantes: las columnas de tipo Choice. Cuando intentas obtener el valor de una elección para un correo electrónico, el flujo te devuelve un número largo (ej. 100000001) en lugar del texto «Aprobado». En este artículo, aprenderemos a extraer la etiqueta (Label) correcta y cómo actualizar estos campos de forma precisa.
💻 Etiquetas vs. Valores: El secreto del Contenido Dinámico
Cuando Dataverse envía datos a Power Automate, envía tanto el valor entero (el ID técnico) como el valor formateado(lo que el humano lee). El problema es que, en el panel de contenido dinámico, a veces es difícil distinguir cuál es cuál.
🛠️ Cómo obtener el texto (Label)
Para obtener el nombre de la opción (ej. «En Progreso»), debes buscar en el contenido dinámico la propiedad que termina en » (Value)» pero que internamente mapea al campo de texto. Si estás usando expresiones, Power Automate utiliza una propiedad oculta llamada
@OData.Community.Display.V1.FormattedValue
Tabla Comparativa: ID vs. Etiqueta en Automate
| Acción | ¿Qué usar? | Ejemplo |
| Enviar un Email | Etiqueta (Label) | «El estatus actual es: Aprobado« |
| Filtrar una consulta (OData) | Valor Entero (ID) | statuscode eq 1 |
| Actualizar un registro | Valor Entero (ID) | Seleccionar de la lista desplegable o poner el número. |
| Condición (If/Switch) | Valor Entero (ID) | Si Prioridad es igual a 100000002… |
🛠️ Filtrado OData con Columnas Choice
Si quieres que tu flujo sea rápido, debes filtrar los datos desde el origen usando el parámetro «Filter Rows». Recuerda: Nunca filtres por el texto.
Incorrecto: prioridad eq ‘Alta’ (Esto fallará).
Correcto: prioridad eq 124100001 (Usando el valor numérico de la opción).


Deja una respuesta