M365Con 2027 – die kostenlose Online-Konferenz · 11–22 Jan 2027 · 120 sessions→ m365con.net

Blog · Mirko Peters

Business Central Events vs. Triggers in AL: Ein Timing-Leitfaden für Entwickler

Von ·

Meistern Sie die AL-Entwicklung für Business Central: Erfahren Sie, wann Sie Trigger und Event-Subscriber für individuelle Geschäftslogik, Validierungen und Buchungsprüfungen einsetzen sollten.

Automatisch mit KI aus dem Originalbeitrag übersetzt. Englisches Original lesen

Cover: Dynamics 365 Business Central AL Development

Der Unterschied zwischen Triggern und Ereignissen in der AL-Entwicklung für Microsoft Dynamics 365 Business Central ist entscheidend für saubere, wartbare Erweiterungen. Wenn Sie den richtigen Ausführungsmechanismus wählen, laufen Ihre Validierungsregeln exakt zum richtigen Zeitpunkt. So verhindern Sie fehlerhafte Dateneingaben und sichern reibungslose Cloud-Updates, ohne Kerncode der Anwendung zu duplizieren.

Das Wichtigste in Kürze

Die Architektur individueller Logik in Business Central

Wenn Sie Dynamics 365 Business Central mit der Application Language (AL) von Microsoft erweitern, ist das Schreiben von Code nur die halbe Miete. Die eigentliche Herausforderung liegt darin, festzulegen, wo und wann dieser Code ausgeführt werden soll. Ob Sie ein einfaches Feld für die Reward-Stufe im Kundenstamm ergänzen oder vor der Rechnungserstellung eine komplexe Compliance-Prüfung erzwingen: Die Langlebigkeit und Stabilität Ihrer Erweiterung hängt davon ab, wie Sie sich in das System einklinken.

Ältere Entwicklungsmodelle verleiteten oft dazu, Standardcode der Anwendung direkt umzuschreiben. Wollte man eine Prüfung vor dem Buchen eines Belegs ausführen, fügte man die Logik direkt in die Kernbuchungsroutine ein. Das funktionierte zwar vorübergehend, doch jedes größere Microsoft-Update wurde zu einem mühsamen Abgleichprojekt. Die moderne Erweiterungsentwicklung für Business Central setzt dagegen auf ein modulares, App-basiertes Modell. Statt Standardroutinen umzuschreiben, nutzen Entwickler integrierte Anknüpfungspunkte, insbesondere Trigger und Ereignisse, um individuelle Logik sicher in den Standardcode einzubinden.

Trigger in AL im Detail

Ein Trigger ist eine festgelegte, vordefinierte Stelle innerhalb eines AL-Objekts, an der Sie Code schreiben können, der automatisch ausgeführt wird, sobald eine bestimmte Aktion stattfindet. Jedes Standard- und individuelle Objekt, etwa Tabellen, Tabellenerweiterungen, Seiten, Seitenerweiterungen, Berichte und Codeunits, enthält solche nativen Ansatzpunkte.

Ein praxisnahes Beispiel: In Ihrer Organisation wurde im Kundenstamm ein individuelles Feld für die Reward-ID eingeführt. Wählt ein Benutzer eine Reward-Stufe aus der Dropdown-Liste, soll das System sofort prüfen, ob das Kundenkonto gesperrt ist oder ob sekundäre Attribute aktualisiert werden müssen. Der OnValidate-Trigger dieses Feldes löst Ihren Code genau in dem Moment aus, in dem der Benutzer eine Änderung vornimmt.

Wann Sie Trigger verwenden sollten

Trigger sind am besten einzusetzen, wenn Ihre Geschäftslogik ausschließlich zu einem einzelnen Objekt und dessen unmittelbarem Kontext gehört. Zum Beispiel:

Da Trigger eng an ihr Host-Objekt gebunden sind, bleibt lokaler Code leicht zu finden, leicht zu lesen und langfristig leicht zu warten.

Business Central-Ereignisse und Abonnements nutzen

Während Trigger lokale Aktionen abdecken, erfordern umfassendere mehrstufige Prozesse – etwa das Buchen von Verkaufsaufträgen, den Warenausgang oder die Erstellung von Finanzjournalen – einen anspruchsvolleren Ansatz. Sie können Ihren Validierungscode nicht einfach mitten in eine umfangreiche Buchungsroutine einfügen, ohne das Erweiterungsmodell zu verletzen.

