¡Saludos, apasionados de la programación en Business Central!
En esta entrega, nos sumergiremos en el apasionante universo de las configuraciones asistidas, una herramienta esencial para optimizar tus aplicaciones en Microsoft Dynamics 365 Business Central. Si alguna vez te has preguntado cómo garantizar que tus aplicaciones estén listas para la acción desde el primer momento, ¡has llegado al lugar adecuado!
Configuración Asistida en Business Central: Explorando Más Allá del Código
En el vasto universo de Business Central, la configuración asistida se presenta como tu propio asistente personal, listo para preparar tu aplicación antes de su despliegue. Ya hemos echado un vistazo al código esencial que conforma esta función, ahora profundicemos en cómo puedes aprovechar al máximo esta poderosa herramienta.

Vamos manos a la obra 😎
La Estructura: Tu Guía para la Configuración Perfecta
El núcleo de esta solución radica en una tabla dedicada a la configuración, donde cada campo desempeña un papel crucial. Echemos un vistazo detallado:
table 50100 "Setup Extension"
{
Caption = 'Setup Extension';
DataClassification = ToBeClassified;
fields
{
field(1; "Primary Key"; Code[10])
{
Caption = 'Primary Key', Locked = true;
DataClassification = CustomerContent;
}
field(2; "Maximum Date"; Date)
{
Caption = 'Maximum Date', Comment = 'ESP="Fecha máxima"';
DataClassification = CustomerContent;
}
field(3; "Quantity of Days"; Integer)
{
Caption = 'Quantity of Days', Comment = 'ESP="Cantidad de días"';
DataClassification = CustomerContent;
}
field(4; "Destination Warehouse"; Code[20])
{
Caption = 'Destination Warehouse', Comment = 'ESP="Almacén de destino"';
DataClassification = CustomerContent;
}
}
}
Aquí, el campo “Primary Key” actúa como la clave principal, garantizando la singularidad de cada configuración. Los campos restantes, como “Maximum Date” y “Quantity of Days”, ofrecen la flexibilidad necesaria para adaptar tu aplicación a diversas situaciones.
La Página de Configuración: Donde Todo Cuenta
La interfaz visual de la configuración se materializa en una página, donde cada elemento se diseña estratégicamente para la máxima comprensión y facilidad de uso:
page 50100 "Setup Extension"
{
ApplicationArea = All;
UsageCategory = Administration;
Caption = 'Setup Extension';
PageType = Card;
SourceTable = "Setup Extension";
InsertAllowed = false;
DeleteAllowed = false;
layout
{
area(content)
{
group(General)
{
field("Maximum Date"; Rec."Maximum Date")
{
ToolTip = 'Specifies the value of the field', comment = 'ESP="Especifica el valor del campo"';
}
field("Quantity of Days"; Rec."Quantity of Days")
{
ToolTip = 'Specifies the value of the field', comment = 'ESP="Especifica el valor del campo"';
}
field("Destination Warehouse"; Rec."Destination Warehouse")
{
ToolTip = 'Specifies the value of the field', comment = 'ESP="Especifica el valor del campo"';
}
}
}
}
}
Aquí, la organización de los campos en grupos facilita la navegación y comprensión para el usuario final. Además, la exclusión de las opciones de inserción y eliminación garantiza que la configuración permanezca única y sin duplicados.
Inicialización y Cierre: Los Pilares de la Configuración Asistida
Los triggers “OnInit” y “OnClosePage” son cruciales para la experiencia del usuario y la integridad de la configuración:
trigger OnInit()
begin
if Rec.IsEmpty() then
Rec.Insert();
Commit();
end;
trigger OnClosePage()
var
GuidedExperience: Codeunit "Guided Experience";
begin
if (Rec."Maximum Date" <> 0D) And (Rec."Quantity of Days" <> 0) And (Rec."Destination Warehouse" <> '') then
GuidedExperience.CompleteAssistedSetup(ObjectType::Page, Page::"Setup Extension")
else
GuidedExperience.ResetAssistedSetup(ObjectType::Page, Page::"Setup Extension");
end;
Aquí, la inicialización asegura que siempre haya un registro disponible, mientras que el cierre evalúa si la configuración está completa, marcando la tarea como finalizada o reiniciándola según corresponda.
Verificación Continua: Garantizando la Configuración Completa
Incluso después de implementar la configuración, es vital verificar su completitud en otras partes de la aplicación. Imagina una página que muestra clientes y asegura que la configuración esté completa antes de su visualización:
page 50101 "Custom Customer "
{
ApplicationArea = All;
Caption = 'Custom Customer ';
PageType = List;
SourceTable = Customer;
UsageCategory = Lists;
Editable = false;
layout
{
area(content)
{
repeater(General)
{
field("No."; Rec."No.")
{
}
field(Name; Rec.Name)
{
}
field(City; Rec.City)
{
}
}
}
}
trigger OnOpenPage()
var
GuidedExperience: Codeunit "Guided Experience";
begin
if not GuidedExperience.IsAssistedSetupComplete(ObjectType::Page, Page::"Setup Extension") then
GuidedExperience.OpenAssistedSetup();
end;
}
Subscripción al Evento de Configuración Asistida
Este fragmento asegura que la página de clientes solo se abra si la configuración asistida aún no se ha completado, brindando a los usuarios la oportunidad de finalizar la configuración antes de explorar la aplicación.
codeunit 50100 "Setup Extension Mgt"
{
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Guided Experience", 'OnRegisterAssistedSetup', '', false, false)]
local procedure C1990_OnRegisterAssistedSetup()
var
GuidedExperience: Codeunit "Guided Experience";
TitleLbl: Label 'Setup Extension', Comment = 'ESP="Configuración extensión"';
DescriptionLbl: Label 'This is an assisted setup test', Comment = 'ESP="Esto es una prueba de configuración asistida"';
begin
if not GuidedExperience.Exists(Enum::"Guided Experience Type"::"Assisted Setup", ObjectType::Page, Page::"Setup Extension") then
GuidedExperience.InsertAssistedSetup(TitleLbl, //titulo de la aplicación
TitleLbl, //titulo corto
DescriptionLbl, //Descripción
2, //cuantos minitos se espera que dure la configuración
ObjectType::Page, //Tipo de objeto que se espera abrir
Page::"Setup Extension", //Id del objeto a abrir
Enum::"Assisted Setup Group"::Extensions, //El grupo del asistente
'', //aquí pondremos la URL del video si la hubiera
Enum::"Video Category"::Extensions,//categoria del video
'https://www.aesva.es'); // URL de ayuda
end;
}
Este código verifica si la configuración ya existe antes de insertarla, evitando duplicados innecesarios. Con estos pasos, tu aplicación estará marcada como pendiente de configuración en la interfaz asistida, facilitando el proceso para los usuarios.
Después la insertamos con la función “InsertAssistedSetup”, que necesitara los siguientes parámetros.
Resultado
Teniendo todo esto el resultado sería el siguiente:
En la configuración asistida saldría nuestra app pendiente de completar, y al estar pendiente si ejecutamos nuestra page de clientes nos abrirá esta misma page para poder configurarla.

Conclusión: Tu Hoja de Ruta hacia la Configuración Perfecta
En resumen, la configuración asistida en Business Central no es solo un conjunto de campos y líneas de código; es una hoja de ruta que te guía hacia la perfección en la configuración de tu aplicación. Al comprender cada componente y su función, puedes elevar tu maestría en Business Central a nuevas alturas.
No olvides explorar el repositorio de GitHub para obtener el código completo y experimentar con las posibilidades que te ofrece. ¡Hasta la próxima, desarrolladores! 🚀