- Parametr jest identyfikowany parą grupa + kod, na której założono indeks unikalny.
- Kolumna
ROLApozwala nadać temu samemu ustawieniu różne wartości dla różnych grup użytkowników. - Znacznik
VISIBLEukrywa parametry techniczne przed użytkownikiem, nie usuwając ich z konfiguracji. - Znacznik
SYSTEMOWEdecyduje, czy wiersz zostanie nadpisany przy synchronizacji z bazą wzorcową.
Do czego służy tabela [dbo].[_parametry]
Systemy magazynowe różnią się między wdrożeniami setkami drobiazgów: czy dokument wymaga akceptacji, ile dni wstecz wolno wystawiać przyjęcia, jaki format ma numer etykiety, czy skanowanie lokalizacji jest obowiązkowe. Rozrzucenie tych ustawień po plikach konfiguracyjnych kończy się zawsze tak samo — po roku nikt nie wie, gdzie czego szukać. Tabela [dbo].[_parametry] zbiera je w jednym miejscu.
Identyfikacja opiera się na dwóch kolumnach. GRUPA porządkuje parametry tematycznie, KOD wskazuje konkretne ustawienie w obrębie grupy. Indeks unikalny na tej parze pilnuje, żeby jedno ustawienie miało dokładnie jedną wartość — bez tego zachowanie systemu zależałoby od kolejności odczytu wierszy.
Dwa znaczniki logiczne odpowiadają za rzeczy często mylone. VISIBLE decyduje, czy parametr jest widoczny w ekranie konfiguracji — pozwala ukryć ustawienia techniczne, których nikt poza wdrożeniowcem nie powinien zmieniać. SYSTEMOWE rozstrzyga natomiast, czy wiersz zostanie nadpisany przy synchronizacji z bazą wzorcową. Parametr ukryty nadal działa; parametr systemowy nadal jest widoczny.
Wszystkie wartości są przechowywane jako tekst, więc liczba i data wymagają konwersji po odczycie — i kontroli poprawności przy zapisie.
Budowa tabeli — wykaz kolumn
Dziewięć kolumn opisuje identyfikację parametru, jego wartość oraz sposób traktowania przy synchronizacji i w interfejsie.
| Kolumna | Typ | Wymagana | Znaczenie |
|---|---|---|---|
AKTYWNE | bit wartość logiczna 0/1 | tak | Oznaczenie czy dany wiersz jest aktywny |
GRUPA | varchar(50) tekst do 50 znaków | tak | Symbol grupy parametrów |
ID | int liczba całkowita | tak | Unikalny identyfikator wiersza tabeli |
KOD | varchar(20) tekst do 20 znaków | tak | Unikalny kod parametru |
OPIS | varchar(50) tekst do 50 znaków | tak | Opis parametru |
ROLA | varchar(50) tekst do 50 znaków | tak | Oznaczenie roli |
SYSTEMOWE | bit wartość logiczna 0/1 | tak | Oznaczenie czy dany wiersz jest systemowy, czy będzie syncrhonizowany z bazą ROOT |
VISIBLE | bit wartość logiczna 0/1 | tak | Oznaczenie czy dany parametr jest widoczny czy ukryty z poziomu programu |
WARTOSC | varchar(500) tekst do 500 znaków | nie | Wartość parametru |
Kolumna WARTOSC ma typ varchar(500), więc przechowuje wszystko jako tekst — również liczby, daty i wartości logiczne. Konwersja i sprawdzenie poprawności leżą po stronie aplikacji.
Indeksy i wydajność zapytań
Trzy indeksy odpowiadają dwóm sposobom sięgania po parametr: przez pełny adres grupa plus kod oraz przez sam kod, gdy grupa nie jest znana.
| Indeks | Kolumny | Rodzaj |
|---|---|---|
GRUPA_KOD | GRUPA, KOD | unikalny |
KOD | KOD | zwykły |
PK__parametry | ID | klucz główny |
Indeks GRUPA_KOD jest unikalny i to jego najważniejsza funkcja — wymusza jednoznaczność ustawienia. Osobny indeks na samym kodzie obsługuje przypadek, gdy parametr jest wyszukiwany bez podania grupy, co zdarza się w narzędziach diagnostycznych.
Konfiguracja w bazie danych: co się sprawdza, a co mści
Przechowywanie ustawień w tabeli daje elastyczność, której nie ma konfiguracja w plikach. Ta sama elastyczność bywa jednak źródłem problemów, jeżeli zabraknie kilku prostych reguł.
| Zagadnienie | Podejście, które się sprawdza | Czego unikać |
|---|---|---|
| Nazewnictwo | Grupa odpowiada modułowi, kod opisuje ustawienie | Kody typu PARAM1, PARAM2 — po roku nieczytelne |
| Opis | Zdanie mówiące, co się zmieni po zmianie wartości | Powtórzenie nazwy kodu innymi słowami |
| Wartości logiczne | Jedna konwencja w całej bazie, na przykład 1 i 0 | Mieszanie TAK/NIE, T/N, true/false |
| Zmiany na produkcji | Test na kopii bazy, potem przeniesienie | Zmiana wartości „na próbę” w godzinach pracy |
| Parametry nieużywane | Wyłączenie znacznikiem AKTYWNE | Usunięcie wiersza — aplikacja może go nadal odczytywać |
Wiersz z pustą wartością i wiersz nieistniejący to dla aplikacji dwie różne sytuacje — usunięcie parametru bywa groźniejsze niż jego wyzerowanie.
Szczególnej ostrożności wymaga ostatni punkt. Aplikacja odczytująca nieistniejący parametr zachowa się zgodnie z wartością domyślną wpisaną w kodzie — a ta niekoniecznie odpowiada temu, co było ustawione. Wyłączenie znacznikiem AKTYWNE zachowuje wiersz i pozwala wrócić do poprzedniego stanu, jeżeli okaże się, że parametr jednak był potrzebny.
Jak korzystać z tabeli w praktyce
Przy utrzymaniu konfiguracji w bazie warto trzymać się poniższych zasad:
- Wypełniaj kolumnę
OPISzdaniem mówiącym, co zmieni się po zmianie wartości — nie powtórzeniem nazwy kodu. - Przyjmij jedną konwencję dla wartości logicznych w całej bazie i trzymaj się jej; mieszanie
1/0zTAK/NIEto częsta przyczyna błędów po wdrożeniu. - Ukrywaj znacznikiem
VISIBLEparametry techniczne zamiast liczyć na to, że nikt ich nie znajdzie. - Nie modyfikuj wierszy z
SYSTEMOWE = 1; zostaną nadpisane przy synchronizacji z bazą wzorcową. - Testuj zmiany na kopii bazy — parametr sterujący obiegiem dokumentów potrafi wstrzymać pracę całego magazynu.
- Wyłączaj nieużywane pozycje znacznikiem
AKTYWNEzamiast je usuwać; brak wiersza i pusta wartość to dla aplikacji dwie różne sytuacje.
Przegląd parametrów wdrożeniowych z pominięciem ustawień systemowych — punkt wyjścia przy porównywaniu dwóch instalacji:
SELECT GRUPA,
KOD,
WARTOSC,
OPIS,
ROLA,
CASE VISIBLE WHEN 1 THEN 'widoczny' ELSE 'ukryty' END AS W_INTERFEJSIE
FROM dbo._parametry
WHERE SYSTEMOWE = 0
AND AKTYWNE = 1
ORDER BY GRUPA, KOD;
Zestawienie wyniku tego zapytania z dwóch środowisk najszybciej tłumaczy, dlaczego ten sam system zachowuje się na nich inaczej.
Konfiguracja przechowywana w bazie jest wygodna dokładnie tak długo, jak długo da się ją przeczytać. Kilkadziesiąt parametrów z sensownymi opisami to narzędzie; kilkaset z pustą kolumną opisu to przeszkoda przy każdej późniejszej zmianie.
Powiązane tabele i dokumentacja
Parametry sterują zachowaniem mechanizmów opisanych w pozostałych tabelach konfiguracyjnych: