Tablas personalizadas de Business Central en PowerApps con Power Automate - Business Central

Breaking

lunes, 1 de febrero de 2021

Tablas personalizadas de Business Central en PowerApps con Power Automate

 Nivel: Developer

En entradas anteriores os he mostrado como manejar las entidades virtuales de Business Central desde Power Apps (ver aquí) o como hacer un conector personalizado (ver aquí)

En este post, usaremos una tercera posibilidad: Power Automate.

Como con todas las opciones que estamos viendo, para el acceso a tablas personalizadas de Business Central desde el exterior vamos a utilizar las API

Diseñar un API

El diseño de la tabla personalizada y la página de tipo API ya lo tratamos aquí por lo que no creo necesario entrar más en detalle.

Hay que recordar que se trata de un tipo especial de Page, que corresponde a las API:


También crearemos una página de tipo lista para poder visualizar los datos en Business Central:

Probar en Postman la API

Para probar la API, usaremos Postman y verificamos que todo está funcionando correctamente:



Recordemos que la URL de las API propias es diferente de las generadas por Microsoft y se diseña en vsCode con la página:


Hasta aquí, realmente nada nuevo.  

Usando la API en PowerApps

Vamos a ver el uso de esta API desde Power Apps, para lo cual crearemos una nueva aplicación de lienzo desde cero, añadiremos una galeria y un botón de actualizar:




Lo siguiente que haremos será añadir una acción de "Power Automate", seleccionando la opción correspondiente del menú:

Pulsaremos sobre "Crear un nuevo flujo" para así poder diseñar una nueva acción en Power Automate.

Creando la acción de Power Automate

Una vez abierto Power Automate, nos permite abrir diferentes opciones de flujos.  En nuestro caso usaremos "Botón de PowerApps":


El primer paso que haremos será la llamada http, por lo que buscaremos la correspondiente acción (HTTP) y la cumplimentaremos:




Rellenaremos los siguientes campos:

Método: pondremos GET puesto que vamos a leer los partes de intervención que rellenaremos en la galería.

URI: pondremos la URL que hemos probado en Postman, incluyendo el tenant y la empresa

Autenticación: De momento usaremos Básica

Usuario y Contraseña: El usuario y contraseña web que tenemos de Business Central.

Manejando la respuesta en JSON

El siguiente paso, será controlar el JSON recibido al realizar la llamada http.  Para ello, añadimos un nuevo paso a nuestro flujo llamado Análisis del archivo JSON:


Contenido: En contenido añadiremos la opción "Cuerpo".

Esquema: En el esquema del JSON es para saber como nos llegan los datos. Lo que haremos será utilizar el botón "Generar desde la muestra", que nos permitirá copiar la respuesta a la llamada de la API que hemos obtenido en las pruebas de Postman y Power Automate se encargará de obtener de allí el esquema.

Añadiremos un último paso para gestionar la respuesta recibida.  Este paso será una acción "Respuesta":

Código de estado: 200.  Es decir, cuando la respuesta sea correcta.

Cuerpo: Será el cuerpo del JSON recibido.

Esquema JSON del cuerpo de respuesta: Igual que en el caso anterior, para evitar tener que escribir el esquema, usaremos "Generar desde la muestra" y copiando la respuesta recibida en Postman.


Pulsamos guardar y ya tenemos el flujo creado, por lo que se recomienda probarlo para ver que todo ha ido bien.

Una vez que tenemos nuestro flujo definido y probado, lo consumiremos en Power Apps.

Cargar datos en la galería usando Power Automation

Podemos ejecutar la acción de cargar cuando se carga el screen pero para hacerlo más fácil, vamos a usar el botón actualizar, en la propiedad "OnSelect"

Lo primero que debemos hacer es crear una colección usando la instrucción "ClearCollect"  En nuestro caso se llamará "PartesIntervencion" que será el primer parámetro.


Como segundo parámetro usaremos el JSON recibido de PowerAutomate, para lo que seleccionaremos la acción Power Automate y seleccionaremos el flujo creado previamente.


NOTA: Recordad que en la versión española el separador de parámetros es el punto y coma (;) a diferencia de la versión americana que es la coma (,).

Ya deberíamos tener la colección obtenida, así que podemos probarlo pulsando el botón "Actualizar" de nuestra App.

Efectivamente se ha ejecutado, pero el resultado no es el esperado:


No nos devuelve los partes de intervención, si no que nos devuelve un campo odata.context y otro con una tabla value, que es justamente lo que nos devolvía Postman:


Por tanto, lo que necesitamos es obtener el JSON que hay dentro de "value" que es donde realmente están los partes de intervención que es lo que queremos obtener.  Para ello, crearemos una segunda colección llamada ValoresParte, cuyo contenido será la tabla "value" de PartesIntervencion:


Y ahora sí, podemos ver el contenido de los partes de intervención en la colección:



Ya solamente nos queda, enlazar esta colección a nuestra galería y asignar los campos necesarios:


Resumiendo.  Teniendo una API, no ha sido necesario configurar las entidades virtuales.  Simplemente añadiendo la funcionalidad de Power Automate en nuesta App, hemos conseguido acceder a Business Central y a nuestra tabla personalizada.

Como podemos comprobar, la potencia de las API de Business Central es tremenda, pudiéndola usar en diferentes procesos.


1 comentario:

Jarmesto dijo...

Excelente trabajo y explicación. Yo sigo con mi duda sobre que pasara con la autentifocacion basica . Otra cuestion que lanzo? No es un coladero en el licenciamiento?