SQL Server w logistyce

Tabela x_zestawienia w bazie danych SQL Server

Konfiguracja zestawień — definiuje źródło danych, uprawnienia do edycji, filtry kontekstowe i zachowanie siatki.

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
  • Zestawienie powstaje bez pisania kodu — wystarczy zapytanie źródłowe i zestaw znaczników opisujących zachowanie siatki.
  • Znaczniki z przedrostkiem ACCEPT decydują, czy dane wolno w tym widoku edytować, dopisywać i usuwać.
  • Filtry kontekstowe automatycznie zawężają dane do magazynu, oddziału i firmy zalogowanego użytkownika.
  • Znaczniki z przedrostkiem ALLOW sterują tym, co użytkownik może zrobić z wynikiem: filtrować, grupować, eksportować.

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

Każde wdrożenie potrzebuje zestawień, których nie ma w wersji podstawowej: raport braków dla konkretnego klienta, lista przesyłek za pobraniem, zestawienie palet w drodze. Tabela [dbo].[x_zestawienia] pozwala je zdefiniować bez pisania kodu — wystarczy zapytanie źródłowe i opis pożądanego zachowania siatki.

Definicja obejmuje cztery grupy ustawień. Źródło danych to zapytanie w kolumnie ZAPYTANIE wraz z ewentualnym wskazaniem tabeli do zapisu w INSUPDTABLE. Prawa edycji opisują cztery znaczniki z przedrostkiem ACCEPT. Możliwości użytkownika — kilkanaście znaczników ALLOW, od filtrowania po eksport. Zachowanie siatki — stronicowanie, wysokość wiersza, tryb zaznaczania i reakcja na dwukrotne kliknięcie.

Osobną i najbardziej praktyczną grupą są filtry kontekstowe: FILTRMAGAZYN, FILTRODDZIAL, FILTRFIRMA, FILTRUSER i pokrewne. Włączone sprawiają, że zestawienie automatycznie zawęża dane do kontekstu zalogowanego użytkownika. Dzięki temu jedna definicja obsługuje wszystkie magazyny, a każdy kierownik widzi wyłącznie swój — bez tworzenia osobnych widoków i bez ryzyka, że ktoś zobaczy cudze dane.

Z czego składa się definicja zestawienia
Źródło ŹródłoZapytanie SQL zwracające dane i opcjonalna tabela zapisu
Kontekst KontekstFiltry zawężające wynik do magazynu i oddziału użytkownika
Prawa edycji Prawa edycjiZnaczniki decydujące o dopisywaniu, edycji i usuwaniu
Zachowanie ZachowanieFiltrowanie, grupowanie, eksport i stronicowanie wyniku

Filtry kontekstowe są tu najważniejsze: pozwalają jedną definicją obsłużyć wszystkie oddziały, bez ryzyka pokazania cudzych danych.

Budowa tabeli — wykaz kolumn

Sześćdziesiąt siedem kolumn układa się w pięć grup odpowiadających kolejnym decyzjom przy projektowaniu zestawienia.

