Skip to main content

Freeze Integration in benutzerdefinierte Seiten

Überblick

Die DEXPRO Freeze Extension bietet Dokumentenarchivierungs-Funktionalität, die es Benutzern ermöglicht, Dokumente, Anhänge und zugehörige Daten für jeden Business Central-Datensatz zu speichern und abzurufen. Dieser Leitfaden erklärt, wie Sie die Freeze-Funktionalität in benutzerdefinierte Seiten integrieren.

Kernkomponenten

1. Quick Freeze Infobox

Die zentrale Komponente ist die "DXP FRZ Quick Freeze FB" Seite, die folgendes bietet:

  • Drag-and-Drop Datei-Upload-Funktionalität
  • Anzeige archivierter Datensätze bezogen auf den aktuellen Datensatz
  • Schnellzugriff auf Freeze-Operationen

2. Management Codeunits

  • "DXP Extension Mgt." - Verwaltet Freeze-Warteschlangen-Operationen und Hintergrundverarbeitung
  • "DXP Freeze Search Mgt." - Verwaltet Suchfunktionalität für archivierte Datensätze
  • "DXP FRZ Result Mgt." - Verwaltet Ergebnisanzeige und Archiv-Ansicht

3. Wichtige Tabellen

  • "DXP Frz Recent Record" - Speichert aktuelle Freeze-Einträge
  • "DXP Freeze Setup" - Konfigurationseinstellungen
  • "DXP Freeze Record Type" - Verfügbare Datensatztypen für die Archivierung

Implementierungsschritte

Schritt 1: Infobox hinzufügen

Fügen Sie die Quick Freeze Infobox zum Layout-Bereich Ihrer Seite hinzu:

layout
{
    addfirst(factboxes)
    {
        part("DXP Quick Archive"; "DXP FRZ Quick Freeze FB")
        {
            ApplicationArea = All;
            SubPageLink = "Record System ID" = field(SystemId),
                         "Record Table No." = const(Database::"Ihr Tabellenname");
            SubPageView = sorting("Entry No.") order(descending);
        }
    }
}

Wichtige Hinweise:

  • Ersetzen Sie Database::"Ihr Tabellenname" mit der entsprechenden Tabellenkonstante

Schritt 2: Navigationsaktionen hinzufügen

Fügen Sie Freeze-bezogene Aktionen zum Aktionsbereich der Seite hinzu:

actions
{
    addfirst(navigation)
    {
        action("DXP Freeze")
        {
            Caption = 'Freeze öffnen';
            ApplicationArea = All;
            Image = Archive;
            ToolTip = 'Öffnet das Freeze-Archiv und zeigt mit dem ausgewählten Datensatz verknüpfte Anhänge an.';
            ShortcutKey = 'Ctrl+Alt+F';
            trigger OnAction()
            var
                ResultMgt: Codeunit "DXP FRZ Result Mgt.";
            begin
                ResultMgt.SubmitSearchAndShowResults(Rec.RecordId(), FrzSearchMgt.GetSearchCombinationForTable(Rec.SystemId, Rec.RecordId.TableNo()));
            end;
        }
    }
}

Schritt 3: Hervorgehobene Aktionen hinzufügen

actions
{
    addfirst(Category_Category16)
    {
        actionref("DXP Freeze_Promoted"; "DXP Freeze")
        {
        }
    }
    modify(Category_Category16)
    {
        Caption = 'DEXPRO Freeze', Locked = true;
    }
}

Schritt 4: Seiten-Trigger hinzufügen

trigger OnAfterGetCurrRecord()
begin
    CurrPage."DXP Quick Archive".Page.SetSourceRecord(Rec.RecordId());
end;

Schritt 5: Variablen deklarieren

var
    ExtMgt: Codeunit "DXP Extension Mgt.";
    FrzSearchMgt: Codeunit "DXP Freeze Search Mgt.";

Vollständiges Beispiel

Hier ist ein vollständiges Beispiel für eine benutzerdefinierte Belegseite:

pageextension 50000 "Mein benutzerdef. Beleg Erw." extends "Mein benutzerdefinierter Beleg"
{
    layout
    {
        addfirst(factboxes)
        {
            part("DXP Quick Archive"; "DXP FRZ Quick Freeze FB")
            {
                ApplicationArea = All;
                SubPageLink = "Record System ID" = field(SystemId),
                         "Record Table No." = const(Database::"Ihr Tabellenname");
                SubPageView = sorting("Entry No.") order(descending);
            }
        }
    }
    
    actions
    {
        addfirst(navigation)
        {
            action("DXP Freeze")
            {
                Caption = 'Freeze öffnen';
                ApplicationArea = All;
                Image = Archive;
                ToolTip = 'Öffnet das Freeze-Archiv und zeigt mit dem ausgewählten Datensatz verknüpfte Anhänge an.';
                ShortcutKey = 'Ctrl+Alt+F';
                trigger OnAction()
                var
                    ResultMgt: Codeunit "DXP FRZ Result Mgt.";
                begin
                    ResultMgt.SubmitSearchAndShowResults(Rec.RecordId(), FrzSearchMgt.GetSearchCombinationForTable(Rec.SystemId, Rec.RecordId.TableNo()));
                end;
            }
        }
        
        addfirst(Category_Category16)
        {
            actionref("DXP Freeze_Promoted"; "DXP Freeze")
            {
            }
        }
        modify(Category_Category16)
        {
            Caption = 'DEXPRO Freeze', Locked = true;
        }
    }

    trigger OnAfterGetCurrRecord()
    begin
        CurrPage."DXP Quick Archive".Page.SetSourceRecord(Rec.RecordId());
    end;

    var
        ExtMgt: Codeunit "DXP Extension Mgt.";
        FrzSearchMgt: Codeunit "DXP Freeze Search Mgt.";
}

Zusätzliche Suchabfragen einrichten

Um auch Archiveinträge anhand von nicht direkt über die System-ID/Tabellennummer verbundenen Datensätzen (via BC archiviert) anzeigen zu können, können zusätzliche Suchabfragen eingerichtet werden. Dies ist hier dokumentiert: https://docs.squeeze.one/books/freeze-for-dynamics-365-bc-de-de/page/zusatzliche-suchabfragen

Testen Ihrer Implementierung

  1. Navigieren Sie zu Ihrer erweiterten Seite
  2. Überprüfen Sie, ob die Quick Freeze Infobox erscheint
  3. Testen Sie die Aktion "Freeze öffnen" (Strg+Alt+F)
  4. Laden Sie Testdateien per Drag-and-Drop hoch
  5. Überprüfen Sie, ob archivierte Datensätze in der Infobox erscheinen

Dieses Integrationsmuster gewährleistet konsistente Freeze-Funktionalität über alle Business Central-Seiten hinweg und behält dabei die von der DEXPRO Freeze Extension etablierte Benutzererfahrung bei.