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
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.
                                                    
No Comments