Actualizacion variable global en pagina

Cursos de Navision 100% online Foros Foro Dynamics NAV y Business Central Actualizacion variable global en pagina

Este debate contiene 4 respuestas, tiene 2 mensajes y lo actualizó  BETEA hace 2 meses, 1 semana.

Viendo 5 publicaciones - del 1 al 5 (de un total de 5)
  • Autor
    Publicaciones
  • #12739

    BETEA
    Participante

    Buenos dias,

    He creado uan extension,  que tiene varias paginas. En una de ellas, existe una variable global. Sobre esta variable se carga el resultado de ciertos calculos que se realizan al marcar una lineas de la pagina. Esa variable, se muestra en al pagina.

    En el docker funciona correctamente, tanto en el cliente WEB como en el de windows, pero al cargar la extension en una instalacion cloud, no funciona, la variable no se actualiza. Quizas me alta añadir alguna propiedad a la variable, o a la propia pagina?

    Esto de qeu no funciona igual en el docker y en la version cloud me esta volviendo loco..

     

    Muchas gracias!!!

    #12747

    BETEA
    Participante

    Acabo de fijarme que en el docker no funciona del todo correcto en el cliente web, en cambio en el cliente windows si, perfectamente. Tengo el siguiente trozo de codigo:

    page 50201 «Time Tracking Entries»
    {
    Caption = ‘Movs. seguim. tiempo’;
    PageType = Worksheet;
    ApplicationArea = All;
    UsageCategory = Administration;
    SourceTable = «Time Tracking Entry»;
    SourceTableView = SORTING («Posting Date», «Resource No.», «Time-from», «Movement Type») WHERE (Confirm = FILTER (false), Posted = FILTER (false));
    DelayedInsert = true;
    ShowFilter = false;
    RefreshOnActivate = true;

    layout
    {
    area(Content)
    {
    field(gTotalTime; gTotalTime)
    {
    ApplicationArea = all;
    Caption = ‘Total tiempo:’;
    //Editable = false;
    Enabled = false;

    }
    repeater(group)
    {
    field(«Posting Date»; «Posting Date»)
    {
    ApplicationArea = All;
    }

    field(Confirm; Confirm)
    {
    ApplicationArea = All;

    trigger OnValidate()
    var
    lTimeTrackingEntryCheckConfirmed: Record «Time Tracking Entry»;
    lText002: TextConst ESP = ‘Las lineas deben seguir la secuencia Inicio-Parada’;

    begin

    CurrPage.SaveRecord();
    gTotalTime := gBeteaStandardFunctions.CalcDuration;
    CurrPage.UPDATE;

    end;
    }
    }
    part(Subpart; «Time Tracking Subpart»)
    {
    ApplicationArea = All;
    }
    }
    }

    Como veis «gTotalTime» es la variable global que recibe el resultado de una funcion, y esta incluida como campo en la cabecera de la página. El asunto es que me acabo de dar cuenta que la sentencia «currpage.update» no refresca correctamente la subparte que he incluido, ya que la lineas que confirmo en la pagina principal, deben de pasar a mostrarse en la subpagina. Si salgo de la pagina y entro, si que se pueden ver en la subpagina.

    Por ello, me da que pensar que el currpage.update no esta funcionando correctamente, y esta provocando todo esto. Eso si, como he dicho, en la version WEB, ya que en el cliente windows funciona perfecto,

    Muchas gracias

     

    #12763

    Cristina Nicolàs
    Jefe de claves

    El tema del CurrPage.Update() siempre ha sido un rollo y siempre ha dado problemas.

    Yo por esto ya hace mucho tiempo que en lugar de mostrar variables globales y tener que ver donde y cuando las actualizo, prefiero mostrar directamente la función en la página. Así es el propio sistema el que decide cuando y como re-ejecutar.

    Es decir, en lugar de:

    field(gTotalTime; gTotalTime)
    {
    ApplicationArea = all;
    Caption = ‘Total tiempo:’;
    //Editable = false;
    Enabled = false;

    }

    yo pondría

    field(gTotalTime; gBeteaStandardFunctions.CalcDuration)
    {
    ApplicationArea = all;
    Caption = ‘Total tiempo:’;
    //Editable = false;
    Enabled = false;

    }

    y la variable global ya ni necesito crearla.

     

    De todos modos no te sé asegurar si al actualizar datos en la parte (subpágina), se va a recalcular la cabecera.
    Es posible que necesites poner CurrPage.Update igualmente en algún sitio.

    Y puede que esta parte funcione distinto entre cliente web y cliente de escritorio. No lo sé.

    Un saludo,
    Cristina Nicolàs

    ¿Quieres conocer las últimas novedades sobre Business Central? Dynamics ScaleUp 2019.

    Consulta fechas en
    DynamicsScaleUp.com

    #12764

    Cristina Nicolàs
    Jefe de claves

    Otra cosa que estaba pensando…

    Lo de actualizar la página de cabecera cuando se actualiza su subpágina siempre ha funcionado mal.
    No es de ahora de las extensiones, ni del cliente web, ni siquiera del cliente de escritorio, porque el problema de «no se me actualiza una variable en la cabecera» pasaba también en el cliente clásico.

    Fíjate que en todos los sitios del estándar en donde se ve este tipo de comportamiento, el de mostrar un dato calculado directamente en página y que se actualice bien, en el estándar lo que hacen siempre es que el dato no lo están mostrando en la página de cabecera, sino que lo están mostrando en la subpágina, aunque fuera del repeater, y así da la sensación de que está en cabecera.

    Es el caso de los diarios que muestran totales. Es una página repeater, y fuera del repeater muestran las variables o funciones que dan los totales.
    Y es el caso también de los documentos de compra, que justo después de las líneas muestran una sección de totales de documento, que a simple vista puede parecer que están en la cabecera pero que en realidad están en la subpágina, fuera del repeater.

     

    Lo digo porque quizá podrías mover la visualización de este total y ponerlo directamente en la subpágina.
    Es posible que en la subpágina tengas que poner un CurrPage.Update en algún sitio, pero como la información a actualizar está en la misma página en la que haces el Update, te funcionará mejor seguro.

     

    También veo que hablas de que al seleccionar algo en la página, se tiene que actualizar algo en la subpágina.
    Para este caso, yo creo que el CurrPage.Update de la página principal no te sirve. Tienes que hacer un CurrPage.Update en la subpágina.
    Para poderlo hacer, tienes que crear una función en la subpágina que haga el CurrPage.Update, y en donde te interese en la página principal llamar a la función de la subpágina.

     

    Un saludo,
    Cristina Nicolàs

    ¿Quieres conocer las últimas novedades sobre Business Central? Dynamics ScaleUp 2019.

    Consulta fechas en
    DynamicsScaleUp.com

    #12767

    BETEA
    Participante

    Muchas gracias Cristina por las pistas. La verdad es qeu este desarrollo me esta volviendo loco…

    Por ejemplo, el hecho de crear en la subpagina un funcion que haga el update, y llamar a dicha funciona desde la pagina, lo he hecho en un NAV2009, y em daba un fallo como diciendo que la subform no estaba abierta…

    Respecto a la extension en si, despues de varias pruebas, los escenarios que me encuentro ahora son muy extraños.

    En en docker, en el cliente windows, funciona todo perfecto. En camio, en la version WEB, no actualiza la subpagina, pero si la variables global con el sumatorio. Si salgo de la pagina y vuelvo a entrar, la subpagina tiene el contenido corecto, por lo que entiendo que falla el update.

     

    En cambio en la instalacion cloud, actualiza correctamente y al momento la subpagina, pero no la variable global de la cabecera.

    Y todo con el mismo codigo… · comportamientos diferentes.

    Probare con las ideas que me has comentado, y ya os comentare el resultado.

     

    Muchas gracias de nuevo!

Viendo 5 publicaciones - del 1 al 5 (de un total de 5)

Debes estar registrado para responder a este debate.

Members Currently Active: 0
No users are currently active
Keymaster | Moderator | Participant | Spectator | Blocked
Additional Forum Statistics
Threads: 874, Posts: 2.813, Members: 895
Welcome to our newest member, B59938811
Most users ever online was 15 on 5 April, 2019 9:31 am