SQL Server w logistyce

Tabela _ach w bazie danych SQL Server

Słownik statusów, z którego korzystają wszystkie tabele StudioSystem — definiuje znaczenie i kolor każdego kodu.

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
  • Kolumna ACH występuje w większości tabel StudioSystem i mieści jeden znak opisujący stan rekordu — najczęściej 0 (bufor), 1 (zatwierdzony) lub X (usunięty).
  • Tabela _ach jest słownikiem tych kodów: mówi, co dany znak oznacza i jakim kolorem ma być pokazany w interfejsie.
  • Kolumna PRX pozwala zdefiniować odrębne zestawy statusów dla różnych modułów — dokumenty magazynowe mogą mieć inne kody niż lokalizacje.
  • Znacznik SYSTEMOWE wskazuje wiersze przenoszone z bazy wzorcowej przy ponownej instalacji, których nie należy modyfikować ręcznie.

Do czego służy tabela [dbo].[_ach]

Pojedynczy znak w kolumnie ACH decyduje o tym, czy dokument jest jeszcze roboczy, czy wszedł już do obiegu. Ten sam mechanizm powtarza się w dokumentach magazynowych, kartotekach, lokalizacjach i zleceniach — dzięki czemu jedna reguła filtrowania działa w całym systemie. Tabela [dbo].[_ach] nadaje tym znakom znaczenie: przechowuje opis kodu oraz wskazanie pliku z kolorem, którym ma być prezentowany.

Rozdzielenie kodu i jego opisu ma praktyczny skutek: zmiana nazwy statusu albo jego koloru nie wymaga ruszania danych operacyjnych ani przebudowy raportów. Wystarczy poprawić jeden wiersz słownika, a wszystkie widoki odwołujące się do niego zmienią się natychmiast.

Typowy zestaw kodów obejmuje 0 — bufor (dokument czeka na zatwierdzenie, kolor szary), 1 — zatwierdzony (dokument wszedł do obiegu, kolor zielony), 2 — w trakcie (operacja rozpoczęta, kolor pomarańczowy) oraz X — usunięty (rekord wycofany, kolor czerwony). Lokalizacje magazynowe używają własnego zestawu, w którym pojawia się m.in. status I oznaczający trwającą inwentaryzację.

Droga rekordu przez statusy zdefiniowane w tabeli _ach
Zapis roboczy Zapis roboczyNowy dokument dostaje ACH = 0 i jest widoczny tylko dla autora
Zatwierdzenie ZatwierdzenieOperator akceptuje dokument, system ustawia ACH = 1
Prezentacja PrezentacjaInterfejs pobiera z _ach opis i kolor przypisany do kodu
Wycofanie WycofanieZamiast kasować wiersz system nadaje mu status X

Rekordy nie są usuwane fizycznie — zmiana statusu na X zachowuje historię i pozwala odtworzyć stan sprzed operacji.

Budowa tabeli — wykaz kolumn

Tabela jest niewielka, ale każda kolumna pełni w niej wyraźnie określoną rolę. Poniższe zestawienie opisuje pełną strukturę wraz z typami danych i informacją o tym, czy wartość jest wymagana.

Wykaz kolumn tabeli
KolumnaTypWymaganaZnaczenie
ACHvarchar(1)
tekst do 1 znaków
takUnikalny kod do oznaczania stanu wierszy tabel, 0 - bufor, 1- zatwierdzony
ID_ACHint
liczba całkowita
takUnikalny identyfikator wiersza tabeli
KOLORvarchar(50)
tekst do 50 znaków
nieWskazanie pliku do prezentacji danego kodu w tabeli
LOGINvarchar(50)
tekst do 50 znaków
nieNazwa użytkownika dopisującego wiersz w tabeli
OPISvarchar(50)
tekst do 50 znaków
nieOpis kodu, co oznacza i do czego służy
PRXvarchar(5)
tekst do 5 znaków
nieSymbol PRX pozwala definiować różne rodzaje kodów
STAMPtimestamp
znacznik wersji wiersza
takUnikalny identyfikator wiersza tabeli
SYSTEMOWEbit
wartość logiczna 0/1
takInformacja czy dany wiersz w bazie root jest systemowy i będzie kopiowany podczas reinstalacji bazy

Kolumna KOLOR nie przechowuje wartości szesnastkowej, lecz wskazanie pliku lub klasy stylu użytej do prezentacji kodu w tabelach interfejsu.

Standardowe kody statusów w instalacji podstawowej

Zestaw kodów dostarczany razem z systemem obejmuje statusy wspólne dla dokumentów oraz odrębny zestaw przeznaczony dla lokalizacji magazynowych. Ten drugi jest bardziej szczegółowy, bo lokalizacja bywa czasowo niedostępna z powodów, które nie występują przy dokumentach — na przykład na czas liczenia towaru.

Standardowe kody statusów
KodZakresZnaczenieKolor
0dokumentyBufor — zapis roboczy, oczekuje na zatwierdzenieszary
1dokumentyZatwierdzony — dokument wszedł do obieguzielony
2dokumentyW trakcie — operacja rozpoczęta, jeszcze niezakończonapomarańczowy
XwszystkieUsunięty — rekord wycofany, pozostaje w bazieczerwony
0lokalizacjeLokalizacja buforowa — oczekuje na dyspozycjęsrebrny
1lokalizacjeLokalizacja magazynowa w stanie normalnymzielony
IlokalizacjeLokalizacja w trakcie inwentaryzacji — niedostępna dla innych operacjijasnoniebieski

