En Business Central existen tablas del sistema que no almacenan datos de negocio como una tabla normal, sino informacion tecnica y metadatos del entorno. Este desarrollo crea una coleccion de paginas AL para consultar esas tablas virtuales de forma directa desde el cliente.
¡Vamos manos a la obra! 📚
Configuracion del proyecto
La extension esta en .Desarrollos/AL/virtual_tables/ y se define como OnPrem, con runtime 10.0 y rango de objetos 90000+:
{
"id": "8f80241f-b325-4aad-8aeb-49b87a8dcdc9",
"publisher": "Esteve Sanpons Carballares",
"name": "Virtual Tables",
"version": "1.0.0.0",
"application": "21.0.0.0",
"platform": "21.0.0.0",
"idRanges": [
{
"from": 90000,
"to": 900100
}
],
"target": "OnPrem",
"runtime": "10.0"
}
Con esta base, el proyecto expone distintas tablas virtuales mediante paginas de tipo List con UsageCategory = Administration.
Patron que siguen las paginas
Todas las paginas siguen el mismo patron: seleccionar la SourceTable, declarar un repeater y exponer campos informativos con su ToolTip.
Ejemplo real con la pagina de AllObj:
page 90006 "AllObj"
{
ApplicationArea = All;
Caption = 'AllObj';
PageType = List;
SourceTable = AllObj;
UsageCategory = Administration;
layout
{
area(content)
{
repeater(General)
{
field("App Package ID"; Rec."App Package ID")
{
ToolTip = 'Specifies the GUID of the app from which the object originated.';
ApplicationArea = All;
}
field("Object ID"; Rec."Object ID")
{
ToolTip = 'Specifies the ID of the object.';
ApplicationArea = All;
}
field("Object Name"; Rec."Object Name")
{
ToolTip = 'Specifies the name of the object.';
ApplicationArea = All;
}
field("Object Type"; Rec."Object Type")
{
ToolTip = 'Specifies the type of the object.';
ApplicationArea = All;
}
}
}
}
}
Ejemplos utiles de tablas virtuales incluidas
1) Tabla virtual Field: para inspeccionar metadatos de campos (tipo, longitud, PK, relacion, clasificacion, etc.).
page 90008 "Field"
{
ApplicationArea = All;
Caption = 'Field';
PageType = List;
SourceTable = "Field";
UsageCategory = Administration;
}
2) Tabla virtual Event Subscription: para auditar suscriptores, objeto publicador y numero de llamadas.
page 90012 "Event Subscription"
{
ApplicationArea = All;
Caption = 'Event Subscription';
PageType = List;
SourceTable = "Event Subscription";
UsageCategory = Administration;
}
3) Tabla virtual Token Cache: para revisar datos de cache de autenticacion y trazas de tenant/usuario.
page 90035 "Token Cache"
{
ApplicationArea = All;
Caption = 'Token Cache';
PageType = List;
SourceTable = "Token Cache";
UsageCategory = Administration;
}
Paginas incluidas en el desarrollo
El proyecto contiene 36 paginas AL de consulta sobre tablas virtuales y de sistema:
- All Control Fields
- AllObj
- Application Dependency
- Application Object Metadata
- Application Resource
- Database Locks
- Event Subscription
- Extension Execution Info
- Field
- Installed Application
- Intelligent Cloud Status
- Isolated Storage
- License Information
- License Permission
- NAV App Capabilities
- NAV App Extra
- NAV App Installed App
- NAV App Object Prerequisites
- NAV App Setting
- NAV App Tenant Operation
- Object
- Object Metadata
- Object Options
- Page Table Field
- Permission
- Permission Range
- Published Application
- Record Link
- Scheduled Task
- System Object
- Table Field Types
- Table Metadata
- Table Relations Metadata
- Table Synch. Setup
- Tenant Feature Key
- Token Cache
Conclusión
Este desarrollo es una caja de herramientas tecnica para administracion y diagnostico en BC OnPrem. En lugar de consultar metadatos desde SQL o herramientas externas, puedes abrir paginas AL y revisar informacion de objetos, eventos, permisos, aplicaciones instaladas y mas tablas virtuales directamente en Business Central.
Si quieres ver el código completo, está en GitHub.