Wykaz kolumn tabeli
KolumnaTypWymaganaZnaczenie
Identyfikacja zestawienia
ID_ZESTAWIENIEinttakUnikalny identyfikator wiersza tabeli
NAZWAvarchar(200)nieNazwa zestawienia
UNIQUEIDvarchar(50)takUnikalny identyfikator
REFNOvarchar(50)nieNumer referencyjny zestawienia
REFNO_POZbigintnienumer referencyjny pozycji
PRXvarchar(3)nieKod dla grupy zestawień, rola systemowa dlaktórej zostało dopisane zestawienie
KOLEJNOSCinttakOznaczenie kolejności zestawienia do sortowania
AKTYWNEbittakOznaczenie czy dane zestawienie (widok) jest aktywny
SYSTEMOWEbittakOznaczenie czy dana pozycja zestawienia jest instalowana systemowo i podlega synchornizacji z bazą ROOT
KONFIGURACJAbittakOznaczenie wiersza czy dotyczy konfiguracji ROOT.Ppodczas synchronizacji z bazą ROOT dane wiersze zostaną przegrane z bazy wzorcowej do instalacji klienta
KIEDYdatetimeniedata i czas dopisania zestawienia do bazy
LOGINvarchar(50)nieLogin użytkownika który dopisał zestawienie do bazy
Źródło danych i zapis
ZAPYTANIEvarchar(max)nieZapytanie SQL do bazy danych, którego wynikiem są dane w zestawieniu
ZRODLO_DANYCHvarchar(200)nieŹródło danych skąd pobierane są dane do zestawienia
INSUPDTABLEvarchar(250)nieInformacja zawierająca nazwę tabeli do transakcji INSERT i UPDATE
HIDEPARAMbittakOznaczenie czy użytkownik przeglądający zestawienie ukryte parametry
Prawa edycji
ACCEPTINSERTbittakInformacja czy x_grid obsługuje dopisywanie danych
ACCEPTEDITbittakInformacja czy x_grid obsługuje edycję danych
ACCEPTDELETEbittakInformacja czy x_grid obsługuje kasowanie danych
ACCEPTBATCHEDITbittakInformacja czy x_grid obsługuje multi edycję danych
AUTO_SAVEvarchar(20)nieTryb automatycznego zapisu edycji: „cell” - zapis po zakończeniu edycji komórki; „row” - po opuszczeniu wiersza; puste - auto-save wyłączony
AUTO_SAVE_INTERVALdecimal(18,0)nieInterwał (w sekundach) wysyłania automatycznego zapisu, gdy AUTO_SAVE ≠ puste. Wartość 0 lub NULL dezaktywuje licznik
Filtry kontekstowe i dostęp
FILTRFIRMAbittakOznaczenie czy dane w zestawieniu mają być automatycznie filtrowane wg firmy
FILTRODDZIALbittakOznaczenie czy dane w zestawieniu mają być automatycznie filtrowane wg symbolu oddziału zalogowanego uzytkownika
FILTRMAGAZYNbittakOznaczenie czy dane w zestawieniu mają być automatycznie filtrowane wg symbolu magazynu zalogowanego uzytkownika
FILTRKOMORKAbittakOznaczenie czy dane w zestawieniu mają być automatycznie filtrowane wg symbolu komórki zalogowanego uzytkownika
FILTRUSERbittakOznaczenie czy dane w zestawieniu mają być automatycznie filtrowane wg loginu uzytkownika
FILTRROLASYSbittakParametr wymusza filtrowanie pozycji tabeli wg kolumny ROLASYS użytkownika danej roli
FILTRDATAbittakOznaczenie czy użytkownik przeglądający zestawienie ma dostęp filtrowania danych wg przedziału czasowego, warunek działa wyłącznie dla zapytań, które mają w danych kolumnę DDOWOD, PO KTÓREJ NASTĘPUJE ODFILTORWANIE DOKUMENTÓW
FILTR_KOLUMNAvarchar(50)nieOznaczenie wg jakiej kolumny dane mają być filtrowane
FILTR_TYPvarchar(1)nieRodzaj sposobu filtrowania
ROLAvarchar(20)nieNazwa roli do jakiej jest przypisany dana pozycja konfiguracji
ROLASYSvarchar(3)nieSymbol roli systemowej pozwala filtrować pozycje wg danej roli
USERNAMEvarchar(100)nieNazwa użytkownika - właściciela zestawienia, jeżeli wartość jest NULL to oznacza że jest to zestawienie ogólne dostępne dla wsyztskich użytkowników danej roli
MPKvarchar(10)nieKod PRX
Zachowanie siatki
ALLOW_FILTRbittakOznaczenie czy użytkownik przeglądający zestawienie ma dostęp do funkcji filtrowania danych
ALLOW_SORTbittakOznaczenie czy użytkownik przeglądający zestawienie ma dostęp do funkcji sortowania danych
ALLOW_GROUPbittakOznaczenie czy użytkownik przeglądający zestawienie ma dostęp do funkcji grupowania danych
ALLOW_GROUP_VISIBLEbittakOznaczenie czy grupa tabeli jest widoczna czy ukryta
ALLOW_EXPORTbittakOznaczenie czy użytkownik przeglądający zestawienie ma dostęp do funkcji eksportowania danych
ALLOW_EXPORT_BTNSvarchar(max)nieMożliwość zdefiniowania własnych linków, które będą dostępne w toolbar rozwijanym pod poleceniem EXPORT XLS, np. polecenie eksportu do pliku XLS<li id=”tb_btnUwagi” sslink=”/role_sys/j_uwagi.aspx?delete=1&grupa=CON&refno=” dialogbox=”True” dialogboxtitle=”Edycja” dialogboxsize=”max” dialogboxrefresh=”False” showclosebutton=”True” role=”menuitem” ><span >Uwagi/notatki</span></li&gt
ALLOW_CHARTbittakOznaczenie czy użytkownik przeglądający zestawienie ma dostęp do funkcji wykresów danych
ALLOW_MENUbittakOznaczenie czy użytkownik przeglądający zestawienie ma dostęp do menu kontekstowego, uruchamiana prawym przyciskiem myszki
ALLOW_MENU_HEADERbittak1 = włączony. Aktywuje menu kontekstowe nagłówka kolumn (PPM na pasku tytułów) umożliwiające sortowanie, ukrywanie lub kopiowanie kolumn; 0 = menu nagłówka wyłączone
ALLOW_SELECTIONbitnieParametr umożliwiający zaznaczanie tekstu w wybranej komórce grida
ALLOW_CONTEXT_MENUbittakZezwala na wygenerowanie kolumny z ikoną trzech kropek, która otwiera menu kontekstowe definiowane w polu TOOLBARMENU; umożliwia działania np. kopiuj-wklej, eksport fragmentu danych czy szybki filtr
ALLOW_CONTEXT_MENU_COLUMNbittak1 = włączony. Umożliwia dodanie w kolumnie specjalnej ikony „⋮”, która wywołuje menu kontekstowe zdefiniowane w tabeli _menu dla danego zestawienia; 0 = ikona i menu wyłączone
SELECTIONMODEvarchar(25)nieDefinicja sposobu zaznaczania wierszy w tabeli, domyślnie singlerow. Inne wartości: none, multiplerows, multiplerowsextended, singlecell, multiplecells, multiplecellsextended, multiplecellsadvanced, checkbox
MULTI_ROW_SELECTbitnieOznaczenie czy w zestawienu jest dostępne zaznaczanie więcej niż jednego wiersza. Standardowo jest zaznaczany jeden wiersz tabeli
SHOW_FILTER_ROWbitnieZnacznik określający czy jest widoczny wiersz filtrowania
PAGINGMODEvarchar(20)takSposób pobierania danych standardowo jest to VirtualLoad, ale może być ClassicPaging
PAGINGSIZEinttakPodział stron tabeli może pobiearać okreśłoną ilość wierszy (rekordów), standardowo 50
ROWHIGHTinttakOkreślenie wysokości wiersza tabeli, domyślnie jest 25px, zalecane jest ustawienie więcej
FLEX_DIRECTIONvarchar(20)nieOkreśla kierunek układu kontrolek w trybie responsywnego formularza (Flex layout) otwieranego z grida: „row”, „row-reverse”, „column”, „column-reverse”
FLAGROWbittakInformacja czy x_grid obsługuje priorytet wiersza
PRIORITYROWbittakInformacja czy x_grid obsługuje priorytet wiersza indywidualnie dla każdego użytkownika
READROWbittakInformacja czy x_grid obsługuje status odczytania wiersza indywidualnie dla każdego użytkownika
DCLICKbittakczy grid ma odpalać transakcję przez double click
DCLICK_LINKbigintnieOkreślenie transakcji do uruchomienia. ID polecenia toolbarmenu, które ma zostać wywołanie po podwójnym kliknięciu
DCLICK_TIMEinttakczas podany w milisekundach - dopuszczalna przerwa między kliknięciami
COMBOFILTRvarchar(max)nieSpecjalne filtrowanie typu COMBO dla j_grid
COMBOFILTRCONvarchar(50)nieNazwa połączenia do bazy danych (connectionstring) dla skorowidza używanego w kolumnie filtrowanej wg skorowidza
COMBOFILTRKOLvarchar(50)nieNazwa kolumny filtrowanej wg skorowidza
TOOLBARMENUbittakOznaczenie czy użytkownik przeglądający zestawienie ma dostęp do paska przycisków nad tabelą
INSTRUKCJA_TYTULvarchar(250)nieTytuł opisu na potrzeby instrukcji
INSTRUKCJA_OPISvarchar(5000)nieOpis na potrzeby instrukcji
INSTRUKCJA_IMGvarchar(250)nieLink do zdjęcia, zrzutu ekranu na potrzeby instrukcji, uwaga link powinien zaczynać się od https !

