💡 Introducción: La Evolución de la Barra de Comandos
Tradicionalmente, la personalización de la barra de comandos (el Ribbon) en Model-Driven Apps y Dynamics 365 requería complejas soluciones basadas en JavaScript, herramientas de terceros y el tedioso Ribbon Workbench.
Hoy, la Microsoft Power Platform ha revolucionado esta experiencia al integrar Power Fx, el lenguaje de expresiones de bajo código que usamos en Canvas Apps, directamente en la lógica de los comandos. Esto permite a los Makers crear comandos dinámicos, contextuales y eficientes sin escribir ni una línea de código tradicional.
El objetivo de este artículo es mostrar cómo aprovechar el Diseñador de Comandos (Command Designer) para usar Power Fx en las propiedades Visible y Action de nuestros botones, transformando la experiencia del usuario.
🛠️ Entendiendo el Diseñador de Comandos
El Diseñador de Comandos es la interfaz visual que nos permite crear, ocultar o modificar los botones en la barra de comandos para Tablas (formularios y vistas) y Sub-cuadrículas.
Contexto y Alcance de Power Fx en Comandos
Power Fx en Model-Driven Apps opera en un contexto ligeramente diferente al de Canvas Apps. Las fórmulas se evalúan en función del registro o la vista que se esté mostrando.
| Propiedad del Botón | Uso de Power Fx | Variables de Contexto Clave |
| Visible | Fórmula que devuelve true o false. Controla si el botón se muestra al usuario. | Self.Selected.Item (registro actual), Self.Selected.AllItems (registros de vista/subcuadrícula) |
| Action | Fórmula que se ejecuta al hacer clic en el botón. | Maps, Patch, Notify, Launch (todas disponibles) |
💻 Integrando Acciones de Flujos de Nube con Launch
Una de las integraciones más poderosas es la capacidad de iniciar un Flujo de Nube (Power Automate) contextual directamente desde un botón de la barra de comandos, usando la función Launch.
Lanzando un Flujo de Instancia (Instant Flow)
Para conectar un botón con un flujo, el Flujo de Nube debe usar el disparador «Manually trigger a flow» (v2), el cual puede aceptar el Contexto de Dataverse.
Pasos Clave de Integración:
- Crea el Flujo de Nube y asegúrate de que acepte la Fila de Dataverse (
Record) como entrada. - En el Diseñador de Comandos, usa la función
Launchen la propiedad Action.
Ejemplo de Action (Power Fx):
Queremos lanzar un flujo que procese el registro de Cuenta actual.
Launch(
"https://make.powerautomate.com/environments/[EnvId]/flows/[FlowId]/run",
{
recordId: Self.Selected.Item.'Cuenta (Account)'.Account, // Pasa el ID del registro
recordLogicalName: "account"
}
);
Notify("Procesando la cuenta, recibirá una notificación al terminar.", NotificationType.Success)
Al utilizar esta técnica, el flujo recibe el ID del registro, permitiéndole ejecutar lógica de negocio avanzada (generación de documentos, comunicación con APIs externas, etc.) sin impactar el rendimiento del formulario.
✍️ Mini Ejercicio Práctico: Botón Condicional
Escenario: En la tabla «Proyecto», queremos un botón llamado «Aprobar» que solo sea visible si el campo «Estatus de Aprobación» es «Pendiente».
Pasos a Seguir:
- Abre la Model-Driven App en Power Apps Maker Portal y selecciona Comandos.
- Selecciona la tabla Proyecto y elige la ubicación (ej.
Main form). - Crea un Nuevo Comando (botón).
- En la propiedad Visible (Visibility), ingresa la siguiente fórmula Power Fx (asumiendo que el nombre lógico del campo es
cr_estatusaprobaciony el valor de pendiente es1):
If(Self.Selected.Item.'cr_estatusaprobacion' = 1, true, false)
- En la propiedad Action, puedes usar un simple
Notify("Proyecto aprobado temporalmente")para la prueba.
- Guarda y publica la aplicación para verificar que el botón solo aparezca cuando el campo «Estatus de Aprobación» tenga el valor
Pendiente.
📚 Fuentes Consultadas
Para dominar la personalización de la interfaz de usuario en Model-Driven Apps, consulta los siguientes recursos de Microsoft Learn:
- Comenzar con el Diseñador de Comandos para Model-Driven Apps
- Usar Power Fx en comandos
- Guía de funciones soportadas de Power Fx en Model-Driven Apps
📌 Conclusión: El Futuro del Desarrollo Low-Code
La llegada de Power Fx al Diseñador de Comandos ha democratizado la personalización de las Model-Driven Apps. Ya no necesitas ser un desarrollador de JavaScript para crear experiencias de usuario sofisticadas y contextuales. Al dominar el uso de Power Fx en la visibilidad y acción de tus botones, puedes diseñar soluciones empresariales más intuitivas y potentes, directamente sobre la base de Dataverse.
Identifica el botón más complejo en tu Model-Driven App actual y desafíate a refactorizar su lógica de visibilidad o acción usando únicamente Power Fx.


Deja un comentario