Variables globales

Completado

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 la personalización. Por ejemplo, puede mostrar un mensaje de bienvenida que incluya el nombre del usuario en cada pantalla. En Power Apps, puede recuperar el nombre del usuario de forma declarativa mediante la siguiente fórmula en un control Label:

"Welcome " & User().FullName

Esta fórmula muestra la cadena Welcome y, a continuación, consulta Azure Active Directory para la propiedad DisplayName del usuario y la muestra como texto. Pero si incluye esa función en cada pantalla, cada vez que se abre una pantalla, Power Apps tiene que consultar esos datos directamente desde el identificador de Entra de Microsoft. 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

Captura de pantalla del código y el mensaje correspondiente del paso anterior.

Esta fórmula obtiene la misma salida que 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 comienza por 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 es true, el icono se muestra y, si es false, el icono 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. En función de la función Set de la propiedad OnVisible de la pantalla, Power Apps establecerá el tipo de variable en Boolean y establecerá el valor en true o false en función del 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.