QBS >> Suplementy i dokumentacja techniczna >> Pliki konfiguracyjne

Pliki konfiguracyjne

Komentarze

Komentarze piszemy po // do końca linii, lub pomiędzy /* */. Tak jak w języku programowania C. W pliku konfiguracyjnym może się znajdować kilka rodzajów obiektów (bloków). Pierwsze słowo każdego bloku to kod rodzaju, a następnie jego definicja (składnia może być inna dla każdego rodzaju)

Rodzaje Obiektów w pliku konfiguracyjnym

W pliku konfiguracyjnym może się znajdować kilka rodzajów obiektów (bloków). Pierwsze słowo każdego bloku to kod rodzaju, a następnie jego definicja (składnia może być inna dla każdego rodzaju)

Oto lista istniejących rodzajów bloków ( ich kody ):

Blok definicji tabelek - TAB

Blok definicji tabelek TAB - Składnia

Blok TAB (po prostu tabelka) składa się z następujących części

TAB jest dość uniwersalną strukturą. Służy ona do definiowania struktur baz danych, browserów, edycji rekordów ... Inaczej mówiąc w tą samą formę zapisu (rozszerzenia + nagłówek + kolumny i linie) wrzucona jest definicja wielu różnych obiektów. Ponieważ nigdzie nie podajemy explicite co definiuje dany TAB, jeden TAB może jednocześnie definiować dwa różne obiekty (np: Tabele na serwerze SEP i Browser). W takiej sytuacji pewne kolumny będą interpretowane tylko przez jeden obiekt, zaś inne tylko przez drugi, no i będą także takie, które są wspólne. To podejście pozawala na definiowanie nowych obiektów, tylko przez przedefiniowywanie różnic. (np. w spojrzeniu innym zmieniamy tytuł i dodajemy tylko pole) Lista atrybutów nagłówka i linii tabelki jest różna dla różnych obiektów:

Linia identyfikująca

Blok rozpoczyna się słówkiem TAB, następnie pojawia się identyfikator Tabelki (unikalny kod odwołania po którym będziemy szukać). jeżeli tabelka ma rozszerzać inną to po tym występuje słowo extends a następnie lista identyfikatorów tabelek roszerzanych. Ogólny opis mechanizmu rozszerzania znajduje się w punkcie Zasady rozszerzania bloków Np:
TAB BOLEK // bez rozszerzania
// albo
TAB BOLEK extends BOLECZEK1 BOLECZEK2; // rozszerzająca tabelki BOLECZEK1 i BOLECZEK2

Nagłówek tabelki

Nagłówek tabelki składa się po prostu z kolejnych atrybutów i ich wartości. Definicja atrybutu jest postaci
<identyfikator atrybutu>=<wartość>
gdzie składnia pola <wartość> zależy od samego atrybutu. atrybuty nagłówka mogą oczywiście być dziedziczone i nadpisywane. wyjątkiem jest tylko atrybut BASETYPE. Oto przykład:
    TITLE="Okresy zawodników w drużynach"
    BASE=TEAM_PLAYERS
    BASETYPE=SEP
    POS=10 30
    RECEDIT=TEAM_PLAYER_EDIT
    ORDERS=
    {
     ID          FIELDS            LABEL             VIS;
     ID          ( ID )            "Id"              HIDE     UNIQUE=YES;
    }
W celu utrzymania czytelności przed każdym atrybutem nagłówka należy zrobić wcięcie (4 spacje).

Ciało tabelki - czyli rzędy i kolumny

