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í.