🟢 Introducción
En una Canvas App, muchas veces necesitamos guardar información que debe estar disponible en cualquier pantalla de la aplicación, como datos del usuario, idioma seleccionado, permisos, o configuraciones temporales.
Para eso existe la función Set(), que permite crear y actualizar variables globales, accesibles desde cualquier parte de la app mientras esté en ejecución.
🧠 Qué es / para qué sirve
La función Set() sirve para:
- Crear una variable global.
- Actualizar su valor.
- Guardar datos que deben usarse en múltiples pantallas.
- Transportar información central durante toda la sesión del usuario.
Las variables globales viven en memoria mientras la app está activa.
🧩 Sintaxis
Set( NombreVariable, Valor )
- NombreVariable → el nombre de tu variable global
- Valor → puede ser texto, número, registro, booleano, tabla, color, colección, etc.
💻 Ejemplos con código
🔹 Ejemplo 1 — Guardar el nombre del usuario
Set( UserName, "Pepe" )
Uso:
"Hola " & UserName
🔹 Ejemplo 2 — Contar clics
Set( Contador, Contador + 1 )
🔹 Ejemplo 3 — Guardar un registro completo
Set( CurrentProduct, LookUp( Productos, ID = 10 ) )
Acceder a propiedades:
CurrentProduct.NombreCurrentProduct.Precio
🔹 Ejemplo 4 — Guardar un resultado de API
Set( WeatherData, WeatherConnector.GetWeather("Madrid")
🔹 Ejemplo 5 — Modificar variable desde OnStart
Set( ThemeColor, RGBA(10, 80, 180, 1) )
🧱 Buenas prácticas
✅ Pon nombres descriptivos a tus variables (CurrentUser, SelectedItem, ThemeColor).
✅ Úsalas para datos globales, no para cálculos pequeños.
✅ Inicialízalas en App → OnStart cuando sea necesario.
✅ Documenta qué variables globales existen en tu app.
✅ Mantén su número limitado (no abuses de variables globales).
✅ Prefiere context variables (UpdateContext) para valores temporales de pantalla.
⚠️ Errores comunes
🚫 Crear muchas variables globales para datos que deberían estar en colecciones o tablas.
🚫 No inicializar la variable y esperar que tenga siempre un valor.
🚫 Asignar registros con estructura cambiante → errores en controles.
🚫 Usar Set() dentro de galerías o ForAll (mala práctica).
🚫 Copiar variables globales a múltiples pantallas sin revisar su tipo.
🔄 Variantes o alternativas
- UpdateContext() → variables locales por pantalla.
- SetProperty() (Copilot-enabled apps) → nuevas capacidades contextuales.
- Colecciones (Collect) → para listas de datos, no simples valores.
- Environment Variables (Dataverse) → para configuración empresarial.
- Dataverse o SharePoint → cuando necesitas persistencia real.
📚 Recursos oficiales
📗 Variables en Canvas Apps
📕 Guía de buenas prácticas Power Fx
🧩 Mini práctica
- Abre una Canvas App nueva.
- En el botón “Guardar nombre”, en OnSelect, escribe:
Set( UserName, TextInput1.Text )
Set( UserName, TextInput1.Text )
- En otra pantalla, agrega un Label con:
"Bienvenido, " & UserName
"Bienvenido, " & UserName
- Corre la app y escribe tu nombre.
- Cambia de pantalla → verifica que el nombre persiste.
- Crea otra variable llamada ThemeColor y úsala para cambiar el color de fondo de dos pantallas.


Deja un comentario