Power Apps #12 – Sesión 05 – Resumen

🎯 Objetivo de la clase
El objetivo principal fue reforzar los conocimientos adquiridos en las sesiones anteriores y avanzar en la construcción de una aplicación Canvas conectada con listas de SharePoint.
Durante la sesión se buscó que los participantes aprendieran a:
- Migrar una aplicación Canvas entre cuentas o entornos.
- Reconectar una aplicación con nuevas listas de SharePoint.
- Crear listas relacionadas para productos y movimientos.
- Mostrar y filtrar información en galerías y tablas.
- Registrar movimientos mediante un formulario.
- Utilizar funciones de Power Fx como
Navigate,Filter,NewForm,ResetForm,SubmitFormyNotify. - Crear un componente reutilizable de menú.
- Comprender de manera introductoria el diseño de una futura aplicación de facturación basada en relaciones de cabecera y detalle.
La sesión se concentró finalmente en dos resultados prácticos: completar la aplicación de productos y movimientos de inventario, y reutilizar el menú mediante un componente Canvas. [Sesion 05…wer Innova | Word]
📚 Temas desarrollados
Tema 1. Repaso del diseño de aplicaciones Canvas
Objetivo
Consolidar los conocimientos adquiridos sobre pantallas, controles, propiedades, navegación y experiencia de usuario.
Conceptos principales
El instructor recordó que una aplicación Canvas se construye mediante:
- Pantallas, que organizan la experiencia de navegación.
- Controles, como etiquetas, entradas de texto, imágenes, botones, galerías, tablas y formularios.
- Propiedades, que establecen color, posición, dimensiones, contenido y comportamiento.
- Fórmulas Power Fx, que agregan lógica e interacción.
- Contenedores, que ayudan a organizar los controles y adaptar la interfaz.
También se repasó el uso de propiedades como Width, Height y referencias al control contenedor mediante Parent, con el fin de crear interfaces que se adapten a diferentes tamaños de pantalla. [Sesion 05…wer Innova | Word]
Recomendaciones
- Separar el diseño visual de la lógica funcional.
- Priorizar primero que la aplicación funcione correctamente.
- Ajustar posteriormente colores, bordes, imágenes, iconos y tipografías.
- Diseñar considerando monitores y dispositivos móviles.
- Utilizar contenedores para organizar mejor la interfaz.
Tema 2. Introducción a una aplicación de facturación
Objetivo
Comprender la estructura funcional que tendrá una aplicación de generación de comprobantes o facturas.
Estructura propuesta
El instructor explicó una aplicación orientada al registro de ventas, conformada por:
- Cabecera del comprobante
- Cliente.
- Número de documento.
- Teléfono.
- Dirección.
- Información general de la operación.
- Detalle del comprobante
- Producto.
- Precio unitario.
- Existencias.
- Cantidad.
- Importe por producto.
- Lista de productos agregados.
- Resumen
- Subtotal.
- Descuento, cuando corresponda.
- Impuesto.
- Total.
- Persistencia
- Registro de la cabecera.
- Registro de múltiples filas de detalle.
- Almacenamiento proyectado en Dataverse.
Relación cabecera-detalle
Se explicó que una factura contiene una sola cabecera, pero puede tener varios productos. Esto representa una relación de uno a muchos:
- Una cabecera puede tener muchos detalles.
- Cada detalle pertenece a una cabecera.
La construcción efectiva de esta aplicación quedó pendiente para la siguiente sesión. Durante esta clase solo se presentó su arquitectura funcional. [Sesion 05…wer Innova | Word]
Tema 3. Migración de una aplicación entre cuentas
Objetivo
Recuperar el avance realizado en una cuenta anterior y trasladarlo al entorno de desarrollo utilizado por los estudiantes.
Secuencia realizada
- Se abrió la aplicación que contenía las pantallas y fórmulas avanzadas.
- Se descargó una copia de la aplicación.
- Se inició sesión en la cuenta de desarrollo.
- Se importó el archivo de la aplicación.
- Se evitó mantener la conexión con el SharePoint de la cuenta anterior.
- Se crearon nuevas listas en el SharePoint de la cuenta actual.
- Se eliminó la conexión anterior.
- Se agregó una conexión nueva.
- Se reasignaron las listas en las propiedades
Itemsde los controles. - Se probaron la navegación, visualización de datos e imágenes.
Observaciones
Al importar una aplicación conectada con SharePoint, la conexión original puede no ser válida para el nuevo usuario o entorno. Por eso es necesario:
- Revisar las conexiones.
- Contar con permisos sobre el sitio.
- Volver a seleccionar los orígenes de datos.
- Corregir las referencias que aparecen con errores.
- Guardar y probar la aplicación antes de publicarla. [Sesion 05…wer Innova | Word]
Tema 4. Activación y uso de SharePoint
Objetivo
Completar la configuración de SharePoint y utilizarlo como fuente de datos de la aplicación.
Aspectos tratados
El instructor explicó que la activación de una licencia o servicio puede tardar varios minutos. En la sesión anterior, el sitio no estuvo disponible inmediatamente, pero posteriormente se habilitó sin requerir cambios adicionales.
Se destacó que SharePoint organiza la información mediante:
- Sitios.
- Listas.
- Bibliotecas.
- Columnas.
- Elementos o registros.
Desde Power Apps, estas listas se utilizan como orígenes de datos conectados. Microsoft indica que las aplicaciones Canvas pueden leer y escribir información en listas de Microsoft Lists y SharePoint mediante conexiones. [learn.microsoft.com]
Buena práctica
Si un servicio recién habilitado no aparece de inmediato:
- Verificar la licencia.
- Confirmar el entorno y la cuenta.
- Esperar la finalización del aprovisionamiento.
- Cerrar y volver a iniciar sesión, si fuera necesario.
- No realizar cambios repetitivos sin comprobar primero el estado del servicio.
Tema 5. Creación de la lista de productos
Objetivo
Construir una fuente de datos para almacenar la información principal de los productos.
Lista creada
Lista Productos
| Columna | Tipo | Finalidad |
|---|---|---|
| ID del producto o título | Texto | Identificador funcional utilizado en el ejercicio |
| Nombre del producto | Texto de una línea | Mostrar el nombre del producto |
| Stock | Número entero | Registrar las existencias disponibles |
| Activo | Sí/No | Indicar si el producto se encuentra habilitado |
| Imagen | Imagen | Mostrar la fotografía o representación del producto |
Datos de prueba
Se registraron productos como:
- Monitor.
- Computadora o laptop.
A cada producto se le asignó un stock y una imagen para validar su visualización en Power Apps. [Sesion 05…wer Innova | Word]
Tema 6. Creación de la lista de movimientos
Objetivo
Registrar las entradas y salidas asociadas con los productos.
Lista creada
Lista Movimientos
| Columna | Tipo | Finalidad |
|---|---|---|
| ID del movimiento o título | Texto | Identificador funcional del movimiento |
| Producto | Búsqueda | Relacionar el movimiento con Lista Productos |
| Tipo de movimiento | Elección | Seleccionar Entrada o Salida |
| Cantidad | Número entero | Registrar las unidades involucradas |
| Observación | Texto | Agregar una descripción del movimiento |
| ID | Automático | Identificador interno de SharePoint |
| Creado | Automático | Fecha y hora de creación |
| Creado por | Automático | Usuario que generó el registro |
Tipos de columnas explicados
- Texto de una línea: para nombres o identificadores breves.
- Número: para cantidades y stock.
- Sí/No: para valores booleanos.
- Elección: para alternativas predefinidas como Entrada y Salida.
- Búsqueda: para relacionar una lista con otra.
- Texto de varias líneas: recomendable para observaciones amplias.
Orden correcto de carga
El instructor recomendó registrar primero los productos y después los movimientos, porque la columna de búsqueda necesita encontrar registros existentes en la lista de origen. [Sesion 05…wer Innova | Word]
Tema 7. Relaciones mediante columnas de búsqueda
Objetivo
Relacionar los movimientos con el producto correspondiente.
Se configuró una columna de tipo Búsqueda en Lista Movimientos, utilizando como origen Lista Productos y mostrando el campo Nombre del producto.
ID y Value
El instructor explicó que un campo de búsqueda expone dos datos especialmente relevantes:
Producto.Id: identificador del elemento relacionado.Producto.Value: texto mostrado al usuario.
Para filtrar o comparar registros, se recomendó utilizar el identificador, porque representa una clave más estable que el nombre.
Ejemplo conceptual
Filter(
‘Lista Movimientos’;
Producto.Id = varFilaSeleccionada.ID
)
El separador puede ser coma o punto y coma, dependiendo de la configuración regional del entorno.
Buena práctica
Comparar mediante ID en lugar de comparar nombres. Dos productos podrían tener nombres iguales o un nombre podría modificarse, mientras que el identificador interno permanece asociado al registro. [Sesion 05…wer Innova | Word]
Tema 8. Reconexión de la aplicación con SharePoint
Objetivo
Sustituir las conexiones de la cuenta original por las listas creadas en la nueva cuenta.
Procedimiento demostrado
- Abrir el panel de datos.
- Identificar la conexión anterior de SharePoint.
- Eliminar la conexión que ya no corresponde.
- Agregar el conector de SharePoint.
- Seleccionar la cuenta autorizada.
- Elegir el sitio correspondiente.
- Seleccionar Lista Productos y Lista Movimientos.
- Actualizar la propiedad
Itemsde galerías y tablas. - Corregir campos que dependían de la conexión anterior.
- Ejecutar una vista previa.
Power Apps utiliza conexiones para acceder a orígenes externos como SharePoint, Microsoft Lists y SQL Server. Cada tabla seleccionada se incorpora a la aplicación como un origen de datos independiente. [learn.microsoft.com]
Recomendación
Cuando se conecta con un sitio administrado por otra cuenta, se requieren:
- URL correcta del sitio.
- Conexión autenticada.
- Permisos suficientes sobre las listas.
- Acceso de los usuarios finales al origen de datos.
Tema 9. Galerías, tablas y visualización de datos
Objetivo
Mostrar productos y movimientos utilizando controles enlazados con SharePoint.
Galería de productos
La propiedad Items se asoció con Lista Productos. Dentro de la galería se mostraron:
- Nombre del producto.
- Stock.
- Imagen.
Se corrigieron las referencias necesarias para que la aplicación mostrara las imágenes almacenadas en la lista.
Tabla de movimientos
En la tabla se eliminaron campos que no aportaban valor al usuario:
- Tipo de contenido.
- Modificado.
- Modificado por.
- Otras columnas técnicas.
Se conservaron los campos relevantes del movimiento, como:
- Producto.
- Tipo.
- Cantidad.
- Observación.
- Fecha de creación, cuando era necesaria.
Buena práctica
Mostrar únicamente la información necesaria para la tarea. Las columnas de auditoría pueden conservarse en la fuente, pero no tienen que aparecer siempre en la interfaz. [Sesion 05…wer Innova | Word]
Tema 10. Navegación y variable de selección
Objetivo
Capturar el producto elegido y mostrar su historial de movimientos.
La aplicación utilizó:
- Una variable para almacenar la fila seleccionada.
Navigatepara dirigirse a otra pantalla.- La variable seleccionada para mostrar el nombre, stock e imagen.
- La misma variable para filtrar los movimientos relacionados.
Flujo funcional
- El usuario selecciona un producto.
- El producto se almacena en una variable.
- La aplicación navega a la pantalla de movimientos.
- La pantalla muestra la información del producto.
- La tabla filtra los movimientos mediante el ID del producto.
Este patrón permite mantener el contexto del registro durante la navegación. [Sesion 05…wer Innova | Word]
Tema 11. Filtrado con Power Fx
Objetivo
Mostrar únicamente los movimientos del producto seleccionado.
Al conectar directamente la tabla con Lista Movimientos, inicialmente aparecían todos los registros. Para corregirlo se utilizó Filter.
Filter(
‘Lista Movimientos’;
Producto.Id = varFilaSeleccionada.ID
)
Explicación
'Lista Movimientos'es el origen.Producto.Ides el identificador almacenado en la columna de búsqueda.varFilaSeleccionada.IDes el identificador del producto elegido.- Solo se devuelven los registros que cumplen la condición.
Delegación
En listas grandes es indispensable revisar si la consulta puede delegarse. Power Apps intenta ejecutar el filtro en el origen; cuando una consulta no es delegable, procesa localmente una cantidad limitada de registros, normalmente 500 y hasta 2.000 si se modifica la configuración. Esto puede producir resultados incompletos. [learn.microsoft.com], [learn.microsoft.com]
Tema 12. Registro de movimientos con un formulario
Objetivo
Crear una pantalla para registrar entradas o salidas de inventario.
Construcción
- Se duplicó una pantalla existente.
- Se eliminó la tabla que ya no era necesaria.
- Se insertó un formulario.
- Se seleccionó Lista Movimientos como origen.
- Se conservaron los campos:
- Producto.
- Tipo de movimiento.
- Cantidad.
- Observación.
- Se ajustó el tamaño del campo Observación.
- Se agregaron botones para limpiar y guardar.
Los formularios de edición permiten crear o actualizar registros en una fuente de datos. Microsoft recomienda combinar formularios con galerías y fórmulas para construir la experiencia completa de navegación, visualización y edición. [learn.microsoft.com]
Tema 13. Funciones del formulario
NewForm
Coloca el formulario en modo de creación.
NewForm(frmMovimiento)
ResetForm
Restablece los valores del formulario y descarta cambios no guardados.
ResetForm(frmMovimiento)
SubmitForm
Envía los datos del formulario a la fuente configurada.
SubmitForm(frmMovimiento)
Notify
Muestra un mensaje al usuario.
Notify(
«Movimiento guardado»;
NotificationType.Success;
2000
)
Mejora recomendada
La notificación de éxito debería ejecutarse en la propiedad OnSuccess del formulario y no inmediatamente después de SubmitForm. De esta manera, el mensaje solo aparecerá cuando SharePoint confirme que el registro fue guardado.
// Botón Guardar
SubmitForm(frmMovimiento)
// frmMovimiento.OnSuccess
Notify(
«Movimiento guardado correctamente»;
NotificationType.Success;
2000
);
ResetForm(frmMovimiento);
NewForm(frmMovimiento)
// frmMovimiento.OnFailure
Notify(
«No se pudo guardar el movimiento»;
NotificationType.Error;
4000
)
Microsoft documenta el uso de NewForm, ResetForm y SubmitForm para controlar la creación, cancelación y almacenamiento de formularios conectados con SharePoint. [learn.microsoft.com], [learn.microsoft.com]
Tema 14. Actualización pendiente del stock
Objetivo
Comprender que registrar un movimiento no completa por sí solo la lógica del inventario.
El instructor explicó que:
- Una entrada debería incrementar el stock.
- Una salida debería disminuirlo.
- Registrar únicamente la fila en Lista Movimientos no actualiza Lista Productos.
- Para modificar varias fuentes o registros puede ser necesario usar
Patchu otra lógica adicional.
Esta funcionalidad no fue implementada durante la sesión. Se dejó para un escenario posterior, relacionado con la aplicación de comprobantes y el manejo de varias tablas. [Sesion 05…wer Innova | Word]
Recomendación técnica
Antes de registrar una salida deben agregarse validaciones como:
- Cantidad mayor que cero.
- Producto obligatorio.
- Tipo de movimiento obligatorio.
- Stock suficiente.
- Control de errores al guardar.
- Confirmación de actualización de ambas listas.
Tema 15. Creación de componentes reutilizables
Objetivo
Evitar la duplicación del menú en varias pantallas.
Un componente Canvas es un bloque reutilizable que encapsula controles y comportamiento. Cuando cambia la definición del componente, sus instancias dentro de la aplicación reflejan el cambio. [learn.microsoft.com]
Procedimiento explicado
- Ir a la sección Componentes.
- Crear un componente nuevo.
- Copiar dentro del componente el contenedor del menú.
- Ajustar el ancho y alto.
- Crear una propiedad personalizada.
- Configurar la propiedad como:
- Entrada.
- Tipo tabla.
- Asignar la propiedad a
Itemsde la galería interna. - Insertar una instancia del componente en cada pantalla.
- Asignar la colección del menú a la propiedad personalizada.
- Eliminar los menús duplicados.
Propiedad personalizada
El componente recibió una propiedad denominada de forma aproximada MenuData.
cmpMenu.MenuData = colMenu
Dentro del componente, la galería utiliza:
MenuData
Y cada etiqueta puede mostrar un campo mediante:
ThisItem.NombreMenu
Beneficio demostrado
Al cambiar el color, tamaño o formato del menú dentro del componente, todas las pantallas se actualizaron automáticamente.
Microsoft recomienda utilizar componentes en aplicaciones grandes que repiten patrones de controles. Para compartirlos entre aplicaciones, se pueden emplear bibliotecas de componentes. [learn.microsoft.com]
🔑 Conceptos clave
| Concepto | Descripción | Importancia |
|---|---|---|
| Aplicación Canvas | Aplicación diseñada mediante pantallas, controles, propiedades y fórmulas. | Permite crear interfaces empresariales adaptadas al proceso. |
| Pantalla | Área que representa una vista o etapa de navegación. | Organiza la experiencia del usuario. |
| Control | Elemento visual o funcional, como botón, galería, tabla o formulario. | Permite mostrar información y capturar acciones. |
| Propiedad Items | Define la tabla o conjunto de registros que consume un control. | Vincula galerías y tablas con los datos. |
| SharePoint | Plataforma utilizada en la sesión para crear sitios y listas. | Actuó como fuente de datos de la aplicación. |
| Lista de SharePoint | Estructura tabular que almacena registros y columnas. | Permitió guardar productos y movimientos. |
| Conector de SharePoint | Conexión autenticada entre Power Apps y un sitio. | Hace posible leer y escribir información. |
| Columna de búsqueda | Columna que relaciona un registro con otra lista. | Implementa la asociación producto-movimientos. |
| ID | Identificador interno asignado al elemento. | Se utilizó como referencia estable para filtrar. |
| Value | Texto visible asociado con una búsqueda. | Facilita mostrar el nombre del producto. |
| Galería | Control para visualizar varios registros mediante una plantilla repetida. | Presenta el catálogo de productos. |
| Tabla de datos | Control tabular para mostrar registros en filas y columnas. | Presenta el historial de movimientos. |
| Formulario | Control para crear, mostrar o editar un registro. | Simplifica el registro de movimientos. |
| Variable de selección | Variable que conserva el registro seleccionado. | Mantiene el producto activo entre pantallas. |
| Colección | Tabla local en memoria utilizada dentro de la aplicación. | Fue utilizada para estructurar el menú. |
| Filter | Función que devuelve registros que cumplen una condición. | Permite mostrar movimientos por producto. |
| Navigate | Función que abre otra pantalla. | Implementa la navegación de la aplicación. |
| NewForm | Coloca un formulario en modo nuevo. | Prepara la creación de un registro. |
| ResetForm | Restablece el formulario. | Facilita limpiar o cancelar la captura. |
| SubmitForm | Envía los datos del formulario al origen. | Guarda el movimiento en SharePoint. |
| Notify | Muestra mensajes informativos, de éxito o error. | Mejora la comunicación con el usuario. |
| Patch | Función mencionada como alternativa para operaciones más complejas. | Resulta útil al controlar actualizaciones en diferentes registros o tablas. |
| Componente Canvas | Bloque reutilizable compuesto por controles. | Reduce duplicación y facilita mantenimiento. |
| Propiedad personalizada | Interfaz de entrada o salida de un componente. | Permite enviar la colección del menú al componente. |
| ThisItem | Registro actual dentro de una galería. | Permite mostrar los campos de cada opción del menú. |
| Parent | Referencia al control contenedor. | Ayuda a adaptar dimensiones. |
| Delegación | Ejecución de una consulta en el origen de datos. | Evita resultados incompletos y problemas de rendimiento. |
| Dataverse | Plataforma de datos presentada para la futura aplicación de facturación. | Permitirá trabajar con tablas y relaciones empresariales. |
| Monitor de Power Apps | Herramienta mencionada para revisar el funcionamiento de una aplicación. | Ayuda a detectar operaciones, errores y problemas de rendimiento. |
Los conceptos anteriores fueron tratados directamente o mencionados como parte de la arquitectura futura de la aplicación. [Sesion 05…wer Innova | Word]
❓ Preguntas y respuestas destacadas
Las intervenciones de los participantes fueron limitadas. La mayoría de las preguntas fueron formuladas por el instructor como comprobación didáctica. Se consolidan a continuación por su valor académico.
| Pregunta consolidada | Respuesta desarrollada durante la clase | Recomendación basada en Microsoft Learn |
|---|---|---|
| ¿Qué tipo de columna debe utilizarse para relacionar movimientos y productos? | Una columna de Búsqueda, configurada para tomar el producto desde Lista Productos. | Elegir correctamente la columna visible y utilizar el ID para comparaciones técnicas. |
| ¿Qué tipo de columna corresponde a Entrada y Salida? | Una columna de Elección, porque los valores se definen previamente. | Utilizar Elección cuando exista un conjunto controlado de alternativas. |
| ¿Por qué aparecen ID y Value en el producto relacionado? | El ID identifica el elemento de origen y Value representa el texto mostrado. | Utilizar ID para relaciones y filtros; usar Value para presentación. |
| ¿Cómo se muestran solamente los movimientos de un producto? | Aplicando Filter sobre Lista Movimientos y comparando el ID relacionado con el ID seleccionado. | Revisar la delegación si la lista puede crecer significativamente. [learn.microsoft.com], [learn.microsoft.com] |
| ¿Cómo se guarda un registro desde un formulario? | Mediante SubmitForm, después de configurar el origen y los campos. | Implementar OnSuccess y OnFailure para comunicar el resultado real de la operación. [learn.microsoft.com], [learn.microsoft.com] |
| ¿Cómo se limpia un formulario? | Utilizando NewForm y ResetForm. | Emplear ResetForm para descartar cambios y NewForm para preparar una captura nueva. [learn.microsoft.com], [learn.microsoft.com] |
| ¿El registro de un movimiento actualiza automáticamente el stock? | No. El formulario guarda el movimiento, pero la modificación del stock necesita lógica adicional. | Validar la operación y controlar de manera explícita la actualización del producto. |
| ¿Por qué utilizar un componente para el menú? | Porque el menú se repite en varias pantallas y los cambios deben propagarse. | Crear componentes para patrones reutilizables y bibliotecas si se compartirán entre aplicaciones. [learn.microsoft.com] |
| ¿Qué tipo de propiedad necesita el componente para recibir el menú? | Una propiedad de entrada de tipo tabla, porque la colección contiene varios registros. | Definir claramente el contrato de datos del componente y mantener una estructura uniforme. |
| ¿Qué hacer cuando una aplicación importada mantiene conexiones anteriores? | Eliminar la conexión antigua, crear una nueva y actualizar los orígenes en las propiedades de los controles. | Verificar autenticación, permisos, conexiones y referencias antes de publicar. [learn.microsoft.com] |
| ¿Cuándo conviene usar un formulario y cuándo fórmulas como Patch? | El formulario resulta apropiado para una operación sencilla sobre un registro. Para lógica sobre varias tablas o registros se requiere mayor control. | Elegir el patrón según la complejidad, el manejo de errores y la cantidad de operaciones involucradas. |
🛠 Casos prácticos y demostraciones
Escenario 1. Migración de la aplicación
Objetivo
Trasladar una aplicación creada en otra cuenta hacia el entorno actual.
Aplicación modificada
Aplicación de productos, stock y movimientos.
Fuente de datos
Listas de SharePoint.
Componentes utilizados
- Aplicación Canvas.
- Panel de datos.
- Conector de SharePoint.
- Galería.
- Tabla.
- Pantallas.
- Variables.
Resultado esperado
La aplicación debía conservar sus pantallas y fórmulas, pero utilizar las listas creadas en el SharePoint de la nueva cuenta. [Sesion 05…wer Innova | Word]
Escenario 2. Catálogo de productos
Objetivo
Mostrar productos con nombre, stock e imagen.
Fuente de datos
Lista Productos.
Componentes implementados
- Galería.
- Etiquetas.
- Control de imagen.
- Botón o icono para abrir el detalle.
- Variable con la fila seleccionada.
Fórmulas relevantes
‘Lista Productos’
Navigate(scrMovimientos)
Resultado esperado
Seleccionar un producto y abrir la pantalla que presenta sus datos y movimientos asociados.
Escenario 3. Historial filtrado de movimientos
Objetivo
Presentar los movimientos correspondientes exclusivamente al producto seleccionado.
Fuente de datos
Lista Movimientos relacionada con Lista Productos.
Componentes implementados
- Tabla de datos.
- Variable de selección.
- Columna de búsqueda.
- Función
Filter.
Fórmula relevante
Filter(
‘Lista Movimientos’;
Producto.Id = varFilaSeleccionada.ID
)
Resultado esperado
- Al elegir una computadora, se muestran solamente sus movimientos.
- Al elegir un monitor, se muestran solamente los movimientos del monitor.
Escenario 4. Registro de un movimiento
Objetivo
Crear una entrada o salida desde Power Apps.
Fuente de datos
Lista Movimientos.
Componentes implementados
- Formulario de edición.
- Selector de producto.
- Selector de tipo de movimiento.
- Entrada numérica.
- Entrada de observación.
- Botón Limpiar.
- Botón Guardar.
Fórmulas relevantes
NewForm(frmMovimiento);
ResetForm(frmMovimiento)
SubmitForm(frmMovimiento)
«
Notify(
«Movimiento guardado»;
NotificationType.Success;
2000
)
Resultado esperado
Registrar el movimiento en SharePoint y mostrar una confirmación al usuario.
Alcance no completado
La actualización automática del stock quedó pendiente.
Escenario 5. Menú reutilizable
Objetivo
Convertir un menú repetido en un componente reutilizable.
Fuente de datos
Colección local del menú.
Componentes implementados
- Componente Canvas.
- Contenedor.
- Galería.
- Botones o iconos.
- Propiedad personalizada de entrada tipo tabla.
- Instancias del componente en varias pantallas.
Fórmulas relevantes
colMenu
ThisItem.NombreMenu
Parent.Height
Resultado esperado
Modificar una sola vez el componente y reflejar el cambio en todas las pantallas. [learn.microsoft.com]
Escenario 6. Diseño preliminar de facturación
Objetivo
Preparar una aplicación que registre un comprobante y sus productos.
Aplicación planificada
Aplicación de facturación o emisión de comprobantes.
Fuente de datos prevista
Dataverse.
Componentes proyectados
- Selector de cliente.
- Selector de producto.
- Entrada de cantidad.
- Galería de detalle.
- Subtotal.
- Descuento.
- Impuesto.
- Total.
- Botón para generar o guardar el comprobante.
Resultado esperado
Registrar una cabecera y múltiples líneas de detalle, con posibilidad futura de generar un documento PDF y enviarlo por correo.
Estado
Caso presentado conceptualmente, pero no desarrollado en esta sesión. [Sesion 05…wer Innova | Word]
✅ Buenas prácticas recomendadas
Diseño de aplicaciones
- Utilizar contenedores para organizar los controles.
- Aplicar dimensiones relativas como
Parent.WidthyParent.Height. - Diseñar primero la funcionalidad y después realizar el refinamiento visual.
- Mantener consistencia de colores, tamaños e iconos.
- Mostrar únicamente la información que el usuario necesita.
Gestión de fuentes de datos
- Confirmar el entorno antes de crear conexiones.
- Eliminar conexiones que pertenezcan a cuentas anteriores.
- Validar los permisos del sitio y las listas.
- Crear primero los registros maestros antes de los dependientes.
- No utilizar nombres como si fueran identificadores técnicos.
- Utilizar columnas con tipos de datos coherentes.
Relaciones
- Emplear columnas de búsqueda cuando una lista dependa de otra.
- Comparar registros relacionados mediante ID.
- Evitar relaciones basadas exclusivamente en textos que pueden cambiar.
- Comprender la diferencia entre
IdyValue.
Formularios
- Usar formularios para escenarios simples de creación o edición.
- Configurar el modo correcto mediante
NewForm. - Utilizar
ResetFormpara limpiar cambios. - Colocar el mensaje de éxito en
OnSuccess. - Implementar un mensaje de error en
OnFailure. - Validar campos obligatorios antes de guardar.
Power Fx
- Asignar nombres descriptivos a controles, variables y colecciones.
- Mantener fórmulas cortas y comprensibles.
- No copiar fórmulas sin revisar las referencias.
- Utilizar
Filtercon condiciones compatibles con el origen. - Revisar las advertencias de delegación.
- Separar las operaciones de guardado, validación y notificación.
Rendimiento y delegación
- Evitar cargar una lista completa si solo se necesita un subconjunto.
- Filtrar desde la propiedad
Items. - Utilizar operaciones delegables siempre que sea posible.
- No asumir que aumentar el límite de 500 a 2.000 resuelve la delegación.
- Probar con volúmenes de datos cercanos a los del escenario real. [learn.microsoft.com], [learn.microsoft.com]
Componentes
- Crear componentes para encabezados, menús, barras de navegación y patrones repetidos.
- No crear componentes para secciones exclusivas de una sola pantalla sin una razón clara.
- Diseñar propiedades de entrada y salida fáciles de comprender.
- Utilizar bibliotecas cuando un componente deba compartirse entre aplicaciones.
- Mantener una estructura uniforme en la tabla recibida por el componente. [learn.microsoft.com]
Seguridad
- Recordar que ocultar un campo en Power Apps no protege los datos.
- Administrar permisos en SharePoint y no solo en la interfaz.
- Otorgar acceso únicamente a los sitios y listas necesarios.
- Revisar columnas automáticas como ID, Creado y Creado por para auditoría.
- Evitar compartir conexiones personales como solución permanente.
Experiencia de usuario
- Mostrar mensajes claros después de guardar.
- Usar colores consistentes para éxito, advertencia y error.
- Evitar formularios excesivamente extensos.
- Ampliar controles de observaciones cuando se espera texto largo.
- Mantener visible el contexto del producto seleccionado.
- Prevenir registros duplicados o cantidades inválidas mediante validaciones.
📝 Conclusiones
- SharePoint puede funcionar como una fuente de datos práctica para aplicaciones departamentales, especialmente cuando se requieren listas relacionadas y formularios sencillos.
- Las columnas de búsqueda permiten relacionar listas, pero es importante comprender la diferencia entre el ID del registro y su valor visible.
- Los filtros deben construirse con identificadores estables. Comparar mediante ID ofrece mayor confiabilidad que hacerlo mediante nombres.
- Los formularios reducen el esfuerzo necesario para crear y editar registros, siempre que se configuren correctamente el origen, los campos y los eventos de éxito o error.
- Registrar un movimiento no equivale a completar toda la lógica de inventario. La actualización del stock requiere una operación adicional y validaciones de negocio.
- Los componentes Canvas eliminan controles duplicados y centralizan cambios de diseño o comportamiento que deben aplicarse en varias pantallas.
- La migración de una aplicación exige revisar las conexiones, porque importar pantallas y fórmulas no garantiza que los nuevos usuarios tengan acceso al origen original.
- La delegación debe considerarse desde las primeras etapas del desarrollo, especialmente si la aplicación trabajará con listas de más de 500 o 2.000 registros.
- Las columnas automáticas de SharePoint aportan trazabilidad, ya que registran identificador, fecha de creación y usuario creador sin que la aplicación tenga que enviarlos manualmente.
- La futura aplicación de facturación requerirá un modelo cabecera-detalle, además de lógica para guardar datos relacionados, calcular importes y controlar errores.
📖 Referencias oficiales de Microsoft
Componentes Canvas
- Canvas component overview – Power Apps
Explica la creación de componentes, propiedades personalizadas, reutilización y bibliotecas de componentes. [learn.microsoft.com]
Formularios en aplicaciones Canvas
- Understand canvas-app forms – Power Apps
Describe galerías, formularios de visualización, formularios de edición,NewForm, navegación y guardado de registros. [learn.microsoft.com] - Understand SharePoint forms integration – Power Apps
ExplicaNewForm,ViewForm,EditForm,SubmitForm,ResetForm,OnSuccessy la integración con SharePoint. [learn.microsoft.com]
Fuentes de datos y conexiones
- Understand data sources for canvas apps – Power Apps
Presenta conexiones, fuentes externas, tablas, colecciones, SharePoint, Microsoft Lists, SQL Server y funciones para control avanzado de datos. [learn.microsoft.com]
Delegación
- Descripción de la delegación en una aplicación de lienzo – Power Apps
Explica la ejecución de consultas en el origen, funciones delegables, advertencias y límites de registros. [learn.microsoft.com] - Understand delegation in a canvas app – Power Apps
Detalla el efecto de las consultas no delegables y las recomendaciones para conservar precisión y rendimiento. [learn.microsoft.com]

