( Mode : Byte;
DBT : Byte;
Index : Word;
FromDate : Date;
SepDate : Date;
... ) : Byte
Umožňuje rychlé zjišťování dat historické položky z oddělení Osobní a Pam pro jednoho nebo více zaměstnanců. Přitom není nutno nahrávat potřebné zaměstnance do paměti.
Obecně platí:
| Mode | Parametry | Popis |
| HEV_ZAM_JEDEN |
( ManIdent : Longint; dim Value ; dim RefDate : Date; dim CreDate : Date) : Byte |
V parametru Value vrací hodnotu historické položky pro zaměstnance s identem ManIdent. V parametrech RefDate a CreDate vrací datum platnosti a založení nalezené historické položky. Jestliže je nějaká položka nalezena, vrací funkce true. |
| HEV_ZAM_VYCET |
(dim F : File) : Byte |
Ve streamu F vrací hodnoty historické položky pro zaměstnance, jejichž identy jsou uloženy ve streamu F. Počet identů ve streamu není omezen. Uložit identy lze třeba takto: dim F : File;
SRewrite(F, "", true);
if(_StartDB(dbtO))then
repeat
SPut(F,_SCount(F), O[dbIdent]);
until _StepRec(dbtO, 1)=false;
endif
Identy vracených zaměstnanců nebudou ve stejném pořadí, v jakém byly do streamu vloženy! Strukturu vraceného streamu naleznete pod touto tabulkou. |
| HEV_ZAM_MASKA |
( ManRights : Longint; dim F : File) : Byte |
Ve streamu F vrací hodnoty historické položky pro zaměstnance, jejichž práva vyhoví masce ManRights. Jestliže bude ManRights = -1, bude použita maska práv aktuálně přihlášeného uživatele. Strukturu vraceného streamu naleznete pod touto tabulkou. |
Struktura vraceného streamu:
| Index | Popis | Příklad pro získání jedné věty |
| 0..99999 | Identy vracených zaměstnanců. | Idx |
| 100000..199999 | Hodnota historické položky. Nebude-li historická hodnota pro zvolené období nalezena, nebude zde záznam! | Idx+100000 |
| 200000..299999 | Datum platnosti historické položky. Nebude-li historická hodnota pro zvolené období nalezena, nebude zde záznam! | Idx+200000 |
| 300000..399999 | Datum založení historické položky. Nebude-li historická hodnota pro zvolené období nalezena, nebude zde záznam! | Idx+300000 |
Podívejte se na: Historie
Příklady:
Zjištění položky P0098 pro období 1/2008 pro jednoho zaměstnance:
procedure TestHstExt
dim Result : Byte;
dim Value : Real
dim FDate : Date;
dim RDate : Date;
dim CDate : Date;
dim SDate : Date;
FDate := _LastDate(1,2008);
SDate := FDate;
Result := _HstExtValid(HEV_ZAM_JEDEN, dbtP, 98, FDate, SDate, 12, Value, RDate, CDate);
Trace("Result=",Result," RDate=",FDate," RDate=",CDate," Value=",Value:10:5);
endproc
Sčítání položky P0098 pro období 1/2008 pomocí výčtu zaměstnanců:
procedure Test
dim F : File;
dim Suma : Real;
Suma := 0;
StepIdx(dbtO,oJmeno);
SetActEnv(1,1,2008);
SRewrite(F, "", true);
if(_StartDB(dbtO))then
repeat
SPut(F,_SCount(F), O[dbIdent]);
until _StepRec(dbtO, 1)=false;
endif
dim FDate : Date;
dim RDate : Date;
dim CDate : Date;
dim SDate : Date;
dim Key : Longint;
FDate := _LastDate(1,2008);
SDate := _Date(0,0,0);
if(_HstExtValid(HEV_ZAM_VYCET, dbtP, 98, FDate, SDate, F))then
if(_SFirst(F, Key))then
repeat
if(_SGetTyp(F,Key+100000)<>0)then
Suma := Suma + _SGet(F,Key+100000);
endif
until _SNext(F, Key)=false or Key>=100000;
endif
endif
SClose(F);
endproc
Sčítání položky P0098 pro období 1/2008 pomocí přístupových práv k zaměstnancům:
procedure Test
dim F : File;
dim Suma : Real;
Suma := 0;
dim FDate : Date;
dim RDate : Date;
dim CDate : Date;
dim SDate : Date;
dim Key : Longint;
SRewrite(F, "", true);
FDate := _LastDate(1,2008);
SDate := _Date(0,0,0);
if(_HstExtValid(HEV_ZAM_MASKA, dbtP, 98, FDate, SDate, -1, F))then
if(_SFirst(F, Key))then
repeat
if(_SGetTyp(F,Key+100000)<>0)then
Suma := Suma + _SGet(F,Key+100000);
endif
until _SNext(F, Key)=false or Key>=100000;
endif
endif
SClose(F);
endproc