Novedades Power Platform

Para la Transformación Digital e Innovación Tecnológica

Novedades Power Platform

Para la Transformación Digital e Innovación Tecnológica

Power AppsPower Platform

Power Apps #12 – Sesión 4 – Resumen

Conexión con SharePoint

🎯 Objetivo de la sesión

Cerrar los temas pendientes de la sesión anterior (funciones de fecha y condicionales) e iniciar el bloque de gestión de datos: cómo conectar una app de Power Apps a fuentes de datos externas, comenzando por SharePoint, en el marco de un caso práctico de aplicación de Kardex (control de inventario).


🗂️ 1. Repaso: funciones pendientes de la clase anterior

CategoríaFunciones vistasEjemplo práctico
Fecha y horaToday(), Now()Obtener fecha/hora actual
DateAdd(fecha, número, unidad)Sumar o restar días a una fecha (DateAdd(Today(), 7) / DateAdd(Today(), -7))
DateDiff(fechaInicio, fechaFin)Calcular diferencia de días entre dos fechas
Year(), Month(), Day() + Date()Construir el primer día del mes actual
CondicionalesIf(condición, valorSiVerdadero, valorSiFalso)Validar mayoría de edad: If(Value(ControlEdad.Text) >= 18, "Mayor de edad", "No es mayor de edad")
Switch(valor, caso1, resultado1, caso2, resultado2, ...)Clasificar edad según texto ingresado («joven»→18, «niño»→5, «adulto»→30)

📌 Concepto clave destacado por el docente: al comparar un control de entrada de texto con un número, siempre se debe convertir el texto con Value(); de lo contrario Power Apps compara tipos de datos distintos (texto vs. número) y la condición no funciona. [learn.microsoft.com], [c-sharpcorner.com]

Documentación oficial: If y Switch — funciones equivalentes a «si…entonces» y evaluación de múltiples coincidencias. | DateAdd/DateDiff — suman o calculan diferencias entre fechas usando unidades como Days, Months, Years. [learn.microsoft.com] [learn.microsoft.com]


💾 2. Fuentes de datos disponibles en Power Apps

El docente presentó los tres conectores principales que se usarán en el curso, explicando cuándo conviene cada uno:

ConectorCuándo usarloNivel de complejidad
SharePointAplicaciones pequeñas, tipo «listado de Excel» con pocos registrosBajo — se verá hoy
DataverseAplicaciones medianas con mayor volumen de datosMedio — próxima clase
SQL ServerBases de datos grandes o ya existentes; requiere más conocimiento técnicoAlto

También se mencionaron otros conectores posibles (Salesforce, Azure SQL), aunque de uso menos frecuente en el curso. [synapx.com], [ve3.global]

💡 Ventaja clave señalada en clase: cambiar de un conector a otro (por ejemplo, de SharePoint a Dataverse) es sencillo si la estructura de campos es la misma — solo se reemplaza el nombre de la tabla/lista en la propiedad Items del control, sin rehacer la lógica de la app.


🏗️ 3. Caso práctico: Aplicación de Kardex (control de inventario)

Se definieron dos listas de datos necesarias para la app:

Lista «Productos»

  • ID (identificador)
  • Nombre del producto (texto)
  • Stock (número)
  • Activo (Sí/No)

Lista «Movimientos»

  • ID
  • Producto (relación con la lista Productos)
  • Tipo de movimiento (Entrada / Salida — opción personalizable)
  • Cantidad (número)
  • Fecha
  • Observación

Pantallas construidas:

  1. Lista de Productos — con control Galería (título = nombre, subtítulo = stock, imagen del producto).
  2. Movimientos — con control Tabla (para mostrar el histórico de movimientos de un producto seleccionado).
  3. Navegación entre ambas mediante el ícono de flecha en cada fila de la galería.

⚙️ 4. Activación de la licencia para usar SharePoint

Antes de conectar, fue necesario activar una licencia (proceso mostrado en vivo, con demoras reales de propagación de 10-60+ minutos):

  1. Ingresar al Centro de administración de Microsoft 365.
  2. Ir a Marketplace → Todos los productos → Microsoft 365 → Business Standard (Trial).
  3. Asignar la licencia al usuario en Usuarios activos → Licencias y aplicaciones.
  4. Esperar la propagación (el docente experimentó demoras superiores a la hora estimada por Microsoft).

📌 Recomendación práctica: activar este tipo de licencias con anticipación (una clase antes de necesitarla), ya que la activación real no es instantánea.


🔗 5. Conectar la app a una lista de SharePoint

Pasos realizados en clase:

  1. Crear el sitio y la lista en SharePoint (Inicio → Sitios → Sitio de comunicación → Agregar lista en blanco).
  2. Renombrar la columna por defecto («Título») a ID, y agregar columnas: Nombre producto (texto), Stock (número), Activo (Sí/No).
  3. En Power Apps: Datos → Agregar datos → Conectores → SharePoint → seleccionar el sitio → seleccionar la lista → Conectar. [learn.microsoft.com], [learn.microsoft.com]
  4. Enlazar el control de galería/tabla asignando la propiedad Items al nombre de la lista conectada.
  5. Agregar registros de prueba directamente desde SharePoint (Nuevo elemento) y luego actualizar el conector en la app para reflejar los cambios.

