Definiowalne komunikaty bazodanowe

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