Kolumna INSUPDTABLE zasługuje na szczególną uwagę: wskazuje tabelę, do której trafiają zmiany wprowadzone w siatce. Bez niej znaczniki praw edycji nie mają skutku, bo system nie wie, gdzie zapisać dane.

Zestawienie edytowalne — kiedy ma sens, a kiedy szkodzi

Możliwość edycji danych wprost w siatce jest wygodna i bywa nadużywana. Warto rozróżnić przypadki, w których pomaga, od tych, w których omija mechanizmy kontrolne systemu.

Edycja w siatce a obieg dokumentów
Rodzaj danychEdycja w zestawieniuUzasadnienie
Dane opisowe kartotekWskazanaPoprawa nazwy czy uwag nie wymaga obiegu dokumentu
Parametry pomocnicze i słownikiWskazanaSzybsza niż otwieranie formularza dla każdej pozycji
Ilości i stany magazynoweOdradzanaZmiana stanu powinna wynikać z dokumentu, nie z wpisu w siatce
Dokumenty zatwierdzoneWykluczonaOmija ślad rewizyjny i kontrolę uprawnień
Dane rozliczenioweWykluczonaWymagają uzasadnienia zapisanego w rejestrze zmian

Reguła ogólna: edycja w siatce jest właściwa tam, gdzie zmiana nie musi zostawiać śladu, kto i dlaczego jej dokonał.