Ten sam znak oznacza co innego w zależności od symbolu PRX, dlatego złączenie ze słownikiem zawsze wymaga obu kolumn.

Kolory pełnią funkcję informacyjną, nie decyzyjną — pozwalają objąć wzrokiem stan całej listy, zanim operator zacznie czytać poszczególne wiersze. W instalacjach, w których lista dokumentów liczy setki pozycji dziennie, to jedyny praktyczny sposób szybkiego wyłapania zapisów, które utknęły w buforze.

Jak korzystać z tabeli w praktyce

Słownik statusów jest odczytywany przy niemal każdym wyświetleniu listy, dlatego w praktyce pracuje się z nim tak:

  • Filtruj listy warunkiem ACH = '1', aby widzieć wyłącznie dokumenty zatwierdzone i pominąć zapisy robocze.
  • Nie usuwaj wierszy poleceniem DELETE — nadanie statusu X zachowuje ślad operacji i nie psuje powiązań z innymi tabelami.
  • Definiując nowy moduł, nadaj mu własny symbol PRX i dopisz komplet statusów, zamiast rozbudowywać zestaw wspólny.
  • Przed edycją sprawdź znacznik SYSTEMOWE — wiersze oznaczone jako systemowe zostaną nadpisane przy ponownej instalacji bazy wzorcowej.
  • Kolumna LOGIN rejestruje, kto dopisał wiersz słownika, co bywa pomocne przy ustalaniu, skąd wziął się nietypowy kod.
  • Do raportów podłączaj słownik złączeniem, zamiast zapisywać opisy statusów na sztywno w zapytaniu.

Poniższe zapytanie pokazuje typowe złączenie tabeli operacyjnej ze słownikiem statusów, dzięki któremu raport prezentuje opis zamiast surowego kodu:

SELECT  d.NUMERDOK,
        d.DDOWOD,
        a.OPIS   AS STATUS,
        a.KOLOR
FROM    dbo.dokumenty AS d
        LEFT JOIN dbo._ach AS a
               ON a.ACH = d.ACH
              AND a.PRX = d.PRX
WHERE   d.DDOWOD >= DATEADD(DAY, -30, GETDATE())
ORDER BY d.DDOWOD DESC;

Złączenie po dwóch kolumnach — ACH i PRX — jest tu istotne. Bez warunku na PRX dokument magazynowy mógłby otrzymać opis statusu przeznaczonego dla lokalizacji.

Choć tabela zawiera zwykle kilkanaście wierszy, jej poprawna zawartość przekłada się na czytelność całego systemu. Braki w słowniku objawiają się pustymi lub surowymi kodami w kolumnie statusu na listach i w raportach.

Powiązane tabele i dokumentacja

Statusy z tej tabeli pojawiają się w większości struktur StudioSystem. Poniżej dokumentacja tabel, które najczęściej się do nich odwołują:

FAQ

Najczęściej zadawane pytania o tabelę _ach

01

Co oznacza kolumna ACH w tabelach StudioSystem?

To jednoznakowy status rekordu. Standardowo 0 oznacza zapis roboczy w buforze, 1 rekord zatwierdzony i widoczny w obiegu, 2 operację w toku, a X rekord wycofany. Znaczenie każdego kodu opisuje wiersz w tabeli _ach.

02

Dlaczego rekordy są oznaczane jako usunięte zamiast kasowane?

Fizyczne usunięcie wiersza zrywa powiązania z dokumentami podrzędnymi i dziennikiem zdarzeń, a także uniemożliwia odtworzenie stanu sprzed operacji. Nadanie statusu X ukrywa rekord przed użytkownikiem, zachowując pełną historię na potrzeby audytu.

03

Do czego służy kolumna PRX w słowniku statusów?

Pozwala prowadzić kilka niezależnych zestawów statusów w jednej tabeli. Dokumenty magazynowe, lokalizacje i zlecenia mogą używać tych samych znaków o różnym znaczeniu, bo złączenie ze słownikiem odbywa się jednocześnie po kodzie statusu i po symbolu modułu.

04

Czy można dodać własny status do słownika?

Tak. Należy dopisać wiersz z nowym kodem, opisem, kolorem oraz symbolem PRX właściwym dla modułu, a następnie uwzględnić ten kod w regułach filtrowania. Nowego wiersza nie należy oznaczać jako systemowy, aby nie został nadpisany przy aktualizacji bazy wzorcowej.

Słownik pojęć

Słownik pojęć

Pojęcia potrzebne do zrozumienia mechanizmu statusów w bazie StudioSystem.

SStatus rekordu (ACH)
Jednoznakowe oznaczenie stanu wiersza używane w całej bazie StudioSystem. Pozwala odróżnić zapis roboczy od zatwierdzonego bez tworzenia osobnych tabel.
UUsuwanie logiczne
Wycofanie rekordu przez zmianę statusu zamiast polecenia DELETE. Zachowuje powiązania i historię, kosztem konieczności filtrowania danych w każdym zapytaniu.
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.
ŚŚlad rewizyjny
Nieusuwalny zapis, kto i kiedy zmienił dane w systemie. Podstawa wiarygodności ewidencji podczas audytu i kontroli.
LLokalizacja magazynowa
Jednoznaczny adres miejsca składowania — regał, poziom, gniazdo. Bez adresowania lokalizacji system nie potrafi wskazać magazynierowi, gdzie leży towar.
WWMS
Warehouse Management System — system zarządzania magazynem, który prowadzi ewidencję towaru w podziale na lokalizacje, steruje przyjęciem, kompletacją i wydaniem oraz rejestruje każdą operację magazyniera.

Zobacz to w praktyce

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