W Comarch ERP XL istnieje możliwość dodawania definiowalnych komunikatów wyświetlanych przez aplikację pochodzących z triggerów w bazie MSSQL. Trigger (wyzwalacz) – to operacja bądź zestaw operacji uruchamianych w skutek wystąpienia określonego zdarzenia w bazie danych. Wyzwalacze – przykładowe przypadki użycia:
- logowanie informacji o historii edycji danych – np. informacje o zmianie ilości dostępnych sztuk towaru na magazynie
- w skutek zmiany statusu zamówienia dodanie nowego wpisu z informacjami o zamówieniach oczekujących na wysyłkę
- przesłanie maila do administratora z informacją o dodaniu nowego wpisu do tabeli
W starszych wersjach systemów Comarch ERP XL komunikaty wyświetlane na skutek działania triggerów były błędami krytycznymi. W większości przypadków komunikat zwracany przez trigger znajdował się na zakładce Przyczyna. Powodowało to spore utrudnienie w odnalezieniu właściwego komunikatu z serwera MSSQL. Często intencją autora triggera było wyświetlenie innego komunikatu niż błąd krytyczny oraz umieszczenie odpowiedniej treści w głównym oknie komunikatu.
Definiowalne komunikaty umożliwiają określenie priorytetu oraz zdefiniowanie treści komunikatu, a także informacji wyświetlanej na zakładkach Przyczyna oraz Remedium.
Definiowanie komunikatu w triggerze
Komunikat w triggerze jest wyświetlany za pomocą funkcji RAISERROR(). Funkcja ta generuje komunikat oraz błąd na podstawie zadanych parametrów. Błąd ten jest przechwytywany przez system, który wyświetla odpowiedni komunikat, zawierający w swej treści komunikat błędu wygenerowany przez serwer MSSQL. W dotychczasowym działaniu użytkownik nie miał żadnego wpływu na typ oraz treść wyświetlanego komunikatu. Definiowanie komunikatu będzie polegało na umieszczeniu w jego treści, konkretnie w wywołaniu funkcji RAISERROR(), odpowiednich znaczników określających priorytet komunikatu (informacja, błąd, błąd krytyczny), znaczników określających treść komunikatu oraz treść zakładki Przyczyna i Remedium.
Znaczniki określające priorytet komunikatu
Znacznikami określającymi priorytet komunikatu są:
- #CDN_INFO/#
- #CDN_BLAD/#
- #CDN_BLADK/#
Znaczniki te mogą być umieszczone w dowolnym miejscu w treści komunikatu, ale zaleca się go umieszczać na początku treści – dla zwiększenia czytelności kodu.
Znaczniki określające treść komunikatu
Komunikat podzielony jest na treść właściwą oraz zakładki Przyczyna i Remedium. Definiowana treść powinna zaczynać się od jednego z poniższych znaczników:
Znacznikiem kończącym treść danej części komunikatu są znaki /#.
Przykłady
Poniżej przedstawiono przykładowe wywołanie funkcji RAISERROR() z definiowanym komunikatem:
- RAISERROR(‘#CDN_INFO/# #CDN_1=Test aktualizacji kontrahenta/# #CDN_2=Przyczyną jest trigger/# #CDN_3=Wyłącz trigger/#’,16,1)
- RAISERROR(‘#CDN_BLAD/# #CDN_1=Test aktualizacji kontrahenta/# #CDN_2=Przyczyną jest trigger/# #CDN_3=Wyłącz trigger/#’,16,1)
- RAISERROR(‘#CDN_BLADK/# #CDN_1=Test aktualizacji kontrahenta/# #CDN_2=Przyczyną jest trigger/# #CDN_3=Wyłącz trigger/#’,16,1)
Przykład triggera ze zdefiniowanym komunikatem
Poniżej został przedstawiony prosty trigger blokujacy zmianę nazwy towaru, ze zdefiniowanym komunikatem.
Jako informacja ogólna pojawi się komunikat: Próba zmiany nazwy indeksu towarowego!
W informacjach szczegółowych będą widniały następujące treści:
- Zakładka Przyczyna: Nie masz uprawnień do wykonania tej operacji.
- Zakładka Remedium: Skontaktuj się z Twoim administratorem.
- Zakładka Zaawansowane: pełna treść komunikatu.
Komunikat spowodowany wyzwoleniem triggera CDN.ZmianaNazwyTowaru