Power Apps Standards – Variables
El Alcance de las Variables: ¿Dónde «Viven» tus Datos?
El «alcance» de una variable simplemente decide en qué partes de tu aplicación (tu «casa») puedes leer o usar esa nota. Si necesitas un dato en muchas habitaciones, usarás una nota «global». Si solo la necesitas en una habitación, usarás una nota «local».
Elegir el tipo correcto es clave para tener una app ordenada y que funcione bien.
| Tipo de Variable (y su analogía) | Cómo se Crea (la Función) | Dónde Funciona (su Alcance) |
| Global (El Post-it en la nevera) | Set | La nota está disponible en todas las habitaciones de la casa (en toda la app). |
| Local (La pizarra de la cocina) | UpdateContext | La nota solo existe y se puede leer en una sola habitación (la pantalla actual). |
| De un solo uso (El cálculo en una servilleta) | With | La nota solo existe para hacer un cálculo rápido y se tira a la basura al terminar. |
Ejemplos para que lo veas claro
1. Variable Global (El Post-it en la Nevera) – Función Set
Úsala para guardar datos que necesitas en TODA la app, como el nombre del usuario que ha iniciado sesión.
Con Set, le dices a Power Apps: «Oye, crea este Post-it y pégalo en la nevera para que todos lo vean».
Fragmento de código
// Le decimos a la app: "Crea una nota global llamada 'gblImpuestoVenta'"
// "y apunta el resultado de coger el subtotal y multiplicarlo por 0.13"
Set(
gblImpuestoVenta,
Value(txt_Pedidos_Subtotal.Text) * 0.13
);
2. Variable Local (La Pizarra de la Cocina) – Función UpdateContext
Úsala para cosas que solo importan en la pantalla donde estás, como mostrar u ocultar un menú emergente.
Con UpdateContext, le dices: «Apunta o actualiza estas notas en la pizarra de ESTA habitación». Puedes crear o modificar varias a la vez.
Fragmento de código
// Le decimos a la app: "En la pizarra de esta habitación..."
UpdateContext(
{
// "...apunta que el número de productos es 0"
locContadorProductos: 0,
// "...apunta que el menú de confirmación está oculto (false)"
locMostrarMenuConfirmacion: false,
// "...y borra lo que sea que hubiera en el formulario de pedido"
locModoFormularioPedido: Blank()
}
);
(Truco: Fíjate que los nombres empiezan por gbl para las globales y loc para las locales. ¡Es una buena práctica para no liarte!)
3. Variable de un Solo Uso (El Cálculo en la Servilleta) – Función With
Esta es genial para no ensuciar tu app con variables que solo necesitas un instante. Es como hacer un cálculo rápido en una servilleta y luego tirarla.
Con With, le dices: «Primero, calcula esto y guárdalo en esta nota temporal. Justo después, usa esa nota para hacer esto otro. Luego, olvídate de todo».
Fragmento de código
// Le decimos a la app:
// "PRIMERO: busca el contacto de este pedido y guárdalo en una 'servilleta'
// llamada 'contactoDelNegocio'"
With(
{contactoDelNegocio: LookUp('Pedidos de Venta', ID = ThisItem.ID)},
// "SEGUNDO: ahora usa esa servilleta para juntar el nombre, un espacio
// y el apellido. Cuando termines, tira la servilleta a la basura."
Concatenate(
contactoDelNegocio.Nombre,
" ",
contactoDelNegocio.Apellido
)
);
¿Por Qué Complicarse con Variables Globales y Locales?
Podrías pensar: «Si las variables globales se pueden usar en todas partes, ¿por qué no usar solo esas y me quito de líos?». ¡Buena pregunta! La respuesta corta es: para evitar el caos y crear apps que no se rompan solas.
El Peligro de Usar Solo Variables Globales (El Caos de los Post-its en la Nevera)
Imagina una mansión enorme (una app muy grande con muchas pantallas) donde la única forma de comunicarse es dejando Post-its en la nevera de la cocina.
Al principio parece fácil. Dejas una nota que dice: cantidadLeche = 1.
Pero de repente, alguien en el salón (Pantalla A) está pensando en hacer un bizcocho y cambia la nota de la nevera a cantidadLeche = 3. Un poco después, otra persona en el jardín (Pantalla B), que solo quería un café, ve la nota, coge el único cartón de leche y, como ya lo ha usado, cambia la nota a cantidadLeche = 0.
Por la noche, la persona del salón va a hacer su bizcocho, mira la nota que él mismo había cambiado y ve que pone «0». ¡Alguien ha usado la leche! Su plan se ha arruinado.
Ese es el problema: cuando una variable puede ser modificada desde cualquier sitio, es muy difícil seguirle la pista. Un cambio que haces en una pantalla puede romper algo en otra punta de la aplicación sin que te des cuenta. Arreglar estos fallos («bugs») es una auténtica pesadilla.
La Ventaja de las Variables Locales (Cada Cosa en su Sitio)
Ahora imagina que cada habitación tiene su propia pizarra. La persona del salón puede apuntar en su pizarra: lecheParaBizcocho = 3.
Puede cambiar ese número, borrarlo o hacer lo que quiera, con la total tranquilidad de que no está afectando a ninguna otra pizarra de la casa. La persona del jardín seguirá viendo la nota principal de la nevera (cantidadLeche = 1) y sabrá que esa es la leche para todos.
Para el que crea la app, esto es un alivio. Es mucho más fácil y rápido comprobar que todo funciona bien en una sola pantalla, sabiendo que tus cambios están «encapsulados» y no van a provocar un desastre en otro lugar. Escribes código de mejor calidad y mucho más rápido.
La Eficiencia de las de un Solo Uso (Mantén tu Casa Ordenada)
Y por último, las variables de la servilleta (With). ¿Por qué existen? Para no acumular basura.
Imagina que cada vez que haces un cálculo rápido (sumar dos números, buscar un dato…), lo apuntas en un Post-it y lo pegas en la nevera. En poco tiempo, la nevera estaría tan llena de notas que sería imposible encontrar la importante.
La memoria de tu app funciona parecido. Si la llenas de variables que solo usas una vez, la estás sobrecargando inútilmente, y eso puede hacer que vaya más lenta.
La función With es como usar una servilleta: haces el cálculo, lo usas en ese mismo instante y la tiras a la basura. La variable desaparece de la memoria, manteniendo tu app limpia, ordenada y ágil.