Warto też pamiętać o znaczniku edycji zbiorczej. Pozwala zmienić wiele wierszy jedną operacją, co przy porządkowaniu kartotek oszczędza godziny. Przy danych operacyjnych oznacza jednak, że pojedyncza pomyłka obejmie od razu setki rekordów — i to bez pytania o potwierdzenie, jeżeli włączony jest automatyczny zapis.

Jak korzystać z tabeli w praktyce

Przy definiowaniu zestawień warto trzymać się poniższych zasad:

  • Włączaj filtry kontekstowe zamiast wpisywać ograniczenia do zapytania — jedna definicja obsłuży wtedy wszystkie oddziały.
  • Ustaw stronicowanie przy zestawieniach mogących zwrócić dużo wierszy; siatka bez limitu potrafi zablokować przeglądarkę.
  • Wyłączaj prawa edycji wszędzie, gdzie zmiana powinna wynikać z dokumentu, a nie z bezpośredniego wpisu.
  • Ogranicz eksport tam, gdzie zestawienie zawiera dane osobowe albo handlowe — plik opuszcza kontrolę systemu bezpowrotnie.
  • Wypełniaj kolumny INSTRUKCJA_*; zestawienie bez opisu po roku bywa używane niezgodnie z przeznaczeniem.
  • Sprawdź czas wykonania zapytania przed udostępnieniem; zestawienie ładujące się minutę zostanie uznane za awarię systemu.

Przegląd zestawień wdrożeniowych pod kątem uprawnień do edycji i eksportu — punkt wyjścia do audytu dostępu do danych:

SELECT  NAZWA,
        PRX,
        ROLA,
        CASE WHEN ACCEPTEDIT = 1 OR ACCEPTINSERT = 1
               OR ACCEPTDELETE = 1 THEN 'tak' ELSE 'nie' END AS EDYCJA,
        CASE WHEN ACCEPTBATCHEDIT = 1 THEN 'tak' ELSE 'nie' END AS EDYCJA_ZBIORCZA,
        CASE WHEN ALLOW_EXPORT = 1 THEN 'tak' ELSE 'nie' END    AS EKSPORT,
        CASE WHEN FILTRMAGAZYN = 1 OR FILTRODDZIAL = 1 THEN 'tak'
             ELSE 'BRAK' END AS FILTR_KONTEKSTOWY
