Integration Events für Entwickler
Connector 365 Addressee Control bietet verschiedene Integration Events, die es Entwicklern ermöglichen, die Funktionalität der App zu erweitern und an spezifische Anforderungen anzupassen.
Diese Dokumentation richtet sich an AL-Entwickler. Grundkenntnisse in der Business Central Extension-Entwicklung werden vorausgesetzt.
OnBeforeGetRecipients
Dieses Event wird aufgerufen, bevor die Empfängeradressen ermittelt werden. Es ermöglicht die vollständige Kontrolle über den Prozess der Empfängerermittlung.
Verwendung
1
2
3
4
5
6
|
[IntegrationEvent(false, false)]
local procedure OnBeforeGetRecipients(
BaseParameters: Record "BEL365 Base Parameters";
var TempRecipient: Record "BEL365 Temp Recipient" temporary;
var OverrideRecipients: Boolean
)
|
Parameter
| Parameter |
Typ |
Beschreibung |
| BaseParameters: Record “BEL365 Base Parameters” |
Enthält alle relevanten Parameter zum aktuellen Vorgang |
|
| TempRecipient |
Record “BEL365 Base Parameters” temporary |
Temporäre Tabelle für Empfänger. Kann befüllt werden, um Standard-Empfänger zu ergänzen oder zu ersetzen |
| OverrideRecipients |
Boolean |
Wenn auf true gesetzt, wird die Standard-Logik übersprungen |
Beispiel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
[EventSubscriber(ObjectType::Codeunit, Codeunit::"BELADC Addressee Control Mgmt", 'OnBeforeGetRecipients', '', false, false)]
local procedure OnBeforeGetRecipientsCustom(
BaseParameters: Record "BEL365 Base Parameters;
var TempRecipient: Record "BEL365 Temp Recipient temporary;
var OverrideRecipients: Boolean
)
var
SalesHeader: Record "Sales Header";
DocumentRecRef: RecordRef;
begin
DocumentRecRef.GetTable(BaseParameters."Record ID");
if DocumentRecRef.Number <> Database::"Sales Header" then
exit;
DocumentRecRef.SetTable(SalesHeader);
// Beispiel: Für VIP-Kunden immer zusätzlich die Geschäftsleitung informieren
if IsVIPCustomer(SalesHeader."Sell-to Customer No.") then begin
AddRecipient(TempRecipient, 'management@company.com', TempRecipient."Recipient Type"::CC);
end;
end;
|
Dieses Event ermöglicht die Unterstützung kundenspezifischer Belegarten, die nicht standardmäßig von der App unterstützt werden.
Verwendung
1
2
3
4
5
6
|
[IntegrationEvent(false, false)]
local procedure OnGetHeaderFromReportUsageOnCaseElse(
ReportUsage: Enum "Report Selection Usage";
PostedDocNo: Code[20];
var DocumentHeaderVariant: Variant
)
|
Parameter
| Parameter |
Typ |
Beschreibung |
| ReportUsage |
Enum “Report Selection Usage” |
Die Berichtsverwendung |
| PostedDocNo |
Code[20] |
Die Belegnr. um den Belegkoopf zu erhalten |
| DocumentHeaderVariant |
Variant |
Der Belegkopf, der zurückgegeben werden soll |
Beispiel
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[EventSubscriber(ObjectType::Codeunit, Codeunit::"CBC Document Header Mgt.", 'OnGetHeaderFromReportUsageOnCaseElse', '', false, false)]
local procedure HandleCustomDocumentType(
ReportUsage: Enum "Report Selection Usage";
PostedDocNo: Code[20];
var DocumentHeaderVariant: Variant;
)
var
Job: Record Job;
begin
if ReportUsage = ReportUsage::JQ then
if Job.Get(PostedDocNo) then
DocumentHeaderVariant := Job
end;
|
OnIsReportUsageSupportedOnCaseElse
Dieses Event ermöglicht es, zusätzliche Berichtsverwendungen als unterstützt zu markieren, die nicht standardmäßig von der App erkannt werden.
Verwendung
1
2
3
4
5
|
[IntegrationEvent(false, false)]
local procedure OnIsReportUsageSupportedOnCaseElse(
ReportUsage: Enum "Report Selection Usage";
var Supported: Boolean
)
|
Parameter
| Parameter |
Typ |
Beschreibung |
| ReportUsage |
Enum “Report Selection Usage” |
Die zu prüfende Berichtsverwendung |
| Supported |
Boolean |
Muss auf true gesetzt werden, damit die Verwendung unterstützt wird |
Beispiel
1
2
3
4
5
6
7
8
9
10
11
12
|
[EventSubscriber(ObjectType::Codeunit, Codeunit::"CBC Report Usage Mgt.", 'OnIsReportUsageSupportedOnCaseElse', '', false, false)]
local procedure OnIsReportUsageSupportedCustom(
ReportUsage: Enum "Report Selection Usage";
var Supported: Boolean
)
begin
// Beispiel: Unterstützung für eine benutzerdefinierte Berichtsverwendung
case ReportUsage of
ReportUsage::Job
Supported := true;
end;
end;
|
Verwendungszweck
Verwenden Sie dieses Event, wenn Sie:
- Eigene Berichtsverwendungen erstellt haben
- Die Addressee Control Funktionalität für diese Verwendungen aktivieren möchten
- Die Einrichtung der Adresspriorität für benutzerdefinierte Berichte ermöglichen wollen
OnBeforeSetDefaultAddressPrioritiesForUsage
Dieses Event wird aufgerufen, bevor die Standard-Adressprioritäten für eine Berichtsverwendung gesetzt werden. Es ermöglicht das Definieren eigener Standard-Prioritäten für benutzerdefinierte Berichtsverwendungen.
Verwendung
1
2
3
4
5
|
[IntegrationEvent(false, false)]
local procedure OnBeforeSetDefaultAddressPrioritiesForUsage(
ReportUsage: Enum "Report Selection Usage";
var IsHandled: Boolean
)
|
Parameter
| Parameter |
Typ |
Beschreibung |
| ReportUsage |
Enum “Report Selection Usage” |
Die Berichtsverwendung, für die Prioritäten gesetzt werden |
| IsHandled |
Boolean |
Muss auf true gesetzt werden, damit die Standardlogik ersetzt wird |
Beispiel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
[EventSubscriber(ObjectType::Codeunit, Codeunit::"CBC Address Priority Setup", 'OnBeforeSetDefaultAddressPrioritiesForUsage', '', false, false)]
local procedure OnBeforeSetDefaultAddressPrioritiesCustom(
ReportUsage: Enum "Report Selection Usage";
var IsHandled: Boolean
)
var
Field: Record Field;
CustomReportSelectionSetup: Record "BELADC Cus. Rep. Sel. Mapping";
AddressPriority: Record "BELADC Address Priority";
AddresseeControlMgmt: Codeunit "BELADC Addressee Control Mgmt";
begin
if ReportUsage <> ReportUsage::Job then
exit;
CustomReportSelectionSetup."Report Usage" := ReportUsage;
CustomReportSelectionSetup."Cus. Rep. Select. Field No." := 2;
if Field.Get(AddresseeControlMgmt.GetTableIdFromReportUsage(ReportUsage), CustomReportSelectionSetup."Cus. Rep. Select. Field No.") then begin
CustomReportSelectionSetup."Cus. Rep. Select. Field Name" := Field."Field Caption";
CustomReportSelectionSetup.Insert();
end;
AddressPriority.Init();
AddressPriority.NewRecord();
AddressPriority."Target Table No." := Database::"Custom Report Selection";
AddressPriority."Target Field No." := 9;
if AddressPriority.Insert() then;
IsHandled := true;
end;
|
Verwendungszweck
Verwenden Sie dieses Event, wenn Sie:
- Standard-Adressprioritäten für benutzerdefinierte Berichtsverwendungen definieren möchten
- Eine konsistente Einrichtung über mehrere Mandanten hinweg sicherstellen wollen
- Die manuelle Einrichtung der Adressprioritäten automatisieren möchten
Best Practices
- Prüfen Sie immer den Record-Typ: Verwenden Sie
RecordRef.Number oder RecordRef.Name, um sicherzustellen, dass Sie den richtigen Datensatz bearbeiten
- Setzen Sie IsHandled bzw. OverrideRecipients bewusst: Diese Parameter bestimmen, ob die Standard-Verarbeitung durchgeführt wird
- Testen Sie gründlich: Events greifen tief in die Kernlogik ein und sollten ausführlich getestet werden
- Dokumentieren Sie Ihre Erweiterungen: Halten Sie fest, welche Events Sie verwenden und warum
Für detaillierte technische Informationen und weitere Events konsultieren Sie bitte die AL-Objektdokumentation in Ihrer Entwicklungsumgebung oder wenden Sie sich an den BELWARE Support.
Kompatibilität
| Event |
Verfügbar ab Version |
| OnBeforeGetRecipients |
1.12.0.0 |
| OnIsReportUsageSupportedOnCaseElse |
1.14.0.0 |
| OnBeforeSetDefaultAddressPrioritiesForUsage |
1.14.0.0 |
| OnGetHeaderFromReportUsageOnCaseElse |
1.15.0.0 |
Events können sich in zukünftigen Versionen ändern. Beachten Sie die Release Notes bei Updates der App.