Novedades Power Platform

Para la Transformación Digital e Innovación Tecnológica

Novedades Power Platform

Para la Transformación Digital e Innovación Tecnológica

Power AppsPower Platform

Power Apps #12 – Sesión 05 – Resumen


Indice de Contenido

🎯 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, SubmitForm y Notify.
  • 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:

  1. Cabecera del comprobante
    • Cliente.
    • Número de documento.
    • Teléfono.
    • Dirección.
    • Información general de la operación.
  2. Detalle del comprobante
    • Producto.
    • Precio unitario.
    • Existencias.
    • Cantidad.
    • Importe por producto.
    • Lista de productos agregados.
  3. Resumen
    • Subtotal.
    • Descuento, cuando corresponda.
    • Impuesto.
    • Total.
  4. 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

  1. Se abrió la aplicación que contenía las pantallas y fórmulas avanzadas.
  2. Se descargó una copia de la aplicación.
  3. Se inició sesión en la cuenta de desarrollo.
  4. Se importó el archivo de la aplicación.
  5. Se evitó mantener la conexión con el SharePoint de la cuenta anterior.
  6. Se crearon nuevas listas en el SharePoint de la cuenta actual.
  7. Se eliminó la conexión anterior.
  8. Se agregó una conexión nueva.
  9. Se reasignaron las listas en las propiedades Items de los controles.
  10. 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

ColumnaTipoFinalidad
ID del producto o títuloTextoIdentificador funcional utilizado en el ejercicio
Nombre del productoTexto de una líneaMostrar el nombre del producto
StockNúmero enteroRegistrar las existencias disponibles
ActivoSí/NoIndicar si el producto se encuentra habilitado
ImagenImagenMostrar 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

ColumnaTipoFinalidad
ID del movimiento o títuloTextoIdentificador funcional del movimiento
ProductoBúsquedaRelacionar el movimiento con Lista Productos
Tipo de movimientoElecciónSeleccionar Entrada o Salida
CantidadNúmero enteroRegistrar las unidades involucradas
ObservaciónTextoAgregar una descripción del movimiento
IDAutomáticoIdentificador interno de SharePoint
CreadoAutomáticoFecha y hora de creación
Creado porAutomáticoUsuario 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

  1. Abrir el panel de datos.
  2. Identificar la conexión anterior de SharePoint.
  3. Eliminar la conexión que ya no corresponde.
  4. Agregar el conector de SharePoint.
  5. Seleccionar la cuenta autorizada.
  6. Elegir el sitio correspondiente.
  7. Seleccionar Lista Productos y Lista Movimientos.
  8. Actualizar la propiedad Items de galerías y tablas.
  9. Corregir campos que dependían de la conexión anterior.
  10. 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.
  • Navigate para dirigirse a otra pantalla.
  • La variable seleccionada para mostrar el nombre, stock e imagen.
  • La misma variable para filtrar los movimientos relacionados.

Flujo funcional

  1. El usuario selecciona un producto.
  2. El producto se almacena en una variable.
  3. La aplicación navega a la pantalla de movimientos.
  4. La pantalla muestra la información del producto.
  5. 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.Id es el identificador almacenado en la columna de búsqueda.
  • varFilaSeleccionada.ID es 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

  1. Se duplicó una pantalla existente.
  2. Se eliminó la tabla que ya no era necesaria.
  3. Se insertó un formulario.
  4. Se seleccionó Lista Movimientos como origen.
  5. Se conservaron los campos:
    • Producto.
    • Tipo de movimiento.
    • Cantidad.
    • Observación.
  6. Se ajustó el tamaño del campo Observación.
  7. 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 Patch u 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

  1. Ir a la sección Componentes.
  2. Crear un componente nuevo.
  3. Copiar dentro del componente el contenedor del menú.
  4. Ajustar el ancho y alto.
  5. Crear una propiedad personalizada.
  6. Configurar la propiedad como:
    • Entrada.
    • Tipo tabla.
  7. Asignar la propiedad a Items de la galería interna.
  8. Insertar una instancia del componente en cada pantalla.
  9. Asignar la colección del menú a la propiedad personalizada.
  10. 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

ConceptoDescripciónImportancia
Aplicación CanvasAplicació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.
ControlElemento visual o funcional, como botón, galería, tabla o formulario.Permite mostrar información y capturar acciones.
Propiedad ItemsDefine la tabla o conjunto de registros que consume un control.Vincula galerías y tablas con los datos.
SharePointPlataforma utilizada en la sesión para crear sitios y listas.Actuó como fuente de datos de la aplicación.
Lista de SharePointEstructura tabular que almacena registros y columnas.Permitió guardar productos y movimientos.
Conector de SharePointConexión autenticada entre Power Apps y un sitio.Hace posible leer y escribir información.
Columna de búsquedaColumna que relaciona un registro con otra lista.Implementa la asociación producto-movimientos.
IDIdentificador interno asignado al elemento.Se utilizó como referencia estable para filtrar.
ValueTexto visible asociado con una búsqueda.Facilita mostrar el nombre del producto.
GaleríaControl para visualizar varios registros mediante una plantilla repetida.Presenta el catálogo de productos.
Tabla de datosControl tabular para mostrar registros en filas y columnas.Presenta el historial de movimientos.
FormularioControl para crear, mostrar o editar un registro.Simplifica el registro de movimientos.
Variable de selecciónVariable que conserva el registro seleccionado.Mantiene el producto activo entre pantallas.
ColecciónTabla local en memoria utilizada dentro de la aplicación.Fue utilizada para estructurar el menú.
FilterFunción que devuelve registros que cumplen una condición.Permite mostrar movimientos por producto.
NavigateFunción que abre otra pantalla.Implementa la navegación de la aplicación.
NewFormColoca un formulario en modo nuevo.Prepara la creación de un registro.
ResetFormRestablece el formulario.Facilita limpiar o cancelar la captura.
SubmitFormEnvía los datos del formulario al origen.Guarda el movimiento en SharePoint.
NotifyMuestra mensajes informativos, de éxito o error.Mejora la comunicación con el usuario.
PatchFunción mencionada como alternativa para operaciones más complejas.Resulta útil al controlar actualizaciones en diferentes registros o tablas.
Componente CanvasBloque reutilizable compuesto por controles.Reduce duplicación y facilita mantenimiento.
Propiedad personalizadaInterfaz de entrada o salida de un componente.Permite enviar la colección del menú al componente.
ThisItemRegistro actual dentro de una galería.Permite mostrar los campos de cada opción del menú.
ParentReferencia al control contenedor.Ayuda a adaptar dimensiones.
DelegaciónEjecución de una consulta en el origen de datos.Evita resultados incompletos y problemas de rendimiento.
DataversePlataforma de datos presentada para la futura aplicación de facturación.Permitirá trabajar con tablas y relaciones empresariales.
Monitor de Power AppsHerramienta 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 consolidadaRespuesta desarrollada durante la claseRecomendació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.Width y Parent.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 Id y Value.

Formularios

  • Usar formularios para escenarios simples de creación o edición.
  • Configurar el modo correcto mediante NewForm.
  • Utilizar ResetForm para 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 Filter con 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

  1. SharePoint puede funcionar como una fuente de datos práctica para aplicaciones departamentales, especialmente cuando se requieren listas relacionadas y formularios sencillos.
  2. Las columnas de búsqueda permiten relacionar listas, pero es importante comprender la diferencia entre el ID del registro y su valor visible.
  3. Los filtros deben construirse con identificadores estables. Comparar mediante ID ofrece mayor confiabilidad que hacerlo mediante nombres.
  4. 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.
  5. 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.
  6. Los componentes Canvas eliminan controles duplicados y centralizan cambios de diseño o comportamiento que deben aplicarse en varias pantallas.
  7. 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.
  8. 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.
  9. 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.
  10. 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
    Explica NewForm, ViewForm, EditForm, SubmitForm, ResetForm, OnSuccess y 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]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

advanced-floating-content-close-btnBoton