FROM    dbo.x_zestawienia
WHERE   AKTYWNE = 1
  AND   SYSTEMOWE = 0
ORDER BY EDYCJA DESC, EKSPORT DESC, NAZWA;

Wiersze z edycją zbiorczą i jednocześnie bez filtra kontekstowego zasługują na sprawdzenie w pierwszej kolejności — pozwalają zmienić wiele rekordów w danych, które nie zostały zawężone do kontekstu użytkownika.

Konfigurowalne zestawienia są jedną z mocniejszych stron systemu i jednocześnie miejscem, w którym najłatwiej obejść wszystkie zabudowane w nim mechanizmy kontrolne. Warto traktować definicję zestawienia edytowalnego jak zmianę w uprawnieniach, a nie jak ustawienie widoku — bo w praktyce właśnie tym jest.

Powiązane tabele i dokumentacja

Konfiguracja zestawień działa razem z definicjami kolumn i pozostałymi elementami interfejsu:

FAQ

Najczęściej zadawane pytania o tabelę x_zestawienia

01

Do czego służą filtry kontekstowe?

Automatycznie zawężają wynik do kontekstu zalogowanego użytkownika — jego magazynu, oddziału, firmy albo komórki. Dzięki temu jedna definicja obsługuje wszystkie lokalizacje, a każdy kierownik widzi wyłącznie swoje dane. Alternatywa, czyli wpisanie ograniczeń do zapytania, wymagałaby osobnej definicji dla każdego oddziału.

02

Kiedy włączać edycję danych wprost w siatce?

Tam, gdzie zmiana nie musi zostawiać śladu, kto i dlaczego jej dokonał — przy danych opisowych kartotek, słownikach i parametrach pomocniczych. Przy ilościach, stanach magazynowych i dokumentach zatwierdzonych edycja w siatce omija obieg dokumentów oraz ślad rewizyjny i nie powinna być udostępniana.

03

Czym grozi edycja zbiorcza?

Tym, że pojedyncza pomyłka obejmuje od razu wiele wierszy. Przy porządkowaniu kartotek to zaleta oszczędzająca godziny pracy; przy danych operacyjnych — poważne ryzyko, zwłaszcza gdy włączony jest automatyczny zapis, który nie pyta o potwierdzenie. Warto ją łączyć z filtrem kontekstowym zawężającym zbiór.

04

Po co osobna kolumna INSUPDTABLE?

Wskazuje tabelę, do której mają trafiać zmiany wprowadzone w siatce. Zapytanie źródłowe może łączyć kilka tabel, więc system nie ma jak sam ustalić, gdzie zapisać dane. Bez wypełnienia tej kolumny znaczniki praw edycji pozostają bez skutku.

Słownik pojęć

Słownik pojęć

Pojęcia związane z konfigurowaniem zestawień i dostępem do danych.

RRaportowanie
Przetwarzanie danych operacyjnych w zestawienia wspierające decyzje. W SQL Server realizowane zapytaniami, widokami i narzędziami analitycznymi.
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.
EEksport do Excela
Przekazanie danych z systemu do arkusza kalkulacyjnego. Wygodne przy analizie doraźnej, ale kopia w arkuszu natychmiast przestaje być aktualna.
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ń.
TT-SQL
Transact-SQL — dialekt języka SQL używany w Microsoft SQL Server. Służy do zapytań, procedur składowanych, wyzwalaczy i logiki uruchamianej po stronie serwera.
ŚŚlad rewizyjny
Nieusuwalny zapis, kto i kiedy zmienił dane w systemie. Podstawa wiarygodności ewidencji podczas audytu i kontroli.
RRODO
Rozporządzenie o ochronie danych osobowych. Wymaga ograniczenia dostępu do danych, rejestrowania operacji na nich i wskazania podstawy przetwarzania.
PPulpit menedżerski
Ekran zbierający najważniejsze wskaźniki w jednym widoku, odświeżany na bieżąco z bazy danych.

Zobacz to w praktyce

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