En el fascinante mundo de la programación en Navision y Business Central, nos encontramos con desafíos que, a primera vista, podrían parecer insuperables. Sin embargo, como desarrolladores intrépidos, siempre buscamos soluciones ingeniosas para superar cualquier obstáculo que se nos presente. En esta ocasión, quiero compartir con vosotros una curiosidad que desafía la estructura fundamental de Navision.
¡preparados para sorprenderos! pues ‘Vamos manos a la obra! 🤯
Como sabéis, Navision es una herramienta transaccional que ejecuta tareas de manera secuencial, una detrás de otra, sin permitir múltiples transacciones simultáneas. Esto suele ser perfectamente funcional para la mayoría de los escenarios, pero ¿qué pasa cuando necesitamos ejecutar un proceso en medio de una transacción y continuar con ella independientemente del nuevo proceso lanzado? Aquí es donde entra en juego la función mágica llamada STARTSESSION.
Es importante destacar que este concepto, aunque inicialmente desarrollado en Navision, también es aplicable a Business Central.
La función STARTSESSION rompe con la lógica tradicional al permitirnos ejecutar una codeunit en una nueva sesión, con un ID de sesión único, lo que nos permite tener múltiples hilos de ejecución activos al mismo tiempo. ¿Impresionante, verdad?
Echemos un vistazo al código que hace posible esta hazaña:
OBJECT Codeunit 50007 StartSesion
{
OBJECT-PROPERTIES
{
Date=21/04/22;
Time=21:14:03;
Modified=Yes;
Version List=;
}
PROPERTIES
{
OnRun=BEGIN
SalesHeader.FINDFIRST;
STARTSESSION(NewSessionId,CODEUNIT::"Sales-Post",COMPANYNAME,SalesHeader);
END;
}
CODE
{
VAR
NewSessionId@1000000000 : Integer;
SalesHeader@1000000001 : Record 36;
BEGIN
END.
}
}
Como podemos observar, el código es sencillo pero sumamente poderoso. Simplemente pasamos algunos parámetros, como el ID de la nueva sesión, la codeunit que deseamos ejecutar, la empresa desde la que se ejecutará y, opcionalmente, la tabla pertinente. Esto resulta en la ejecución del proceso en una nueva sesión, permitiendo así una multitarea eficiente y sin problemas.
Pero, ¿cómo podemos aprovechar al máximo esta funcionalidad en nuestras aplicaciones? Imagina un escenario en el que necesitas realizar una serie de cálculos complejos en segundo plano mientras el usuario continúa interactuando con la interfaz de usuario. Con STARTSESSION, puedes lanzar esos cálculos en una sesión separada, manteniendo así la fluidez de la experiencia del usuario sin sacrificar el rendimiento.
En resumen, STARTSESSION es una herramienta invaluable para los desarrolladores de Business Central y Navision que desean llevar sus aplicaciones al siguiente nivel en términos de eficiencia y rendimiento. ¡Así que no dudes en aprovechar esta funcionalidad y sorprende a tus usuarios con una experiencia impecable en sus aplicaciones empresariales!
Como siempre este ejemplo entero lo tenéis colgado en GitHub.