Interfaces
Die meisten der Funktionen in COSMO Document Set sind als Schnittstellen (Interfaces) geschrieben. Dies gibt jedem Entwickler die Möglichkeit, jede Funktion für jeden Bericht zu ändern. Daher wird für jeden Bericht eine Vorlage für eine Schnittstellenerweiterung bereitgestellt. Eine ausführliche Dokumentation, wie man mit einer Schnittstellenerweiterung arbeitet wird im nachfolgenden beschrieben.
Interface Extension
Wenn Sie eine Schnittstelle erweitern möchten, weil Sie etwas ändern müssen, beginnen Sie in Ihrer Kunden-App und konfigurieren die app.json-Abhängigkeit. Sie benötigen die Abhängigkeit zur COSMO Document Set App und müssen erst die "Symbole herunterladen".
"dependencies": [
{
"id": "0fdf7275-f2a3-4bd3-a9b7-8a051a1dead3",
"name": "COSMO Document Set",
"publisher": "Cosmo Consult",
"version": "1.0.0.2"
}
Danach definieren Sie eine Enumextension.
Beispiel für die Erweiterung eines Verkaufsangebots:
enumextension 50000 "CCO Ext SalesQuote" extends "CCS RS SalesQuoteImplemtations"
{
value(50000; "CCO Kundenanpassung")
{
Caption = 'Kundenanpassung';
Implementation = "CCS RS ISalesQuoteImplementations" = "CCO ExtInt SalesQuote";
}
}
Dieses Beispiel erweitert ein Enum und erstellt einen neuen Enum-Wert namens "CCO Kundenanpassung". Der letzte Teil des Codes zeigt auf die Schnittstelle der COSMO Document Set App (CCS RS ISalesQuoteImplementations") und übergibt sie an "CCO ExtInt Sales Quote" (Codeunit, die wir im nächsten Schritt erstellen werden).
Codeunit: "CCO ExtInt Sales Quote"
Der erste Schritt besteht darin, die Schnittstelle von COSMO Document Set zu implementieren und die Standard-Implementierung zu definieren. Normalerweise wird die Standardimplementierung die Schnittstelle von COSMO Document Set sein.
codeunit 50000 "CCO ExtInt SalesQuote" implements "CCS RS ISalesQuoteImplementations"
{
var
DefaultImplementation: Interface "CCS RS ISalesQuoteImplementations";
DefaultImplementationSet: Boolean;
Der nächste Schritt besteht darin, alle Verfahren in der Schnittstelle aus dem COSMO Document Set zu definieren. Sie können nicht nur eine Prozedur definieren, sondern müssen alle Prozeduren der implementierten Schnittstelle bereitstellen. In unserem Beispiel sind alle Prozeduren aus "CCS RS ISalesQuoteImplementations" daher haben wir zur Erleichterung des Starts Schnittstellenvorlagen erstellt.
Beispiel-Prozedur:
procedure Set_Hdr_CF(var Hdr_CF: array[50] of Text[250]; CustAddr: array[8] of Text[50]; ShipToAddr: array[8] of Text[50]; SalesHeader: Record "Sales Header"; ReportID: Integer; LanguageID: Code[10]; var SalesLineLevelPadding: Text[1024])
begin
SetDefaultImplementation();
DefaultImplementa-tion.Set_Hdr_CF(Hdr_CF, CustAddr, ShipToAddr, SalesHeader, ReportID, LanguageID, SalesLineLevelPadding);
Hdr_CF[1] := 'Hello World';
end;
local procedure SetDefaultImplementation()
begin
If DefaultImplementationSet = false then begin
DefaultImplementation := enum::"CCS RS SalesQuoteImplemtations"::"Default Implementation";
DefaultImplementationSet := true;
end
end;
- Zuerst rufen Sie die Funktion mit demselben Namen und denselben Parametern wie in der Schnittstelle von COSMO Document Set auf.
- Setzen Sie die Standardimplementierung auf das Standard-Enum aus COSMO Document Set.
- Rufen Sie die Prozedur auf, die Sie ändern möchten.
- Ändern Sie einen Wert: wie in diesem Beispiel Hdr_CF[1] in 'Hello World'.
In diesem Beispiel wird der gesamte Prozess von COSMO Document Set übernommen, aber Hdr_CF[1] wird auf "Hello World" gesetzt.
Bevor die Änderung wirksam wird, müssen Sie die Schnittstelle in der COSMO Document Set Einrichtung von "Default Implementation" auf "Kundenanpassung" ändern.
Wenn Sie alles von einer Prozedur aus ändern wollen, müssen Sie alle Funktionen und Werte selbst definieren und die "Standardimplementierung" entfernen.
procedure Set_Hdr_CF(var Hdr_CF: array[50] of Text[250]; CustAddr: array[8] of Text[50]; ShipToAddr: array[8] of Text[50]; SalesHeader: Record "Sales Header"; ReportID: Integer; LanguageID: Code[10]; var SalesLineLevelPadding: Text[1024])
begin
YOUR CODE
end;