Ciało tabelki zaczyna się od lini definiującej identyfikatory obowiązkowych atrybutów dla następujących linii. Następnie występują właściwe linie tabelki; Każda linia definiuje jakiś zastaw atrybutów. Każda linia musi definiować wszystkie linie podane w pierwszej linijce po koleji podając wartości tych atrybutów. O kolejności wartości atrybutów decyduje kolejność podana w pierwszej linii. Po podaniu wszystkich obowiązkowych atrybutów możemy podać wartości dla innych atrybutów. wystarczy podać identyfikator atrybutu a następnie po znaku = jego wartość. Jedynym atrybutem obowiązkowym w każdej linii każdej tabelki jest atrybut ID czyli identyfikator linii.Zwyczajowo podajemy go jako pierwszy identyfikator w linii obowiązkowych atrybutów. Każda liniia (łącznie z pierwszą linią (obowiązkowych kolumn)) musi być zakończona średnikiem. zakończona jest średnikiem. Oto przykład:
{
ID            LEN     TYPE           NAME;
ID            8       INT            "ID"               VIS=HIDE;
TEAMID        8       INT            "TEAMID"           VIS=HIDE;
PLAYERID      8       INT            "PLAYERID"         VIS=HIDE;
DATE_FROM     8       INT            "Data od"          MASK=DATE;
DATE_TO       8       INT            "Data do"          MASK=DATE;
DATE_TO_ORDER 8       INT            "Data ord"         MASK=DATE AUTFUN=DATE_TO=0?2567655:DATE_TO;
}
Formalna składnia
Syntax:
{
<linia identyfikatorów obowiązkowych>
<linia>
<linia>
   .
   .
   .
<linia>
}
rozwijając:
{
<  id-atr obow>  <  id-atr obow> .... <  id-atr obow>;
<wart-atr obow>  <wart-atr obow> .... <wart-atr obow>   <id-atr>=<wart-atr> .... <id-atr>=<wart-atr> ;
<wart-atr obow>  <wart-atr obow> .... <wart-atr obow>   <id-atr>=<wart-atr> .... <id-atr>=<wart-atr> ;
            .                                              .
            .                                              .
            .                                              .
<wart-atr obow>  <wart-atr obow> .... <wart-atr obow>   <id-atr>=<wart-atr> .... <id-atr>=<wart-atr> ;
}
gdzie
UWAGI

Blok definicji tabelek TAB - Atrybuty Atrybuty zależą od konkretnych obiektów opisywanych przez TAB

Atrybuty tabeli bazowej

Atrybuty nagłówka tabeli bazowej
Atrybuty kolumn tabeli na serwerze
Uwaga kolejność pól powinna być zgodna z kolejnością pól na serwerze.

Atrybuty Browsera

Atrybuty nagłówka Browsera

  • LINE_ATTRIB- ustalenie atrybutów linii browsera
  • ORDERSBAR- wyłączenie paska z uporządkowaniem
    Atrybuty ciała tabelki (kolumny) dla Browsera

    Atrybuty Tabelki Edycji Rekordu

    Atrybuty nagłówka edycji rekordu
    Kolumny ciała edycji rekordu

    Zasady rozszerzania bloków

    W każdym bloku (poza blokiem EXT) można zastosować rozszerzanie. Tzn. Możemy powiedzieć że blok A rozszerza blok B, wtedy wszystkie atrybuty, dane, .. , bloku B, automatycznie zostaną skopiowane do bloku A, zaś rzeczy zdefiniowane w bloku A dodawane są do istniejących, bądź nadpisywane (jeżeli były już zdefiniowane w B). Rozszerzanie takie może być wielopoziomowe, tzn. A rozszezra B, B rorzerza C, itd. Jeden blok może rozszerzać całą listę bloków (ostrożnie bo łatwo się pogubić)

    Rozszerzać można oczywiście tylko bloki tego samego typu, dla bloków EVH RSS BSS czyli makr, dodatkowo blok roszerzany i rozszerzający muszą mieć takie same parametry!

    Jeżeli blok ma rozszerzać inne bloki to po jego nazwie podajemy słówko extends a następnie listę bloków rozszerzanych zakończoną średnikiem.Rozszerzanie będzie wykonywane w takiej kolejności jak w podanej liście. Oto przykład

    
    TAB BOLEK
        TITLE="Bolek Wielki"
    {;}  // to jest pusta treść tabelki
    
    TAB BOLECZEK extends BOLEK;
        SIZE=20 20
    {;}
    // teraz w tabeli BOLECZEK jest zdefiniowany i tytuł i rozmiar