Cómo conectar Power Apps con Dynamics AX 2012 (II)

Seguimos con esta serie de artículos para aprender a conectar Power Apps con Dynamics AX 2012. En la primera entrega vimos como leer datos de Dynamics AX, utilizando para ello un conector personalizado de Power Apps y una Web API.

En este segundo artículo nos ocuparemos de escribir datos en Dynamics AX, utilizando el mismo conector que ya tenemos creado, pero en este caso, haremos uso de funciones de tipo post para conseguir nuestro objetivo. ¡Vamos allá!

1. Añadir función al WebService de Dynamics AX

Empezaremos añadiendo una función para crear clientes a nuestro WebService. Utilizaremos la misma clase que en el primer artículo, PowerAppCustomerService.

[SysEntryPointAttribute(true),
AifCollectionTypeAttribute('return', Types::String)]
public str postCustomer(CustAccount _custAccount,
CustName _custName)
{
CustTable custTable;
NumberSeq numberSeq;
str ret;

try
{
ttsBegin;

numberSeq = NumberSeq::newGetNum(CustParameters::numRefCustAccount());

custTable.initValue();
custTable.AccountNum = _custAccount ? _custAccount : numberSeq.num();
custTable.Currency = CompanyInfo::standardCurrency();

custTable.insert(DirPartyType::Organization, _custName);

ret = "OK";

ttsCommit;
}

catch
{
ret = "Error";
}

return ret;
}

2. Añadir operación al servicio

En segundo lugar, añadiremos esta nueva función al servicio ya creado anteriormente, llamado PowerAppCustomerService.

3. Actualizar grupo de servicios

Para que el WebService detecte los cambios realizados, será necesario reimplementar el grupo de servicios.

4. Modificar Web API

Una vez tenemos modificado el WebService en Dynamics AX, tendremos que añadir también la nueva función en la API.

En este punto es donde introduciremos nuestra función de tipo. Cabe destacar que también sería posible realizar una inserción de datos en Dynamics AX utilizando una función de tipo, pero estas funciones tienen una limitación en la cantidad de datos a enviar en la URL. En su lugar, las funciones permiten enviar un cuerpo junto con la petición, por lo que no tendremos que incluir la información a enviar en la propia URL.

[HttpPost]
[Route("PostCustomer")]
public string PostExpedition([FromBody]Customer customer)
{
CallContext callContext = new CallContext();

callContext.Company = "DAT";
callContext.Language = "en-us";

PowerAppCustomerServiceClient client = new PowerAppCustomerServiceClient();

string ret = client.postCustomer(callContext,
customer.custAccount,
customer.custName);

return ret;
}

Es importante mencionar el atributo que se añade en los parámetros de la función. Esto hace referencia a lo que comentábamos anteriormente, y es que incuyendo este atributo, la información se enviará en un body, y no en la propia URL. Una función de tipo post únicamente puede contener un parámetro con el atributo [FromBody], por lo que tendremos que estructurar la información que necesitemos enviar en una clase como la siguiente:

public class Customer
{
public string custAccount { get; set; }
public string custName { get; set; }
}

5. Actualizar IIS

A continuación, actualizamos el IIS, sobrescribiendo la carpeta existente por la nueva versión de la Web API.

6. Actualizar conector personalizado de Power Apps

Dado que ya tenemos el WebService actualizado con la nueva función para crear clientes, únicamente nos quedaría añadirla también al conector personalizado de Power Apps.

Por último, actualizamos el conector.

7. Modificar PowerApp

Dado que estamos trabajando con un conector personalizado, no podremos actualizar el origen de datos de la PowerApp, sino que tendremos que eliminarlo y volverlo a añadir.

Una vez actualizado el origen de datos, añadiremos un nuevo botón para crear un cliente:

En la propiedad del botón, utilizaremos la nueva función PostCustomer, pasando por parámetro los valores introducidos por el usuario:

8. Probar PowerApp

Estamos en disposición de probar la nueva funcionalidad y comprobar que el cliente se crea correctamente en Dynamics AX.

Con esta nueva funcionalidad ya disponemos de una Power App conectada de forma bidireccional con Dynamics AX, en tiempo real, y sin necesidad de utilizar bases de datos intermedias.

Follow the Power {Platform}, por Miquel Vidal

Blog gestionado por Miquel Vidal sobre las BizApps de Microsoft, especialmente Power Platform

Miquel Vidal Morales

Written by

Technical arquitect | MCT | Power Platform | Dynamics AX/365FO | Microsoft 365

Follow the Power {Platform}, por Miquel Vidal

Blog gestionado por Miquel Vidal sobre las BizApps de Microsoft, especialmente Power Platform