1/4 Extended Data Types

Lo primero que deberíamos hacer es preguntarnos que es un EDT.
Todos sabemos que existen distintos tipos de datos, como por ejemplo: string, int, real, time, date...
Axapta utiliza estos datos a los que llama datos primitivos que son los que se almacenan en la base de datos y los EDT son datos personalizados que extienden de estos.

¿Por qué deberíamos crear EDT's?
La principal razón es su reutilización y la facilidad con la que se puede cambiar un dato en toda la aplicación.
Si los campos de una tabla están utilizando estos EDT en el momento que cambiemos alguna propiedad al EDT este también lo hará en las tablas.

¿No lo habéis entendido? Ningún problema, con un ejemplo quedará claro.

Si nos dirigimos a la tabla CustTable y tomamos el campo AccountNum (Cuenta del cliente),
al ver sus propiedades, vemos que es un campo de tipo String y en la parte inferior podemos ver que este campo extiende del EDT CustAccount. Además vemos que tiene dos propiedades que no podemos modificar que son la longitud del campo y su alineación.

Si vamos a buscar el EDT en el AOT.

AOT > Data Dictionary > ExtendedDataTypes

Lo primero que vemos es que en este caso si existe una etiqueta(Label) y un texto de ayuda(Help text), pero tal vez lo que más nos llame la atención es que este extended a su vez, extiende del CustVendAC.



Esto nos muestra que un campo de una tabla puede tener un EDT  y un EDT a su vez puede tener otro EDT y lo más importante de todo, esto es que las propiedades de los EDT se van heredando desde el que está en el nivel inferior hacía el superior.

Aquí tenemos un pequeño esquema de los extendeds CustAccount y VendAccount que se utilizan para el campo de cuenta en los clientes y proveedores:

Imaginad que en vuestra empresa necesitáis que la longitud del campo sea de 25 caracteres.
Si no estuvierais utilizando EDT deberíais ir por todas las tablas de la aplicación donde exista el campo de cuenta cliente/proveedor, e ir modificándolo en cada una de ellas.
En  cambio con la ayuda de los EDT, cambiando simplemente el valor del string size, se modificaría en toda la aplicación para todos los campos que estuvieran utilizándolo, así que cambiando el valor en externalAccount , automáticamente se cambiaría en todos los EDT que extiendan del ExternalAccount .
Por ejemplo el CustVendAc que pasaría a tener 25 caracteres y de la misma manera se cambiaría en todos los EDT que extendieran del CustVendAC, como el custAccount y el VendAccount.

Parece complicado pero no lo es. Simplemente debéis entender que los EDT no son más que objetos creados en Ax que se pueden extender unos de otros para facilitarnos el trabajo.
En SQL lo único que se guarda es un campo primitivo (en este caso los tipos que utiliza SQL) con las características que le hemos indicado en Ax.

Aquí tenéis una imagen del campo AccountNum de la tabla CustTable con las propiedades en el SQL:



Donde se puede ver la propiedad Length , en caso de modificar el EDT del AccountNum al sincronizar el DataDictionary, esta propiedad cambiaría.

Comentarios