Estructuras de Datos
Tablas y Tipos de Datos
Dificultad: 3/10Una tabla es el objeto fundamental de Business Central donde se almacenan los datos. Cada tabla representa una entidad del negocio (clientes, artículos, préstamos...) y está compuesta por campos, claves y triggers.
Un registro puede tener hasta 500 campos (8.000 bytes). Puede haber hasta 40 claves por tabla.
Estructura base de una tabla
AL
table <id> "<NombreTabla>"
{
fields
{
field(<id>; "<NombreCampo>"; <TipoDato>) { }
}
keys
{
key(PK; "<Campo>") { }
}
}
Tipos de dato principales
Numéricos
| Tipo | Descripción |
|---|---|
Integer |
Entero entre -2.147.483.648 y 2.147.483.647 |
Decimal |
Número decimal de hasta 999.999.999.999.999,99 |
Boolean |
Verdadero o falso (0/1) |
BigInteger |
Entero de 8 bytes |
Option |
Lista cerrada de opciones (0 hasta 2.147.483.646) |
Cadena
| Tipo | Descripción |
|---|---|
Text[n] |
Hasta 250 caracteres alfanuméricos |
Code[n] |
Entre 1 y 250 caracteres, siempre en mayúsculas y sin espacios al inicio/fin |
Fecha y hora
| Tipo | Descripción |
|---|---|
Date |
Días desde 01/01/1574 hasta 31/12/9999 |
Time |
Reloj de 24h en milisegundos |
DateTime |
Fecha y hora combinadas en UTC |
Duration |
Diferencia entre dos DateTime |
Propiedades destacadas de los campos
Code y Text
| Propiedad | Descripción |
|---|---|
InitValue |
Valor inicial del campo |
NotBlank |
Impide dejar el campo vacío |
TableRelation |
Vincula el campo con otra tabla |
ExtendedDataType |
Validaciones especiales (email, teléfono, URL...) |
Integer y Decimal
| Propiedad | Descripción |
|---|---|
MinValue / MaxValue |
Rango permitido |
BlankZero |
Oculta el cero en pantalla |
AutoIncrement |
Se incrementa automáticamente con cada registro |
DecimalPlaces |
Posiciones decimales para guardado y visualización |
Ejemplo: Tabla de vehículos
AL
table 50101 "Vehiculo"
{
fields
{
field(1; "No."; Code[20]) { NotBlank = true; }
field(2; "Matricula"; Code[10]) { NotBlank = true; }
field(3; "Marca"; Text[50]) { }
field(4; "Modelo"; Text[50]) { }
field(5; "Año Fabricacion"; Integer)
{
MinValue = 1900;
MaxValue = 9999;
}
field(6; "Kilometros"; Decimal)
{
MinValue = 0;
DecimalPlaces = 0:2;
}
field(7; "Fecha Alta"; Date) { }
field(8; "Activo"; Boolean)
{
InitValue = true;
}
field(9; "Estado"; Enum "Estado Alquiler") { }
}
keys
{
key(PK; "No.") { }
key(SK1; "Matricula") { Unique = true; }
}
}
💡 Tips
- Usa
Codepara identificadores que se buscan y filtran frecuentemente (matrículas, códigos de cliente...). - Usa
Textpara descripciones o nombres que no se usan como clave. AutoIncrement = trueen un campoIntegeres la forma más sencilla de generar IDs automáticos, aunque no garantiza secuencia contigua si hay borrados.