Developer
Las codeunits en Business Central, serían lo que otros lenguajes serían clases, es decir, objetos en los que agrupamos procedimientos o funciones que están relacionados. Dentro de las codeunits más populares serían la 80 Sales-Post o la 90 Purch. -Post. Son las que gestionan todas los procedimientos del registro de ventas (80) o compras (90), pero tenemos muchas más. Obviamente, nosotros como desarrolladores, también podemos crearnos nuestras propias codeunits, para agrupar los procedimientos que gestionen nuestras extensiones.
Propiedad Subtype
Esto se define en una propiedad de la Codeunit llamada Subtype
Codeunit de subtype Install
Las codeunit de instalación, se ejecutan cuando una extensión se instala en Business Central. Habitualmente se utilizan para comprobar la versión, rellenar valores o activar webservices.
Dispones de dos triggers:
OnInstallAppPerCompany(), que se ejecuta para operaciones relativas a las empresas. Se ejecuta para cada empresa.
OnInstallAppPerDatabase(), que se ejecuta para operaciones relativas a la base de datos. Solamente se ejecuta una vez.
¿Como controlamos la versión?
Para controlar la versión de una extensión y saber si ya existe o no, utilizamos un tipo de datos que se llama ModuleInfo. Cada extensión dispone de cierta información que le habitualmente rellenamos en el fichero app.json y que podemos obtener desde AL mediante el comando:
NavApp.GetCurrentModuleInfo(moduleInfo)
Actualización
Ya tenemos instalada la extensión en Business Central. Ahora, la actualizamos. Puede ocurrir que en la nueva versión, tengamos algún dato que debamos cambiar: Tablas que cambian, datos que se modifican,...
Para ello usamos la codeunit de subtipo: Upgrade
En este tipo de codeunits, disponemos de más triggers:
OnCheckPreconditionsPerCompany() y OnCheckPreconditionsPerDatabase()
Se utilizan para comprobar requisitos que se deben de cumplir antes de actualizar la versión.
OnUpgradePerCompany() y OnUpgradePerDatabase()
Se utilizan para realizar la actualización
OnValidateUpgradePerCompany() y OnValidateUpgradePerDatabase()
Desde aquí podemos comprobar si la actualización ha sido ejecutada correctamente.
Upgrade Tags
Además de controlar las versiones mediante ModuleInfo, podemos usar las Upgrade Tags. En ocasiones, solamente con la versión puede ser un poco complicado. Por tanto, podemos usar un módulo disponible en System Application para gestionarlas. Se llama Upgrade Tags que gestiona, entre otros objetos una codeunit 9999 "Upgrade Tag" y una tabla 9999 "Upgrade Tags".
En la codeunit, podemos encontrar unos métodos como:
HasUpgradeTag(Tag;TagCompanyName), que nos permite verificar si un Tag existe en la empresa indicada en TagCompanyName.
SetUpgradeTag(NewTag) que nos permite guardar un tag.
Como sintaxis para los tags, se recomienda Prefijo de empresa - ID - Descripción - YYYYMMDD.
Como ejemplo de desarrollo podemos usarlas así:
No hay comentarios:
Publicar un comentario