💡 Introducción: La Carga Inicial y la Experiencia del Usuario

Uno de los desafíos más comunes en el desarrollo de Canvas Apps es asegurar una carga inicial rápida de la aplicación. Una aplicación lenta, que tarda en mostrar datos al usuario, genera frustración y reduce la adopción.

La clave para una experiencia de usuario fluida radica en cómo gestionamos la recuperación y el almacenamiento temporal de los datos. En este artículo, exploraremos las mejores prácticas y herramientas avanzadas, como las Colecciones (Collections) y la Delegación (Delegation), para minimizar los tiempos de espera y maximizar el rendimiento de tu aplicación.

🛠️ La Importancia de la Delegación y Sus Límites

La Delegación es el concepto más crítico en Power Apps y se refiere a la capacidad de la aplicación de «delegar» el procesamiento de datos (filtrado, ordenación, etc.) directamente al origen de datos subyacente (como Dataverse o SQL Server).

Identificando Fórmulas No Delegables

Cuando una fórmula no es delegable, Power Apps debe descargar un volumen limitado de datos (por defecto, 500 registros) a la memoria local para aplicar la lógica. Esto resulta en datos incompletos y un rendimiento deficiente.

Origen de Datos DelegableOperación Delegable (Ejemplos)Operación NO Delegable (Ejemplos Comunes)
Dataverse, SharePoint, SQL ServerFilterSearchSortLookUpAddColumns (limitado)GroupByUngroupClearCollectConcat, operaciones matemáticas complejas en campo calculado
Colecciones LocalesTodasN/A (el procesamiento ya es local)
Nota Técnica: Siempre busca el "triángulo azul" en el editor de fórmulas, que indica una advertencia de no delegación. Reescribir la fórmula para que sea delegable es casi siempre la mejor estrategia de rendimiento.

💻 Estrategia de Colecciones: Precarga y Almacenamiento Local

Cuando la delegación no es posible o el origen de datos es pequeño y estático (ej. una lista de opciones de configuración), la mejor práctica es cargar los datos en una Colección durante la fase inicial de la aplicación.

Carga Optimizada con la Fórmula Concurrent

Para reducir el tiempo de carga total, puedes utilizar la función Concurrent en el evento OnStart de tu aplicación. Esta función permite que múltiples operaciones se ejecuten al mismo tiempo, en lugar de secuencialmente.

Ejemplo de Carga Optimizada:

Concurrent(
    // Carga inicial de la lista principal de Productos (delegada si es posible)
    ClearCollect(colProductos, 'Lista de Productos');

    // Carga de tablas de referencia (ej. Regiones)
    ClearCollect(colRegiones, 'Lista de Regiones');

    // Inicializa variables de usuario (ej. Perfil)
    Set(varUsuario, User());
)

Al utilizar Concurrent, el tiempo que tarda la aplicación en cargarse es el tiempo de la operación más lenta, no la suma de todas, lo que mejora drásticamente la percepción de la velocidad por parte del usuario.

✍️ Mini Ejercicio Práctico: Implementando Concurrent

Escenario: Tienes una aplicación que necesita tres listas de SharePoint para inicializarse: ListaClientesListaTiposContacto y ListaMonedas.

Pasos a Seguir:

  1. Abre la aplicación y selecciona el objeto App en la vista de árbol.
  2. Ve a la propiedad OnStart.
  3. Reemplaza cualquier colección secuencial con la función Concurrent de la siguiente manera:
Concurrent(
    ClearCollect(colClientes, 'ListaClientes');
    ClearCollect(colTiposContacto, 'ListaTiposContacto');
    ClearCollect(colMonedas, 'ListaMonedas')
);
Navigate(HomeScreen) // Navega solo después de que todas las colecciones se hayan cargado concurrentemente.
  1. Guarda la aplicación y realiza una prueba de rendimiento para observar la diferencia en el tiempo de carga al usar Concurrent frente a la ejecución línea por línea.

📚 Fuentes

Limitaciones de consultas: límites de delegación y consultas

Mejorar el rendimiento con la función Concurrent

📌 Conclusión: Rendimiento como Prioridad

La optimización del rendimiento en Power Apps no es un lujo, sino una necesidad para la adopción empresarial. Dominar la Delegación y utilizar herramientas como Concurrent y las Colecciones te permitirá construir aplicaciones no solo funcionales, sino también rápidas y receptivas. Un usuario feliz es un usuario productivo.

¡Llamada a la Acción! Revisa el evento OnStart de tu aplicación más grande. Si estás cargando datos secuencialmente, ¡es momento de refactorizar con Concurrent!

Avatar de Eduardo Pastor

Published by

Categories:

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