Documentación oficial de referencia:«Connect to SharePoint from a canvas app» detalla cómo crear la conexión desde el menú Datos y agregar una o más listas como origen de datos. [learn.microsoft.com]

Fórmulas clave usadas al conectar los datos

FórmulaPropósitoEjemplo de la clase
ThisItem.NombreColumnaAcceder al valor de una columna del registro actual en la galeríaThisItem.'Nombre producto'
Concatenate()Unir texto con valores numéricos/de otra columnaConcatenate("Stock: ", ThisItem.Stock)
First(ThisItem.'Datos adjuntos').ValueObtener la primera imagen de una columna de tipo «Datos adjuntos» (que es una lista de archivos)Mostrar la imagen del producto en la galería
Set(varProductoSeleccionado, ThisItem)Guardar el registro seleccionado en una variable globalAntes de navegar a la pantalla de movimientos
Navigate(ScreenMovimientos)Cambiar de pantalla llevando consigo la variable ya definidaAl hacer clic en el ícono de flecha de cada fila

Documentación oficial: Attachments control — explica que la columna de datos adjuntos es una lista de archivos y solo soporta SharePoint/Dataverse como origen. | Back y Navigate — permite cambiar de pantalla y usar variables de contexto establecidas previamente con Set o Navigate. [learn.microsoft.com] [learn.microsoft.com], [codesharepoint.com]

Columnas automáticas de SharePoint

El docente explicó que cada lista de SharePoint genera automáticamente columnas internas de auditoría (Creado por, Fecha de creación, Modificado por, Datos adjuntos), visibles/ocultables desde la opción**»Mostrar/ocultar columnas»** en la vista de SharePoint.


🖼️ 6. Diferencia entre control Galería y control Tabla

AspectoGaleríaTabla
Permite insertar otros controles (imágenes, botones)✅ Sí❌ No
FormatoLibre/personalizableTabular, con encabezados automáticos
Uso en la clasePantalla «Lista de Productos»Pantalla «Movimientos» (histórico)

Documentación oficial: el control Gallery permite mostrar múltiples registros con distintos tipos de controles dentro de una plantilla personalizable. El control Table (moderno) es de solo lectura y ofrece un formato tabular con desplazamiento infinito, ideal para vistas de datos densas. [learn.microsoft.com] [learn.microsoft.com]


❓ Preguntas y respuestas destacadas de la clase

Pregunta (alumno)Respuesta del docenteRefuerzo con documentación oficial
Sara Chávez: ¿Se puede vincular Power Automate/Power Apps con el CRM Salesforce?Sí, mediante Conexiones → Nueva conexión → Salesforce, ingresando las credenciales del CRM, igual que se haría con SQL Server.Salesforce y SQL Server son conectores disponibles en Power Apps; la lógica de conexión (credenciales + selección de tablas) es la misma que para SharePoint, solo cambia el tipo de conector. [synapx.com]
Fabian Patiño: ¿Qué significa la columna «Activo» (Sí/No) en la lista de Productos?Es una columna creada por el propio diseñador de la app (no del sistema) que permite activar o desactivar un registro sin eliminarlo físicamente — por ejemplo, para ocultar un producto descontinuado aplicando un filtro por ese valor.Esta práctica corresponde a un borrado lógico (soft delete); se puede implementar con una columna Sí/No en SharePoint y aplicando la función Filter() sobre esa columna en la propiedad Items de la galería. [ve3.global]

✅ Conclusiones y recomendaciones

  • Las funciones de fecha y condicionales son la base para validar datos antes de guardarlos en cualquier fuente (SharePoint, Dataverse o SQL); dominar DateAdd, DateDiff, If y Switch evita errores comunes de tipo de dato. [learn.microsoft.com], [learn.microsoft.com]
  • Elegir el conector correcto depende del volumen y complejidad de los datos: SharePoint para listas pequeñas (tipo Excel), Dataverse para volumen medio con más seguridad/relaciones, y SQL Server para bases de datos grandes o ya existentes. [ve3.global]
  • La activación de licencias premium (como SharePoint vía Business Standard) no es instantánea — planifica este paso con anticipación en proyectos reales para evitar bloqueos de tiempo como los vividos en clase.
  • La estructura de la app es independiente del conector: si mantienes los mismos campos, puedes migrar de SharePoint a Dataverse (o viceversa) simplemente reconectando la fuente de datos, sin rehacer la lógica visual ni las fórmulas.
  • Usa Set() + Navigate() para pasar información entre pantallas (por ejemplo, el producto seleccionado en una galería hacia la pantalla de detalle/movimientos) — es el patrón estándar para navegación con contexto en Power Apps. [codesharepoint.com]
  • Diferencia Galería vs. Tabla según el objetivo: usa Galería cuando necesites personalización visual (imágenes, botones); usa Tabla cuando priorices una vista tipo hoja de cálculo con encabezados automáticos. [learn.microsoft.com], [learn.microsoft.com]
  • Próxima sesión: se completará la conexión a SharePoint (pendiente por demoras de licencia), se agregarán filtros de búsqueda al listado de productos, y se introducirá Dataverse como segunda fuente de datos para la app de facturación (con envío de correos y adjuntos PDF).
  • Recomendación del docente: practicar el flujo completo (crear lista → agregar columnas → conectar → enlazar controles) por cuenta propia, revisando la grabación si quedan dudas puntuales sobre la configuración.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

advanced-floating-content-close-btnBoton