💡 Introducción: La Fusión de Dos Mundos en Power Apps

Las Model-Driven Apps son excelentes para la gestión estructurada de datos y procesos de negocio. Sin embargo, históricamente carecían de la flexibilidad de la interfaz de usuario (UX) que ofrecen las Canvas Apps. Aquí es donde entran en juego las Páginas Personalizadas (Custom Pages).

Una Custom Page es una Canvas App incrustada y optimizada que puede ser añadida como una página completa dentro de una Model-Driven App. Esta funcionalidad permite a los Makers combinar la gestión de datos rigurosa de Model-Driven con la libertad de diseño y las capacidades de control de código bajo (low-code) de Canvas. Este artículo detalla cómo usar esta fusión de manera efectiva para crear una experiencia de usuario unificada y potente.

💻 Desarrollo Técnico: Arquitectura y Comunicación Híbrida

🛠️ ¿Cómo y Cuándo Usar Custom Pages?

Las Páginas Personalizadas resuelven el problema de tener que replicar funcionalidades complejas en la interfaz clásica de Model-Driven. Son ideales para escenarios que requieren:

  1. Tableros de Mando Personalizados: Crear un dashboard altamente visual que mezcle datos de Dataverse con fuentes externas, imposible de lograr con los dashboards nativos de Model-Driven.
  2. Lógica de Negocio Compleja: Implementar un asistente de múltiples pasos o una interfaz de calculadora personalizada, donde la lógica de la Canvas App facilita la experiencia.
  3. Integración de Componentes: Utilizar componentes de terceros (PCF) o de low-code que solo están disponibles en el entorno Canvas.

El núcleo de la arquitectura de la Custom Page es la comunicación bidireccional entre la Canvas App y el entorno Model-Driven que la hospeda.

⚙️ El Objeto ModelDrivenFormIntegration

El objeto clave para la comunicación es el control ModelDrivenFormIntegration, disponible automáticamente en una Custom Page. Este objeto actúa como el canal de datos y navegación entre la página y la aplicación principal.

1. Obtener Datos del Contexto Model-Driven

Si la Custom Page es llamada desde el formulario de un registro, podemos obtener la información del registro actual utilizando la propiedad Item del control de integración:

// En la propiedad OnVisible de la Custom Page
Set(varRegistroActual, ModelDrivenFormIntegration.Item);

// Acceder al ID del registro (e.g., para usarlo en un Filter())
varRegistroActual.accountid

2. Navegación y Comunicación de Retorno

Para que la experiencia sea fluida, la Custom Page debe ser capaz de navegar de vuelta, cerrar el modal o actualizar la vista Model-Driven. Esto se logra con la función Maps del control ModelDrivenFormIntegration:

FunciónPropósitoEjemplo de Uso
MapsToTableNavegar a la vista principal de una tabla.ModelDrivenFormIntegration.NavigateToTable('Accounts', TableAction.View)
MapsToRowAbrir un registro específico.ModelDrivenFormIntegration.NavigateToRow(varRegistroActual, TableAction.Edit)
MapsToViewAbrir una vista o subcuadrícula.ModelDrivenFormIntegration.NavigateToView('Oportunidades')
Mejor Práctica: Use ModelDrivenFormIntegration.NavigateToTable(TableAction.Cancel) para cerrar el modal o la navegación y volver a la página anterior, garantizando una transición suave para el usuario.

✍️ Mini Ejercicio Práctico: Navegación Contextual

Objetivo: Crear una Custom Page que reciba el ID de un registro de Cuenta y, al presionar un botón, navegue al formulario principal de ese registro.

  1. Cree una Página Personalizada en su solución Model-Driven.
  2. En la pantalla de la Custom Page, inserte una etiqueta para mostrar el nombre de la Cuenta actual y un botón llamado «Volver al Formulario».
  3. Configure la propiedad Text de la etiqueta para mostrar el nombre del registro actual (asumiendo que se llama name):
ModelDrivenFormIntegration.Item.name
  1. Configure la propiedad OnSelect del botón «Volver al Formulario» para navegar de regreso al registro que la invocó, simulando un cierre con éxito:
ModelDrivenFormIntegration.NavigateToRow(ModelDrivenFormIntegration.Item, TableAction.Edit)
  1. Guarde y Publique. Agregue la Custom Page a la navegación de su Model-Driven App. Al ejecutarla desde el menú lateral, verá cómo la página puede acceder a datos básicos de la app y cómo el botón puede interactuar con el frameworkprincipal.

📚 Fuentes Consultadas

📌 Conclusión

Las Páginas Personalizadas han cerrado la brecha entre el desarrollo Canvas y Model-Driven. Al aprovechar el control ModelDrivenFormIntegration, podemos crear experiencias de usuario que son estructuralmente sólidas (Model-Driven) pero visualmente flexibles y con lógica de negocio a la medida (Canvas). Adopte este enfoque híbrido para desbloquear el verdadero potencial de las Model-Driven Apps de próxima generación.

Deja un comentario

¡Gracias por tu mensaje!

Me pondré en contacto tan rápido como pueda.

Descubre más desde Power Platform En Español

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo