Variables globales
Las variables globales son las variables que se usan con más frecuencia, dada su flexibilidad. Después de establecer la variable, puede hacer referencia a ella o actualizarla en cualquier parte de la aplicación. Esto permite evitar realizar consultas repetitivas sobre la misma información, para generar la información que se necesita de forma imperativa o, a veces, simplemente como un marcador de posición.
Almacenamiento de información del usuario
Un patrón de diseño común en las aplicaciones es personalizar la aplicación. Esto puede consistir en algo tan sencillo como dar la bienvenida y mostrar el nombre del usuario en cada pantalla de la aplicación. Con Power Apps, puede mostrar un mensaje de bienvenida y obtener el nombre del usuario de forma declarativa con solo usar la siguiente fórmula en un control de etiqueta.
"Welcome " & User().FullName
Esta fórmula muestra la cadena de bienvenida, luego consulta Azure Active Directory para obtener la propiedad de usuario DisplayName y mostrarla como texto. Pero, si esta función se incluye en cada pantalla, cada vez que una pantalla se abra, Power Apps tendrá que consultar los datos de Microsoft Entra ID directamente. Esto crea llamadas repetitivas en la red que ralentizan la aplicación.
Un método mejor sería almacenar esa información en una variable global al abrirse la aplicación y, después, hacer referencia a esa variable en cualquier parte de la aplicación. Para lograrlo, modifique la propiedad OnStart de la aplicación con la siguiente fórmula.
Set(varUserDisplayName, User().FullName)
Ahora, en el control de etiqueta, debería cambiar la fórmula por la siguiente.
"Welcome " & varUserDisplayName
De este modo, se obtiene el mismo resultado que con la fórmula anterior, pero en lugar de tener que volver a Microsoft Entra ID en cada pantalla, Power Apps puede hacer referencia al valor almacenado en la variable.
Seguimiento del estado en una variable
Con mentalidad declarativa, podría ocultar o mostrar los controles en función de una consulta de datos. Por ejemplo, si tuviera una aplicación para administrar los pedidos del cliente, podría tener un icono de advertencia que se mostrara solo en aquellos casos en los que el cliente tuviera más de tres facturas pendientes. Además de la advertencia, podría tener el requisito de obtener la aprobación de un administrador si un cliente quisiera enviar un pedido nuevo y hubiera más de tres facturas pendientes. Este flujo de trabajo de aprobación lo iniciará el usuario, seleccionando un botón de aprobación.
Con mentalidad declarativa, podría establecer la propiedad Visible del icono de advertencia conforme a lo siguiente.
CountRows(Filter(InvoiceEntity, CustomerNumber = ThisCustomersNumber
And Status = "Outstanding")) > 3
Si esta tiene el estado de verdadero, el icono se muestra y, si tiene el estado de falso, no se muestra. A continuación, debería repetir idéntica fórmula en la propiedad Visible del botón Aprobación.
El problema es que esto se convierte en una fórmula compleja que hay que mantener en dos ubicaciones diferentes, y esa consulta generará tráfico de red duplicado, al procesarse en la aplicación y también hacerlo en el origen de datos.
Un enfoque mejor es ejecutar la llamada compleja solo una vez, almacenar el resultado en una variable y, después, usar esa variable para controlar la propiedad Visible de cada control.
Para ello, configure la propiedad OnVisible de la pantalla para establecer la variable.
Set(varOustandingExceeded, CountRows(Filter(InvoiceEntity, CustomerNumber =
ThisCustomersNumber And Status = "Outstanding")) > 3)
La variable varOutstandingExceeded tiene estado verdadero o falso según el resultado de la fórmula. Ahora, establezca la propiedad Visible del icono y del control de botón en varOutstandingExceeded.
No se necesita ninguna fórmula ni función adicional. Esto se debe a que esos controles aceptan tanto el valor de verdadero como el de falso en la propiedad Visible, y la variable tendrá valor de verdadero o falso. Según la función Set en la propiedad OnVisible de la pantalla, Power Apps establecerá el tipo de variable en un valor booleano y establecerá el valor en true o false según el resultado de la fórmula.
Los pequeños cambios como este hacen que la aplicación sea más eficaz y fácil de mantener. Debería incluir variables siempre que recupere información repetidamente que no vaya a cambiar mientras la esté usando.