Historie položek

Položky v oddělení osobním a pamu mohou mít tzv historii. Historie je speciální databáze, do které se v časovém sledu ukládají hodnoty položek. Protože historie musí být definována časově, je nutno při změnách historických položek zadávat i datum od kdy hodnota platí a kdy byla zadána. Zobrazení položek v editoru položek automaticky vybírá příslušnou hodnotu vzhledem k zadanému skutečnému měsíci a systémovému roku. Po historické databázi lze krokovat pomocí makrofunkcí _HstFirst, _HstLast, _HstValid, _HstNext a _HstPrev. Pro tyto funkce se historie jednoho zaměstnance jeví jako sled vět seřazených podle datumu platnosti historické věty (DP) a podle datumu založení (DZ).

 Historické věty jedné položky jednoho zaměstnance
 ¸÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ç
 Ë Skupina jednoho                           Ë
 Ë datumu platnosti                          Ë
 ¸÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ç                         Ë
 ËJedna            Ë                         Ë
 Ëvěta             Ë                         Ë
 ¸÷÷÷÷÷ç           Ë                         Ë
                                               DP=datum od kdy hist.pol.
 ¸÷÷ö÷÷ë÷÷ö÷÷ë÷÷ö÷÷ç¸÷÷ö÷÷ë÷÷ö÷÷ç¸÷÷ö÷÷ë÷÷ö÷÷ç    platí
 ËDPËDZËDPËDZËDPËDZËËDPËDZËDPËDZËËDPËDZËDPËDZË DZ=datum, kdy byla hist.pol.
 Ë 1Ë 1Ë  Ë 5Ë  Ë 6ËË 3Ë 3Ë  Ë 5ËË 5Ë 5Ë  Ë 8Ë    založena
 î÷÷ô÷÷ë÷÷ô÷÷ë÷÷ô÷÷¶î÷÷ô÷÷ë÷÷ô÷÷¶î÷÷ô÷÷ë÷÷ô÷÷¶
    Ë           Ë                         î Toto najde _HstLast
    Ë           Ë
    Ë           î÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ Toto najde _HstValid pro
    Ë                                       DP=1
    Ë
    î÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ Toto najde _HstFirst
 Algoritmus pro získání historické položky z historické databáze
 DRef := _LastDate(_ActMonth,_SysYear)    ; referenční datum
 DSep := _LastDate(_LastMonth,_LastYear)  ; oddělovací datum
 DP                                             ; datum platnosti v hst větě
 DZ                                             ; datum založení v hst větě
 1) v historické databázi najdi pro danou položku větu, která splňuje:
    DP /= DRef
 2) jestliže pak bude splněno:        //÷÷÷÷÷÷÷÷÷÷÷ç
    DZ /= DSep                                     Ë
    nahraj tuto větu z historické databáze         Ë
 3) jinak vyhledej bezprostředně předchozí větu a: ¶
 · Oddělovací datum se nastavuje automaticky po zvýšení _LastMonth
   a _LastYear, nebo lze použít speciální proceduru HstSetSep.
 · POZOR na údaje v budoucnosti! Budoucnost se chová jinak než minulost!
   Příklad:  - Aktuální měsíc je 6. Vyšetřovaná položka je P[100].
             - V měsíci 5 je hodnota 500 platná: 1/5 zadaná: 1/5
             - V měsíci 6 je hodnota 600 platná: 1/6 zadaná: 1/6
             - V měsíci 7 je hodnota 700 platná: 1/7 zadaná: 1/7 !
               Při přepnutí do měsíce 5 (_SetActMonth(5)): P[100] = 500
               Při přepnutí do měsíce 7 (_SetActMonth(7)): P[100] = 600 !!
   Na příkladu je vidět, že přepnutím do minulosti vrací systém hodnoty
   v minulosti zadané protože oddělovací datum je vždy menší než datum
   zadání položky. Protože v příkladu je oddělovací datum v měsíci 6, vrací
   tedy systém, po přepnutí do měsíce 7, hodnotu z měsíce 6! Lze říci, že
   systém vždy vrací hodnoty z pohledu měsíce, ve kterém je oddělovací
   datum. Je-li potřeba zobrazit budoucnost tak jak byla zadána, použijte
   proceduru HstSetSep na posunutí oddělovacího datumu.
Blíže se o historii a jejím dopadu na hlavní databáze dozvíte v popisu hlavních databází.