Desatando el Poder de la Transferencia de Datos en Business Central: Isolated Storage

Descubre cómo simplificar la transferencia de datos entre diferentes áreas en Microsoft Business Central utilizando la poderosa herramienta Isolated Storage. Conoce paso a paso cómo implementar este método a través de un emocionante ejemplo práctico, permitiéndote llevar tus desarrollos al siguiente nivel.

¡Hola a todos, programadores intrépidos de NaviWorld! 🚀

¿Alguna vez te has enfrentado a la tarea desafiante de transferir datos entre áreas en Business Central, sin que estas estén directamente vinculadas por una tabla? Puede ser todo un reto, pero tengo una joya que puede facilitarte la vida: el Isolated Storage. Si no lo has explorado aún, estás a punto de descubrir una herramienta poderosa para tus desarrollos en Business Central. Su documentación oficial en link

Primero, permíteme desmenuzar un poco más esta joya. El Isolated Storage es un conjunto de funciones que te permite transferir información de manera eficiente entre diferentes partes de tu aplicación sin necesidad de vinculaciones directas. ¿Suena emocionante, verdad?

En el corazón de este método está la capacidad de almacenar y recuperar datos de manera sencilla. Para ilustrarlo, tomemos un ejemplo práctico: imagina que al iniciar la aplicación, necesitas tener un dato disponible en todo tu código para su uso posterior. Aquí es donde el Isolated Storage brilla con todo su esplendor.

Vamos a sumergirnos en un ejemplo concreto. Imaginemos que queremos transferir el número de cliente desde la lista de clientes a la lista de proveedores. En este caso, crearemos dos extensiones de página para estas listas. ¡Vamos a ello!

Después de la breve explicación vamos manos a la obra 😎

Lista de Clientes

Comencemos por la lista de clientes. Creamos el desencadenador OnOpenPage y las variables necesarias.

pageextension 50100 CustomerListExt extends "Customer List"
{
    trigger OnOpenPage();
    var
        IsolatedStorageKey: text;
    begin
        IsolatedStorageKey := 'CustomerFirstNo';
        if IsolatedStorage.Contains(IsolatedStorageKey, DataScope::CompanyAndUser) then
            IsolatedStorage.Delete(IsolatedStorageKey, DataScope::CompanyAndUser);
        IsolatedStorage.Set(IsolatedStorageKey, Format(Today) + ' ' + Rec."No.", DataScope::CompanyAndUser);
    end;
}

En este código, creamos una clave única utilizando la variable de texto IsolatedStorageKey. Buscamos si ya existe algo en esa clave y, en caso afirmativo, lo eliminamos. Finalmente, agregamos el valor que queremos en nuestra clave. ¿Fácil, verdad?

Ahora, lo interesante aquí es el parámetro DataScope::CompanyAndUser al final. Esto nos permite definir en qué escenarios queremos que este dato sea visible. Podemos elegir entre diferentes opciones, como hacerlo visible solo para el usuario, la extensión, o en nuestro caso, para la empresa actual y el usuario. ¡Esto abre un abanico de posibilidades!

Lista de Proveedores

Pasemos ahora a la lista de proveedores.

pageextension 50101 VendorListExt extends "Vendor List"
{
    trigger OnOpenPage();
    var
        IsolatedStorageKey: text;
        IsolatedStorageValue: Text;
    begin
        IsolatedStorageKey := 'CustomerFirstNo';
        if IsolatedStorage.Contains(IsolatedStorageKey, DataScope::CompanyAndUser) then begin
            IsolatedStorage.Get(IsolatedStorageKey, DataScope::CompanyAndUser, IsolatedStorageValue);
            message(IsolatedStorageValue);
        end;
    end;
}

Aquí, nuevamente, utilizamos la clave del Isolated Storage. Si existe algo en esa clave, recuperamos el valor y lo mostramos a través de un mensaje. Esto es solo un ejemplo básico, pero imagina las posibilidades cuando trabajas con datos más complejos y escenarios más avanzados.

Este ejemplo completo, junto con el código, lo tienes disponible en mi repositorio de GitHub aquí.

Espero que este viaje por el Isolated Storage haya iluminado tu camino en el fascinante mundo de la programación en Business Central. ¡Hasta la próxima, compañeros de código! 🚀

Share your love

Leave a Reply

Your email address will not be published. Required fields are marked *