Personalización de campos por configuración y una visión de los desarrollos en D365BC

0
310

Business Central nos conmina a profesionalizar los desarrollos y pensar en ellos como una aplicación que debe representar una base de acción para múltiples requisiciones de distintos clientes. Representa un cambio de mentalidad, los desarrollos y peticiones que son requeridas no deben ser vistas como algo inherente a un cliente sino como algo que tiene muchos puntos en común para todos ellos.

Cuando empecé con Dynamics NAV recuerdo que me llamó mucho la atención el funcionamiento de las dimensiones. Me llamó la atención el cómo se gestionaba el nombre de esos campos «Dimensión global 1» y «Dimensión global 2» y como cambiaban conforme se modificaban los nombres de las dimensiones principales en la configuración de contabilidad.

Una requisición recurrente de los clientes es la creación de campos para la mera clasificación de los datos. Por ejemplo, categorizar los clientes, alguna característica de los productos… La forma general de responder a estas peticiones es, evidentemente, la creación de campos nuevos para las entidades que las requieren, una forma completamente correcta de hacerlo pero que implica una poca capacidad de reutilización de código (a parte de lo evidente que es crear un campo, vaya).

Un día me puse a revisar el funcionamiento de las dimensiones enfocado a conseguir una forma de configuración de nuevos campos en fichas de clientes, proveedores, productos y que otorgue libertad al cliente en la forma o el momento en el que usarlos.

En esta entrada se va a describir el modo en el que se pueden controlar los captions de la forma en la que lo hacen las dimensiones:

En primer lugar muestro la configuración. Consiste en dos tablas con distintos campos que gestionan los distintos campos posibles de las tablas maestras y sus posibles valores:

En esa tabla se gestionan los nombres de los campos que aparecerán en la tabla de clientes y proveedores. Mediante el último campo de la tabla se gestionan los 20 campos que he dejado disponibles para que trabajen de este modo.
Los valores de estos campos se configuran en una tabla relacionada, la misma forma en la que se gestionan las dimensiones:

Así pues, la configuración es sencilla y el resultado óptimo:

La gestión de los captions se realiza, en Business Central, mediante la Codeunit 42, el evento «OnResolveCaptionClass».

Un desarrollo de este tipo, en contraposición a crear el campo en la tabla con el nombre deseado, conlleva evidentemente mas tiempo. No óbice hay que tener en cuenta todo lo que puede realizarse en base a este desarrollo.
La realización de una extensión, en base a esta, en la que en lugar de campos de tipo código fueran de tipo numérico no entraña mayor dificultad que reorganizarlas eliminando partes de la misma.

Con posterioridad a la instalación de esta extensión y en base a ella podrían realizarse otras extensiones de forma que ampliasen su funcionalidad. Algunos ejemplos podrían ser: Traspasar valores a documentos y tablas de movimientos o utilizar los valores para implementar alguna lógica de negocio que sea requerida.
Hay que cambiar la mentalidad de lo particular a lo general, extensiones base que deben extenderse para otorgar esa funcionalidad particular que es requerida por un cliente. No se trata propiamente de la realización de Addones sino que no se debe perder de vista que ese modo de operar se puede realizar y tener como base en las operaciones con Business Central.

Para poder realizar todo lo detallado, como he mencionado se utiliza el evento «OnResolveCaptionClass» de la codeunit 42 de forma que tenemos la suscripción:

La gestión de los caption de los campos:

En la tabla de clientes crearemos los campos de tipo código:

Y por último, las fichas de cliente se utilizará, al sacar los nuevos campos, una propiedad que es el «CaptionClass» que es la que gestiona el retorno de la función utilizada en la codeunit 42 (La propiedad Visible se gestiona en base a que exista configurada cada clasificación):