- Treści komunikatów nie są zaszyte w kodzie — leżą w bazie i można je zmienić bez wydawania nowej wersji aplikacji.
- Transakcja odwołuje się do komunikatu numerem
REFNO, który ma na tej kolumnie indeks unikalny. - Rozdzielenie
TYTULiOPISpozwala pokazać krótki nagłówek i osobno rozwinięte wyjaśnienie. - Kolumna
OBRAZEKumożliwia dołączenie ilustracji, co bywa skuteczniejsze niż sam opis przy komunikatach dla magazynierów.
Do czego służy tabela [dbo].[_komunikaty]
Komunikat „operacja niedozwolona” nie mówi użytkownikowi niczego użytecznego. Komunikat wyjaśniający, że dokument jest już zatwierdzony i wymaga korekty zamiast edycji — mówi. Różnica między jednym a drugim to zwykle nie kwestia kodu, lecz treści, którą ktoś musiał napisać i utrzymać. Tabela [dbo].[_komunikaty] jest miejscem, w którym te treści się przechowuje.
Mechanizm jest prosty: transakcja, która musi przerwać operację, przekazuje numer referencyjny komunikatu, a warstwa prezentacji pobiera z tabeli tytuł, opis oraz opcjonalny obrazek. Indeks unikalny na kolumnie REFNO gwarantuje, że jednemu numerowi odpowiada dokładnie jedna treść.
Praktyczna korzyść ujawnia się przy wdrożeniu. Gdy okazuje się, że użytkownicy nie rozumieją komunikatu albo interpretują go opacznie, poprawka sprowadza się do edycji wiersza — bez udziału zespołu programistycznego i bez czekania na kolejne wydanie.
Odnośniki towarzyszące komunikatowi pochodzą z osobnej tabeli _komunikaty_linki, powiązanej tym samym numerem REFNO.
Budowa tabeli — wykaz kolumn
Struktura obejmuje sześć kolumn — identyfikację komunikatu, jego treść oraz znacznik pochodzenia.
| Kolumna | Typ | Wymagana | Znaczenie |
|---|---|---|---|
ID_KOMUNIKATY | int liczba całkowita | tak | Unikalny identyfikator wiersza w ramach tabeli |
OBRAZEK | varchar(200) tekst do 200 znaków | nie | Link do obrazka wyswuetlanego wraz z komunikatem |
OPIS | varchar(max) tekst bez limitu długości | nie | Treść komunikatu |
REFNO | varchar(20) tekst do 20 znaków | tak | Unikalny identyfikator komunikatu przekazywany do transakcji |
SYSTEMOWE | bit wartość logiczna 0/1 | tak | Oznaczenie czy dany wiersz jest systemowy, czy bedzie przegrywany podczas procesu synchronizacji danych |
TYTUL | varchar(100) tekst do 100 znaków | tak | Tytuł komunikatu |
Kolumna REFNO jest właściwym identyfikatorem komunikatu w odwołaniach z transakcji. Numer ID_KOMUNIKATY pozostaje lokalny dla instancji bazy i nie nadaje się do przenoszenia konfiguracji między środowiskami.
Indeksy i wydajność zapytań
Odczyt jest punktowy — po numerze referencyjnym — dlatego indeksowanie ogranicza się do dwóch pozycji.
| Indeks | Kolumny | Rodzaj |
|---|---|---|
PK__komunikaty | ID_KOMUNIKATY | klucz główny |
REFNO | REFNO | unikalny |
Indeks na kolumnie REFNO jest unikalny i pełni podwójną rolę: przyspiesza odczyt oraz uniemożliwia zdefiniowanie dwóch komunikatów o tym samym numerze. Bez tego ograniczenia treść wyświetlana użytkownikowi zależałaby od przypadkowej kolejności wierszy.
Jak pisać komunikaty, żeby ograniczały liczbę zgłoszeń
Komunikat jest jedynym momentem, w którym system rozmawia z użytkownikiem o problemie. Od jego treści zależy, czy sprawa skończy się samodzielnym rozwiązaniem, czy telefonem do administratora.
- Nazwij przyczynę, nie objaw. „Dokument został już zatwierdzony” niesie informację, „Błąd zapisu” nie niesie żadnej.
- Wskaż następny krok. Użytkownik potrzebuje wiedzieć, co zrobić — wystawić korektę, poprosić o odblokowanie, uzupełnić pole.
- Unikaj terminologii technicznej. Nazwa kolumny czy kod wyjątku nic nie mówią magazynierowi; jeśli są potrzebne, ich miejsce jest w rejestrze błędów.
- Rozdziel nagłówek od wyjaśnienia. Krótki tytuł pozwala rozpoznać sytuację od razu, dłuższy opis czyta ten, kto potrzebuje szczegółów.
- Rozważ obrazek tam, gdzie chodzi o czynność fizyczną — zrzut ekranu z zaznaczonym przyciskiem bywa skuteczniejszy niż akapit tekstu.
Warto też okresowo zestawiać, które komunikaty pojawiają się najczęściej. Wysoka liczba wystąpień jednego z nich zwykle nie oznacza, że użytkownicy popełniają błędy — częściej, że proces w systemie jest ułożony inaczej niż praca w magazynie i to on wymaga poprawki.
Jak korzystać z tabeli w praktyce
Przy utrzymaniu repozytorium komunikatów sprawdzają się poniższe zasady:
- Nadawaj numerom
REFNOczytelną konwencję powiązaną z modułem — ułatwia to późniejsze odnalezienie komunikatu w tabeli. - Nie modyfikuj wierszy oznaczonych jako
SYSTEMOWE; zostaną nadpisane przy synchronizacji z bazą wzorcową. - Sprawdź, czy adres w kolumnie
OBRAZEKwskazuje istniejący plik — brakująca ilustracja psuje wygląd całego okna komunikatu. - Testuj długie treści na wąskim ekranie; komunikaty bywają wyświetlane na terminalach mobilnych o niewielkiej rozdzielczości.
- Rozważ dodanie odnośnika w tabeli
_komunikaty_linki, jeśli komunikat wskazuje czynność możliwą do wykonania w innym miejscu systemu. - Przeglądaj rejestr błędów pod kątem sytuacji kończących się komunikatem ogólnym — to kandydaci do napisania osobnej, konkretnej treści.
Zestawienie komunikatów wdrożeniowych wraz z informacją, czy mają zdefiniowane odnośniki:
SELECT k.REFNO,
k.TYTUL,
LEN(k.OPIS) AS DLUGOSC_OPISU,
k.OBRAZEK,
COUNT(l.ID_KOMUNIKATY_LINKI) AS LICZBA_LINKOW
FROM dbo._komunikaty AS k
LEFT JOIN dbo._komunikaty_linki AS l
ON l.REFNO = k.REFNO
WHERE k.SYSTEMOWE = 0
GROUP BY k.REFNO, k.TYTUL, k.OPIS, k.OBRAZEK
ORDER BY k.REFNO;
Złączenie zewnętrzne pokazuje także komunikaty bez odnośników — to zwykle te, przy których użytkownik nie ma podpowiedzianej dalszej drogi.
Osobne zagadnienie to wielojęzyczność. W instalacjach obsługujących magazyny w kilku krajach treść komunikatu musi zależeć od języka wybranego przez użytkownika. Rozwiązuje się to przez powiązanie z tabelą tłumaczeń interfejsu, a nie przez zakładanie kilku wierszy o zbliżonych numerach — te ostatnie szybko się rozjeżdżają, bo poprawka wprowadzona w jednym języku nie trafia do pozostałych.
Komunikaty systemowe bywają traktowane jako element drugorzędny, pisany naprędce przy wdrożeniu. W praktyce to one decydują o tym, ile zgłoszeń trafia do administratora — a ich poprawa jest jedną z najtańszych zmian, jakie da się wprowadzić w działającym systemie. Kilka dobrze napisanych treści potrafi zdjąć z obsługi więcej pracy niż niejedna nowa funkcja.
Powiązane tabele i dokumentacja
Komunikaty stanowią część warstwy prezentacji konfigurowanej po stronie bazy: