Crear un API page en Business Central - Business Central

Breaking

lunes, 17 de julio de 2023

Crear un API page en Business Central

Una de las cuestiones que más me preguntan en mi canal "Aprende Business Central en Español", es como añadir campos a las APIs existentes.  Es decir, si yo quiero sacar el almacén en la API de pedidos de compra, ¿que puedo hacer?



Una mala noticia: Las API estandard no son extensibles (de momento).  Es decir, no podemos añadir campos nuevos, ni personalizados ni ningún campo existente en la tabla.

La documentación oficial de las API de Business Central, la tienes aquí: 

https://learn.microsoft.com/es-es/dynamics365/business-central/dev-itpro/api-reference/v2.0/

Los campos que no estén, no están disponibles.  Por tanto, lo único que nos queda, es crearnos nuestros propias API.

Hoy vamos a ver como crearnos una API personalizada y usarla en una Power App.

Aquí tienes la documentación oficial:

https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-api-pagetype?branch=main#example-of-the-api-page-type

Usando AL para crear una API personalizada

Es cierto, necesitamos desarrollar para poder crearnos una API personalizada para por ejemplo añadir un campo sencillo.  Pero también es cierto, que no requiere de unos conocimientos exagerados para hacerlo.

Crearnos una extensión

Como todo desarrollo en Business Central, requiere que nos creemos una extensión y para ello necesitamos VS Code y la extensión de AL Language:


En esta entrada te contaba como crearte tu primera extensión:

https://blog.msdyn365bc.es/2022/06/01desarrollotablasenbusinesscentral.html

También puedes ver un video en mi canal de YouTube:  



Crearnos una API page

Las API page, se diseñan de la misma forma que el resto de los objetos de Business Central.  Mediante un snippet :  tpage - Page of type API


Este snippet te crea un esquema con todo lo que necesitas:


Vamos a explicar las diferentes propiedades de la página (solo las aplicables a las API).  Lo primero a tener en cuenta es que la mayor parte de los datos que rellenemos deberán seguir la convención de nombres llamada camelCase:

- Debe comenzar en minúscula

- No debe contener espacios

- Solamente son válidos de la A-Z, a-z y 0-9

APIPublisher:  el nombre del publicador.  Por ejemplo el nombre de tu empresa, o tu nombre.

APIGroup: el nombre del grupo.  Por ejemplo si estás creando una API para una aplicación, podría ser el nombre de la aplicación.

APIVersion: ponle una versión a tu API.  Se llamará vX.Y o beta.  Ejemplo: v2.0

EntityName: El nombre de la entidad.  Por ejemplo "producto"

EntitySetName: El nombre del conjunto de entidades.  Lo normal es el prural de la entidad: "productos"

SourceTable: De que tabla sacamos nuestros datos.

delayedInsert: Indica cuando se graba el registro en la base de datos.  Es decir, si le ponemos true, el registro se grabará, cuando lo dejemos.


Existen también una serie de propiedades que pueden ser interesantes:

InsertAllowed = false -> si no queremos que se pueda insertar un registro.

ModifyAllowed = false -> si no queremos que se puedan modificar registros.

DeleteAllowed = false -> si no queremos que se puedan borrar registros.


A partir de aquí, puedes ir añadiendo campos de la tabla (la indicada en SourceTable)


Una vez terminada, con todos los campos que necesitemos, ya podemos publicar nuestra extensión (en el video anterior te mostraba como publicarlas)

Usando la nueva API en Power Apps

Ahora, desde Power App, podemos seleccionar el origen de datos Business Central, seleccionar el entorno y allí nos encontraremos la nueva API disponible:


Como puedes observar, aparece el 
EntitySetName (itemsWithImage), el APIPublisher (rcb), el APIGroup (aprendeBC) y la versión (v2.0).

Ya puedes usarlo, para crear tus galerias:


Te dejo en mi repositorio de GitHub algunas API pages, disponibles para que las uses (iré añadiendo más):

https://github.com/RCORELLA/BusinessCentral/tree/main/CustomAPI

Si tienes cualquier duda, ponlo en los comentarios o puedes ver también el video de mi canal, Aprende Business Central en Español, donde muestro lo visto aquí:





No hay comentarios: