SQL Server w logistyce

Tabela _komunikaty w bazie danych SQL Server

Repozytorium komunikatów systemowych — treści wyświetlanych użytkownikowi przy zablokowanej lub nieprawidłowej operacji.

sql.server.net.pl/sql/
Uśmiechnięty analityk w garniturze przy szerokim monitorze
Uśmiechnięty analityk w garniturze przy szerokim monitorze
W skrócie
  • 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 TYTUL i OPIS pozwala pokazać krótki nagłówek i osobno rozwinięte wyjaśnienie.
  • Kolumna OBRAZEK umoż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.

Droga komunikatu od transakcji do ekranu użytkownika
Przerwanie PrzerwanieTransakcja stwierdza, że operacja jest niedozwolona
Odwołanie OdwołanieDo warstwy prezentacji trafia numer REFNO komunikatu
Pobranie treści Pobranie treściSystem odczytuje tytuł, opis i adres obrazka z tabeli
Wyświetlenie WyświetlenieUżytkownik widzi wyjaśnienie wraz z ewentualnymi odnośnikami

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.

Wykaz kolumn tabeli
KolumnaTypWymaganaZnaczenie
ID_KOMUNIKATYint
liczba całkowita
takUnikalny identyfikator wiersza w ramach tabeli
OBRAZEKvarchar(200)
tekst do 200 znaków
nieLink do obrazka wyswuetlanego wraz z komunikatem
OPISvarchar(max)
tekst bez limitu długości
nieTreść komunikatu
REFNOvarchar(20)
tekst do 20 znaków
takUnikalny identyfikator komunikatu przekazywany do transakcji
SYSTEMOWEbit
wartość logiczna 0/1
takOznaczenie czy dany wiersz jest systemowy, czy bedzie przegrywany podczas procesu synchronizacji danych
TYTULvarchar(100)
tekst do 100 znaków
takTytuł 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.

Indeksy zdefiniowane na tabeli
IndeksKolumnyRodzaj
PK__komunikatyID_KOMUNIKATYklucz główny
REFNOREFNOunikalny

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 REFNO czytelną 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 OBRAZEK wskazuje 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:

FAQ

Najczęściej zadawane pytania o tabelę _komunikaty

01

Dlaczego treści komunikatów są w bazie, a nie w kodzie?

Żeby dało się je poprawić bez wydawania nowej wersji aplikacji. Gdy przy wdrożeniu okazuje się, że użytkownicy rozumieją komunikat opacznie, zmiana sprowadza się do edycji jednego wiersza. Ta sama swoboda pozwala dopasować język do branży — inaczej brzmi komunikat dla magazyniera, inaczej dla księgowej.

02

Po co indeks unikalny na kolumnie REFNO?

Zapewnia, że jednemu numerowi odpowiada dokładnie jeden komunikat. Bez tego ograniczenia dopisanie drugiego wiersza z tym samym numerem sprawiłoby, że wyświetlana treść zależałaby od przypadkowej kolejności odczytu — a błąd tego rodzaju bywa bardzo trudny do odtworzenia.

03

Czym różni się TYTUL od OPIS?

TYTUL to krótki nagłówek pozwalający rozpoznać sytuację od razu, ograniczony do stu znaków. OPIS mieści rozwinięte wyjaśnienie bez limitu długości. Podział pozwala pokazać zwięzły komunikat, a szczegóły udostępnić temu, kto ich potrzebuje.

04

Czy komunikat może zawierać odnośnik do innej funkcji systemu?

Tak, ale odnośniki przechowuje osobna tabela _komunikaty_linki, powiązana tym samym numerem REFNO. Pozwala to zdefiniować kilka przycisków dla jednego komunikatu, z własnym tytułem, kolorem i szerokością każdego z nich.

Słownik pojęć

Słownik pojęć

Pojęcia związane z warstwą prezentacji konfigurowaną w bazie danych.

MMicrosoft SQL Server
Serwer relacyjnej bazy danych, na którym pracują aplikacje SoftwareStudio. Odpowiada za spójność danych, uprawnienia dostępu, kopie zapasowe i wydajność zapytań.
IIndeks bazodanowy
Struktura przyspieszająca wyszukiwanie wierszy w tabeli. Dobrze dobrane indeksy skracają czas zapytań, ale spowalniają zapisy i zajmują miejsce na dysku.
RRole i uprawnienia
Mechanizm przypisywania użytkownikom dostępu do funkcji i danych. Zamiast nadawać uprawnienia pojedynczo, przypisuje się je do roli odpowiadającej stanowisku.
PPowiadomienia SMS i e-mail
Automatyczne komunikaty wysyłane po zajściu zdarzenia w systemie — potwierdzeniu awizacji, zmianie statusu reklamacji czy zbliżającym się terminie przeglądu.
PPraca w przeglądarce
Dostęp do systemu bez instalowania programu na komputerze użytkownika. Upraszcza aktualizacje i pozwala pracować zdalnie.
TTerminal Android
Przenośne urządzenie ze skanerem kodów, na którym magazynier wykonuje operacje bezpośrednio przy regale. Zastępuje papierowe listy i wprowadzanie danych po fakcie.
WWdrożenie
Proces uruchomienia systemu w firmie: analiza procesów, konfiguracja, migracja danych, szkolenia i uruchomienie produkcyjne.

Zobacz to w praktyce

Sprawdź, jak systemy SoftwareStudio oparte na MS SQL Server wspierają ten obszar Twojej firmy.