Gracias a la Power Platform, se han multiplicado las opciones que tenemos para extender Dynamics 365 Finance and Operations sin necesidad de escribir código. En artículos anteriores vimos como podíamos aprovechar los flujos de Power Automate para ello, y en esta ocasión, nos vamos a centrar en las distintas formas que tenemos para insertar aplicaciones de lienzo de Power Apps dentro de formularios de FnO.

Preparar la aplicación para interactuar con F&O

Para este ejemplo, hemos preparado una aplicación de tipo lienzo que nos mostrará el importe total de las ventas realizadas a un cliente concreto, agrupando por el estado de las líneas, de este modo tendremos el importe total facturado, enviado, abierto y cancelado. Los datos del ERP podemos utilizarlos dentro de la aplicación por medio del uso de Virtual Entities o Virtual Tables. Puedes conseguir más detalles sobre cómo configurarlas en el siguiente artículo de Aurélien Clere.

Canvas app con virtual entities

Una vez tenemos la aplicación creada, y puesto que esta aplicación va a ser ejecutada desde le contexto de F&O, seguramente nos interese ser capaces de visualizar la información de la misma filtrada por el contexto en el que nos encontramos. Para nuestro caso, este contexto será la empresa (DataArea) y el cliente para el que queremos visualizar las ventas. Este contexto lo podemos conseguir de forma muy sencilla, puesto que F&O envía 2 parámetros a nuestra Canvas App (hasta la versión 10.0.19 solo era uno). Estos parámetros son la entidad legal (dataAreaId) y el segundo podemos elegirlo en base a iel lugar en el que insertemos nuestra app. Nosotros utilizaremos el código de cliente.

Para recibir y utilizar estos parámetros en nuestra aplicación, pondremos las siguientes líneas de código en el OnStart de la misma:

If(!IsBlank(Param("EntityId")), Set(FinOpsInput, Param("EntityId")), Set(FinOpsInput, ""));

If(!IsBlank(Param("cmp")), Set(FinOpsLegalEntity, Param("cmp")), Set(FinOpsLegalEntity, ""));

El EntityId contendrá el código del cliente, y con el parámetro cmp recibiremos el código de la empresa. Una vez seteados ambos valores en las variables FinOpsInput y FinOpsLegalEntity ya podemos utilizarlos para filtras los datos de nuestra aplicación.

Una vez finalizada nuestra aplicación, solo nos queda publicarla y compartirla con los usuarios de nuestra organización que vayan a hacer uso de ella.

Insertar aplicación en F&O

Ya tenemos todo listo, solo queda insertar la aplicación donde deseemos. Para ello, podemos seguir dos caminos distintos. El camino de la personalización, o el camino de la customización o desarrollo. Ahora bien, ¿Cuál es el camino correcto? Pues la respuesta a esto, es que depende. Depende de las capacidades y necesidades de tu organización.

La mayor ventaja del camino de la personalización, obviamente, es la independencia que te brinda el sistema para realizar modificaciones sencillas sin necesidad de contar con un desarrollador. Por otro lado, la gestión y mantenimiento a realizar para hacer llegar esas personalizaciones al resto de usuarios es mayor, y en cualquier momento (aunque no debería ocurrir nunca) un usuario con suficientes permisos podría eliminar esa personalización “por equivocación” perdiendo así el trabajo realizado.

Por el lado de la customización, esas modificaciones quedarían en los binarios de la propia aplicación, siendo efectivas para todos los usuarios en el momento del despliegue, obviamente, sin necesidad de distribuir la personalización y no pudiendo ser eliminado por usuarios con privilegios suficientes, por contra, tienes que contar con un desarrollador para ello.

Ahora que ya sabemos ventajas y desventajas de ambos procesos, veamos como realizar cada uno de ellos.

Insertar Power App a través de Personalización

Lo siguiente que vamos a hacer es navegar hasta el formulario donde queremos insertar nuestra Power App, en nuestro caso la insertaremos en el formulario de Clientes, como un nuevo FastTab dentro de la información del cliente, por lo tanto vamos a Clientes > Clientes > Todos los clientes, y pulsamos sobre uno de ellos para entrar en el detalle.

Una vez en el cliente, vamos a Opciones > Personalizar esta página, y sobre la barra de personalización que nos aparece, pulsamos sobre los 3 puntos () y hacemos clic en Agregar una aplicación.

Embed power app in Microsoft Dynamics 365 Finance and Operations apps

Seguidamente, seleccionaremos el área del formulario en el que queremos insertar la aplicación (yo he pulsado sobre los fast tabs), y hacemos click en el botón Power Apps.

Add power app canvas app in microsoft dynamics 365 finance and operations through customization

Ahora el sistema nos solicitará los siguientes datos:

  • Nombre: El nombre que indiquemos aparecerá como título del Fast Tab que se añadirá
  • Id. de aplicación: El Id. de la aplicación que queremos insertar
  • Contexto de entrada para la aplicación: Aquí indicaremos el valor que queremos pasar por parámetros (parámetro “EntityId) a la Power App además del dataAreaId (parámetro “cmp”)
  • Tamaño de la aplicación: Ancho o Fino
Fill power app info in dynamics 365 finance and operations

Para obtener el identificador de nuestra aplicación, podemos ir a make.powerapps.com y ver los detalles de la aplicación que hemos creado.

Power app details - Microsoft power platform

Una vez que hacemos clic en el botón Insertar, ya podemos ver nuestra aplicación insertada dentro de nuestro formulario, sin necesidad de desarrollar, y, como podemos ver, mostrando los datos filtrados previamente por el cliente que tenemos seleccionado.

Power app embeded in dynamics 365 finance and operations custtable form

Por último, nos quedaría guardar la vista con el nombre que queramos, y distribuirla entre los usuarios que necesiten hacer uso de la misma.

Save views dynamics 365 finance and operations

Insertar Power App a través de Customización (o desarrollo)

En este segundo camino, vamos a insertar la Power App dentro del mismo formulario, por medio de una pequeña customización o desarrollo, por lo que necesitaremos Visual Studio para conseguirlo. Lo primero que vamos a hacer, es crear una extensión del formulario en el que la vayamos a insertar. Para nuestro ejemplo, vamos a extender el formulario CustTable, añadiendo un nuevo FastTab, en el que insertaremos un control del tipo Power Apps Host.

Y por último rellenamos (como mínimo) las siguientes propiedades:

  • App ID: El Id. de la aplicación que queremos insertar (y que obtuvimos desde make.powerapps.com)
  • Data Source: El origen de datos del formulario que utilizaremos para enviar el parámetro EntityId
  • Entity Id Field: El campo que utilizaremos para enviar el parámetro EntityId
    • Utilizando estas dos propiedades, conseguimos el mismo efecto que al rellenar el contexto de entrada por medio de la personalización.

Ahora solo queda compilar y visualizar el resultado.

Conclusiones

Las conclusiones son bastante obvias, gracias a la Power Platform, las posibilidades de extender el ERP se han multiplicado por infinito. Ahora podemos permitirnos pensar más allá, dejar correr la imaginación, y construir, con algo de creatividad, componentes con los que hasta ahora no podíamos contar dentro de nuestros formularios.

En cuanto al camino a elegir (personalización o customización), yo tengo claro cual es mi favorito, ¿y tú, qué opinas?. Pero como indicaba más arriba, no creo que haya uno mejor que otro, simplemente uno más acorde a tus necesidades y capacidades.