| Docs Hilfe
  AppSource  
Docs  /  NAVAX Extension Base  /  Informationen für Entwickler

 XML-Schemata


2025/09/16 • 5 Min. Lesedauer

Hinweis

In den nachfolgenden Erläuterungen wird die NAVAX-Erweiterung E-Document - ebInterface als Beispiel verwendet.

Eigene XML-Schemaart definieren

NAVAX XML-Schemata können von verschiedenen Erweiterungen genutzt werden. Damit für eine Erweiterung eigene XML-Schemata zur Verfügung stehen, muss zuerst eine neue XML-Schemaart über eine enumextension hinzugefügt werden:
enumextension 70714601 "NVXEB NCEX XML Schema Type" extends "NCEX XML Schema Type"
{
    value(70714600; "NVXEB ebInterface")
    {
        Caption = 'ebInterface', Comment = 'DEU="ebInterface"';
    }
}

Root-Datensatz-Regel festlegen

Über das Event OnGetMultipleRootRecordsAllowed in Codeunit "NCEX XML Schema Mgt." wird festgelegt, ob die Schemata der Erweiterung auf einem Root-Datensatz basieren, oder ob mehrere Datensätze erlaubt sind. Bei ebInterface ist z.B. nur ein gebuchter Beleg pro XML-Datei erlaubt. Der Root-Datensatz muss also für ebInterface-Schemata eindeutig sein und darf nicht mehrere gebuchte Belege enthalten. Weitere Informationen dazu finden Sie unter XML-Schemata, Root-Zeileneinstellungen.
[EventSubscriber(ObjectType::Codeunit, Codeunit::"NCEX XML Schema Mgt.", 'OnGetMultipleRootRecordsAllowed', '', false, false)]
local procedure OnGetMultipleRootRecordsAllowed(SchemaType: Enum "NCEX XML Schema Type"; var MultipleRootRecordsAllowed: Boolean)
begin
    if (SchemaType = SchemaType::"NVXEB ebInterface") then
        MultipleRootRecordsAllowed := false;
end;

Wichtig

if (SchemaType = SchemaType::"NVXEB ebInterface") then
Diese if-Bedingung entscheidet, für welche XML-Schemaart der Code ausgeführt werden soll und darf auf keinen Fall weggelassen werden. Der Wert muss mit dem hinzugefügten Wert aus der enumextension übereinstimmen.

XML-Schemata öffnen

Die Seite für die XML-Schemata kann über die Codeunit "NCEX XML Schema Mgt." geöffnet werden. Fügen Sie dafür am besten eine Aktion auf der Einrichtungsseite der Erweiterung hinzu:
action(NVXEBXMLSchemasAction)
{
    ApplicationArea = All;
    Caption = 'XML Schemas', Comment = 'DEU="XML-Schemata"';
    ToolTip = 'View or set up the ebInterface XML Schemas.', Comment = 'DEU="Zeigt die Einstellungen der ebInterface XML-Schemata an, oder richtet sie ein."';
    Image = XMLSetup;

    trigger OnAction()
    var
        NCEXXMLSchemaMgt: Codeunit "NCEX XML Schema Mgt.";
    begin
        NCEXXMLSchemaMgt.OpenXMLSchemas("NCEX XML Schema Type"::"NVXEB ebInterface");
    end;
}

XML-Datei erstellen/prüfen

Mit der Methode CreateXMLFile in Codeunit "NCEX XML Schema Mgt." kann die XML-Datei erstellt oder überprüft werden.

Hinweis

Beim Erstellen der XML-Datei wird immer auch eine Prüfung durchgeführt.
procedure CreateXMLFile(SchemaType: Enum "NCEX XML Schema Type"; SchemaCode: Code[20]; RootRecordRef: RecordRef; var TempBlob: Codeunit "Temp Blob"; NCEXXMLExecuteAction: enum "NCEX XML Execute Action"): Boolean

Parameters

TypeNameDescription
NCEX XML Schema TypeSchemaTypeSpecifies the schema type.
CodeSchemaCodeSpecifies the schema code.
RecordRefRootRecordRefSpecifies the table and the record(s) for the root line of the schema.
Temp BlobTempBlobThe Temp Blob in which the created file is returned.
NCEX XML Execute ActionNCEXXMLExecuteActionSpecifies which action should be performed.

Returns

TypeDescription
BooleanTrue if the file was created or checked.

