M365Con 2027 – bezpłatna konferencja online · 11–22 Jan 2027 · 120 sessions→ m365con.net

Blog · Mirko Peters

Business Central – zdarzenia a triggery w AL: przewodnik dewelopera po momencie wykonania

By ·

Opanuj tworzenie rozszerzeń dla Business Central w AL dzięki zrozumieniu, kiedy używać triggerów, a kiedy subskrybentów zdarzeń, do tworzenia własnej logiki biznesowej, walidacji i kontroli księgowania.

Automatically translated with AI from the original post. Read the English original

Cover: Dynamics 365 Business Central AL Development

Zrozumienie różnicy między triggerami a zdarzeniami w tworzeniu rozszerzeń w Microsoft Dynamics 365 Business Central AL ma kluczowe znaczenie dla pisania czystych i łatwych w utrzymaniu rozszerzeń. Wybór właściwego mechanizmu wykonania sprawia, że reguły walidacji uruchamiają się dokładnie we właściwym momencie, zapobiegając wprowadzaniu błędnych danych i zapewniając bezproblemową aktualizację w chmurze bez duplikowania kodu aplikacji bazowej.

Najważniejsze wnioski

Architektura własnej logiki w Business Central

Rozszerzając Dynamics 365 Business Central przy użyciu Application Language (AL) firmy Microsoft, samo napisanie kodu to dopiero połowa sukcesu. Prawdziwe wyzwanie polega na decyzji, gdzie i kiedy ten kod ma się wykonać. Czy dodajesz prosty pole poziomu nagrody do karty klienta, czy wymuszasz złożoną kontrolę zgodności przed wygenerowaniem faktury, trwałość i stabilność rozszerzenia zależą od tego, jak podłączysz się do systemu.

Starsze modele programistyczne często zachęcały do bezpośredniego przepisywania natywnego kodu aplikacji. Jeśli chciano, by kontrola wykonała się przed zaksięgowaniem dokumentu, logikę wstrzykiwano wprost do podstawowej procedury księgowania. Choć takie rozwiązanie działało doraźnie, każda większa aktualizacja Microsoft zamieniała się w bolesny projekt uzgadniania zmian. Nowoczesne tworzenie rozszerzeń Business Central opiera się na modułowym modelu opartym na aplikacjach. Zamiast przepisywać standardowe procedury, deweloperzy korzystają z wbudowanych punktów połączenia – a konkretnie z triggerów i zdarzeń – by bezpiecznie włączyć własną logikę obok standardowego kodu aplikacji.

Triggery w AL bez tajemnic

Trigger to wyznaczone, predefiniowane miejsce wewnątrz obiektu AL, w którym możesz napisać kod uruchamiany automatycznie, gdy wystąpi określona czynność. Każdy obiekt – zarówno standardowy, jak i własny, w tym tabele, rozszerzenia tabel, strony, rozszerzenia stron, raporty i kodeunity – zawiera takie natywne punkty.

Rozważmy praktyczny scenariusz: w organizacji wprowadzono własne pole Reward ID na karcie klienta. Gdy użytkownik wybierze poziom nagrody z listy rozwijanej, system musi natychmiast sprawdzić, czy konto klienta jest zablokowane, lub czy atrybuty dodatkowe wymagają aktualizacji. Dzięki triggerowi OnValidate na tym konkretnym polu Twój kod uruchamia się w chwili, gdy użytkownik dokona zmiany.

Kiedy używać triggerów

Triggery najlepiej stosować wtedy, gdy logika biznesowa należy wyłącznie do jednego obiektu i jego bezpośredniego kontekstu. Na przykład:

Ponieważ triggery są ściśle powiązane z obiektami, do których należą, kod lokalny jest łatwy do znalezienia, odczytania i utrzymania w czasie.

Wykorzystanie zdarzeń i subskrypcji w Business Central

Podczas gdy triggery obsługują lokalne działania, szersze, wieloetapowe procesy — takie jak księgowanie zamówień sprzedaży, wysyłka zapasów czy generowanie dzienników finansowych — wymagają bardziej zaawansowanego podejścia. Nie można po prostu wstawić kodu walidacji w środek rozbudowanej rutyny księgowania bez naruszenia modelu rozszerzeń.

Tutaj niezbędne stają się zdarzenia i subskrybenci zdarzeń. Zdarzenie można traktować jako oficjalne powiadomienie rozgłaszane przez standardową aplikację Business Central. System ogłasza ważne etapy, na przykład 'rekord zaraz zostanie wstawiony' lub 'dokument sprzedaży zaraz zostanie zaksięgowany.' Twoje rozszerzenie może nasłuchiwać tych komunikatów za pomocą procedury subskrybenta zdarzenia.

Gdy Business Central zgłasza określone zdarzenie, subskrybowana procedura się uruchamia, wykonuje Twoją regułę niestandardową i albo daje zielone światło, albo wstrzymuje proces z opisowym komunikatem o błędzie. Co istotne, Twoje rozszerzenie nigdy nie musi kopiować, wklejać ani przepisywać bazowego silnika księgowania.

Znaczenie czasu: OnBefore kontra OnAfter

Podczas tworzenia subskrybentów zdarzeń w AL konwencje nazewnictwa wskazują moment wykonania. Zrozumienie tego czasu ma kluczowe znaczenie dla niezawodności systemu:

Reguła uruchomiona zbyt późno nie zapobiegnie błędnej transakcji, a reguła uruchomiona zbyt wcześnie może nie mieć niezbędnych danych obliczonych w standardowej rutynie. Przypisanie logiki do właściwej sygnatury zdarzenia eliminuje te pułapki.

Podsumowanie

Opanowanie równowagi między triggerami obiektów a subskrybentami zdarzeń zmienia sposób podejścia do rozszerzeń Business Central. Stosując lokalne triggery do walidacji pól oraz subskrybentów zdarzeń do procesów obejmujących cały system, zapewniasz, że dostosowania pozostaną odporne na aktualizacje w chmurze, a środowisko — szybkie i bezpieczne.

Aby zgłębić nowoczesne zasady projektowania aplikacji i posłuchać szczegółowych omówień architektury od ekspertów, posłuchaj pełnego odcinka podcastu M365 FM. Zajrzyj, aby dowiedzieć się, jak architekci chmury i programiści optymalizują ekosystem Microsoft pod kątem sukcesu biznesowego w rzeczywistych warunkach!

Często zadawane pytania

Jaka jest główna różnica między triggerem a subskrybentem zdarzeń w AL?

Trigger to predefiniowany punkt wykonania kodu zbudowany bezpośrednio wewnątrz konkretnego obiektu AL (na przykład pola tabeli lub strony), natomiast subskrybent zdarzeń to osobna procedura w rozszerzeniu, która nasłuchuje opublikowanych powiadomień z aplikacji bazowej lub innych obiektów, bez zmieniania oryginalnego kodu.

Czy subskrybent zdarzeń może zablokować zaksięgowanie zamówienia sprzedaży?

Tak. Jeśli użyjesz subskrybenta zdarzenia „on before” powiązanego z procesem księgowania, Twój kod niestandardowy może ocenić warunki biznesowe, zgłosić komunikat o błędzie i wstrzymać transakcję, zanim rutyna księgowania sfinalizuje zapisy.

Kiedy powinienem użyć triggera walidacji pola tabeli zamiast subskrybenta zdarzenia?

Trigger walidacji pola tabeli należy stosować wtedy, gdy reguła biznesowa jest ściśle związana ze zmianą wartości tego konkretnego pola, na przykład przy sprawdzaniu, czy niestandardowy identyfikator nagrody (Reward ID) istnieje, lub gdy zapewniasz natychmiastową aktualizację powiązanego pola statusu po wprowadzeniu danych przez użytkownika.

Dlaczego czas wykonania ma krytyczne znaczenie przy pisaniu subskrybentów zdarzeń w AL?

Moment wykonania decyduje o tym, czy twój kod uruchomi się przed zakończeniem kluczowego procesu, czy po nim. Jeśli reguła uruchomi się zbyt wcześnie, niezbędne dane mogą jeszcze nie być wypełnione; jeśli uruchomi się zbyt późno, tracisz możliwość blokowania nieprawidłowych transakcji.

Dynamics 365 Dynamics 365 Business Central

Related articles

RSS