Hier kommen Ereignisse und Ereignisabonnenten ins Spiel. Ein Ereignis lässt sich als offizielle Benachrichtigung verstehen, die die Standardanwendung Business Central veröffentlicht. Das System meldet wichtige Meilensteine, etwa 'ein Datensatz wird gleich eingefügt' oder 'ein Verkaufsbeleg wird gleich gebucht.' Ihre Erweiterung kann auf diese Meldungen mithilfe einer Ereignisabonnenten-Prozedur reagieren.

Wenn Business Central das benannte Ereignis auslöst, wird Ihre abonnierte Prozedur aktiv, führt Ihre benutzerdefinierte Regel aus und gibt entweder grünes Licht oder bricht den Vorgang mit einer aussagekräftigen Fehlermeldung ab. Entscheidend ist: Ihre Erweiterung muss die zugrunde liegende Buchungslogik niemals kopieren, einfügen oder umschreiben.

Die Bedeutung des Zeitpunkts: OnBefore vs. OnAfter

Beim Erstellen von Ereignisabonnenten in AL verraten die Namenskonventionen den Ausführungszeitpunkt. Dieses Timing zu verstehen, ist für die Systemstabilität entscheidend:

Eine Regel, die zu spät läuft, kann eine fehlerhafte Transaktion nicht mehr verhindern. Eine Regel, die zu früh läuft, verfügt unter Umständen noch nicht über die Daten, die die Standardroutine erst berechnet. Wenn Sie Ihre Logik der richtigen Ereignissignatur zuordnen, vermeiden Sie diese Fallstricke.

Fazit

Die richtige Balance zwischen Objekttriggern und Ereignisabonnenten verändert Ihren Umgang mit Business Central-Erweiterungen grundlegend. Wenn Sie lokale Trigger für Feldvalidierungen und Ereignisabonnenten für systemweite Prozesse einsetzen, bleiben Ihre Anpassungen auch bei Cloud-Updates stabil und Ihre Umgebung schnell und sicher.

Um tiefer in moderne Anwendungsarchitekturprinzipien einzusteigen und fundierte Architekturanalysen von Experten zu hören, hören Sie sich die vollständige Episode des M365 FM Podcasts an. Schalten Sie ein, wenn Cloud-Architekten und Entwickler zeigen, wie sie das Microsoft-Ökosystem für reale geschäftliche Erfolge optimieren!

Häufige Fragen

Was ist der wesentliche Unterschied zwischen einem Trigger und einem Ereignisabonnenten in AL?

Ein Trigger ist ein fest definierter Ausführungspunkt, der direkt in einem bestimmten AL-Objekt (etwa einem Tabellenfeld oder einer Seite) eingebaut ist. Ein Ereignisabonnent hingegen ist eine eigenständige Prozedur in Ihrer Erweiterung, die auf veröffentlichte Benachrichtigungen der Basisanwendung oder anderer Objekte lauscht, ohne den ursprünglichen Code zu verändern.

Kann ein Ereignisabonnent verhindern, dass ein Verkaufsauftrag gebucht wird?

Ja. Wenn Sie einen Ereignisabonnenten für ein „OnBefore“-Ereignis im Buchungsprozess verwenden, kann Ihr benutzerdefinierter Code Geschäftsbedingungen prüfen, eine Fehlermeldung auslösen und die Transaktion abbrechen, bevor die Buchungsroutine die Einträge endgültig schreibt.

Wann sollte ich einen Validierungstrigger für ein Tabellenfeld statt eines Ereignisabonnenten verwenden?

Einen Validierungstrigger für ein Tabellenfeld sollten Sie verwenden, wenn Ihre Geschäftsregel eng an die Änderung des Werts genau dieses Feldes gebunden ist, etwa wenn geprüft werden soll, ob eine benutzerdefinierte Reward-ID existiert, oder wenn ein verknüpftes Statusfeld sofort nach der Eingabe des Benutzers aktualisiert werden muss.

Warum ist der Ausführungszeitpunkt beim Schreiben von AL-Ereignisabonnenten entscheidend?

Der Ausführungszeitpunkt entscheidet darüber, ob Ihr Code vor oder nach Abschluss eines zentralen Prozesses ausgeführt wird. Läuft Ihre Regel zu früh, sind die benötigten Daten unter Umständen noch nicht vorhanden. Läuft sie zu spät, können Sie ungültige Transaktionen nicht mehr blockieren.

Dynamics 365 Dynamics 365 Business Central

Verwandte Artikel

RSS