Execute Action

  • Check Prüft, ob die XML-Datei mit dem übergebenen RecordRef erstellt werden kann. D.h. ob alle obligatorischen Daten angegeben sind usw.
  • Create Prüft und erstellt die XML-Datei mit mit dem übergebenen RecordRef. Die erstellte Datei wird im TempBlob zurückgegeben.
  • Create and Download Prüft und erstellt die XML-Datei mit mit dem übergebenen RecordRef. Die erstellte Datei wird danach heruntergeladen.
  • Real Data Preview Zeigt eine Vorschau der XML-Datei in einer neuen Seite an.

Reservierte Variablen hinzufügen

Über das Event OnGetAdditionalVariables in Codeunit "NCEX XML Schema Mgt." können eigene reservierte Variablen, also Variablen, die fix in allen Schemata der Erweiterung zur Verfügung stehen sollen, hinzugefügt werden. Weitere Informationen dazu finden Sie unter XML-Schemata, Variablen.
[EventSubscriber(ObjectType::Codeunit, Codeunit::"NCEX XML Schema Mgt.", 'OnGetAdditionalVariables', '', false, false)]
local procedure OnGetAdditionalVariables(SchemaType: Enum "NCEX XML Schema Type"; var TempNCEXXMLSchemaVariable: Record "NCEX XML Schema Variable" temporary)
var
    NCEXXMLSchemaMgt: Codeunit "NCEX XML Schema Mgt.";
    NextPositionNo: Integer;
    DETAILS_HEADERTxt: Label 'Optional pretext for all details.', Comment = 'DEU="Optionaler Vortext für alle Details."';
    DETAILS_FOOTERTxt: Label 'Optional posttext for all details.', Comment = 'DEU="Optionaler Nachtext für alle Details."';
begin
    if (SchemaType <> SchemaType::"NVXEB ebInterface") then
        exit;

    NCEXXMLSchemaMgt.AddAdditionalVariable(TempNCEXXMLSchemaVariable, NextPositionNo, '[DETAILS_HEADER]', DETAILS_HEADERTxt, false);
    NCEXXMLSchemaMgt.AddAdditionalVariable(TempNCEXXMLSchemaVariable, NextPositionNo, '[DETAILS_FOOTER]', DETAILS_FOOTERTxt, false);
end;

Reservierte Variablen befüllen

Über das Event OnGetAdditionalVariableValue in Codeunit "NCEX XML Schema Mgt." werden die eigenen reservierte Variablen mit Werten befüllt.

Wichtig

Der Parameter SetVariable muss auf true gesetzt werden, damit der Wert der Variablen verändert bzw. übernommen wird. SetVariable darf aber nicht generell gesetzt werden, da sonst alle Variablen zurückgesetzt werden. SetVariable sollte nur dann gesetzt werden, wenn die Bedingung für das Befüllen der Variable erfüllt ist.
[EventSubscriber(ObjectType::Codeunit, Codeunit::"NCEX XML Schema Mgt.", 'OnGetAdditionalVariableValue', '', false, false)]
local procedure OnGetAdditionalVariableValue(SchemaType: Enum "NCEX XML Schema Type"; Variable: Code[20]; var VariableValue: Text; CurrentRecordRef: RecordRef; var SetVariable: Boolean)
var
    SalesInvoiceHeader: Record "Sales Invoice Header";
    CRLF: Text[2];
begin
    if (SchemaType <> SchemaType::"NVXEB ebInterface") then
        exit;

    case Variable of
        '[DETAILS_HEADER]':
            case CurrentRecordRef.Number of
                Database::"Sales Invoice Header":
                    begin
                        SetVariable := true;
                        CurrentRecordRef.SetTable(SalesInvoiceHeader);
                        CRLF[1] := 13;
                        CRLF[2] := 10;                        
                        VariableValue := 'Hello Header!' + CRLF + SalesInvoiceHeader."Posting Description";
                    end;
            end;
        '[DETAILS_FOOTER]':
            case CurrentRecordRef.Number of
                Database::"Sales Invoice Header":
                    begin
                        SetVariable := true;
                        CurrentRecordRef.SetTable(SalesInvoiceHeader);
                        VariableValue := 'Hello Footer!'
                    end;
            end;
    end;
end;

Berechtigungssätze

Für die NAVAX XML-Schemata sind folgende Berechtigungen notwendig:
tabledataBenutzen-BerechtigungEinrichten-Berechtigung
"NCEX XML Schema"RRIMD
"NCEX XML Schema Comment"RRIMD
"NCEX XML Schema Change Log"RRIMD
"NCEX XML Schema Line"RRIMD
"NCEX XML Schema Line Filter"RRIMD

Weitere Informationen




Feedback senden für
DE|EN Impressum