[GELÖST] CurrPage immer out of scope in Page (BC19)

9. November 2021 13:18

Hallo,

ich entwickele eine Extension und nutze dazu eine Page mit eingebettetem ControlAddIn, welche als Modal geöffnet wird. Nun möchte ich im
Code:
OnQueryClosePage
trigger eine Javascript-Funktion aufrufen, was ich folgendermaßen versuche:

Code:
trigger OnQueryClosePage(CloseAction: Action): Boolean
    begin
        if (CloseAction = CloseAction::LookupOK) then begin
            CurrPage.ControlName.CallJavascript();
            exit(True);
        end;
    end;


wobei das Layout der Page so definiert ist:

Code:
usercontrol(ControlName; MeinControlAddIn)
            {
...
}


Die Page wird von einer anderen Page folgendermaßen aufgerufen:

Code:
action("Configure")
            {
                ApplicationArea = Manufacturing;

                trigger OnAction()
                var
                    MeinePage: Page "MeinePage";
                begin
                    Clear(MeinePage);
                    MeinePage.LookupMode(true);
                    MeinePage.SetRec(Rec);
                    MeinePage.RunModal();
                end;
            }


Leider wird die Javascript-Funktion nie aufgerufen, obwohl sie im ControlAddIn und in der js-Datei angelegt ist. Andersherum (von Javascript nach BC) läuft alles ohne Probleme. Wenn ich im trigger einen Breakpoint setze, wird mir angezeigt, dass CurrPage out of scope ist. Dies finde ich etwas merkwürdig.
Was mache ich hier falsch?
Zuletzt geändert von Iridium am 10. November 2021 14:00, insgesamt 1-mal geändert.

Re: CurrPage immer out of scope in Page (BC19)

9. November 2021 14:06

Ist die verwendete Page ID denn in der app.json abgedeckt, bei idRange bzw. idRanges?
https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-json-files

Re: CurrPage immer out of scope in Page (BC19)

9. November 2021 14:19

Ja, die verwendeten IDs sind abgedeckt.

Re: CurrPage immer out of scope in Page (BC19)

9. November 2021 15:05

Heißt das, dass du überhaupt in die CurrPage-Zeile mit dem Debugger reinspringst?
Ich frage, weil ich manchmal statt des erwarteten LookupOK nur ein OK zurückbekommen habe.

Re: CurrPage immer out of scope in Page (BC19)

9. November 2021 15:13

Hallo,
Ich frage, weil ich manchmal statt des erwarteten LookupOK nur ein OK zurückbekommen habe.


Das liegt aber daran, ob die aufgerufene Page im Lookup- Mode aufgerufen wurde oder nicht.

Gruß fiddi

Re: CurrPage immer out of scope in Page (BC19)

9. November 2021 15:22

Ich habe beides probiert:
Die Page im Lookup-Modus aufrufen und auf LookupOK warten (funktioniert, er geht rein, aber ruft JS nicht auf).
Die Page normal aufrufen und auf OK warten (funktioniert, er geht rein, aber ruft JS nicht auf).
Von daher ist das wahrscheinlich irrelevant für das Problem.

Re: CurrPage immer out of scope in Page (BC19)

9. November 2021 20:19

Die Aufrufe eines AddIns sind asynchron. Ich denke die Page schließt sich, bevor das passiert. Ruf die Funktion mal nicht in dem trigger auf, sondern woanders. Damit das so klappt, musst du False zurückgeben und die Page dann über ein Event schließen.

Re: CurrPage immer out of scope in Page (BC19)

9. November 2021 22:01

Wenn ich also eine Javascript-Funktion beim Schließen der Page ausführen will, so kann ich dir schon die Funktion dort schon aufrufen, muss dann aber False zurückgeben und die Page später irgendwie schließen?

Re: CurrPage immer out of scope in Page (BC19)

10. November 2021 08:00

Korrekt. Idealerweise trigger die Javascript-Funktion ein Event in BC, dieses schließt die Seite. Achtung, läuft dann wieder in den Trigger...

Re: CurrPage immer out of scope in Page (BC19)

10. November 2021 14:00

Vielen Dank, das hat es gelöst!