2.0.6. Funkce v sestavách
Previous Top Next


1. Pro scripty

ADDVAR - přidá proměnnou
DIALOG - otevře okno
WINRUN - spustí jiné aplikace
GO - spustí SQL příkaz

Příklad dialogu s jedním údajem:
ADDVAR^Ucetni mesic^#FUCETMESIC#F
DIALOG

Následující funkce se používaly už dříve - jiný systém, nepouziva se #F:

##CisloStrankyCelkem
##CisloStranky

graphic



SCRIPTPARAM číslo parametru
SELPOLE pořadí pole: vezme x-té pole ze selectu (použití u registru, kde se SQL příkaz mění dle měsíce)
JMENOUZIV číslo uživatele: zjistí jméno uživatele
KCSLOVY - pouze koruny
KCHALSLOVY - i haléře
ODDELTISIC
KOMACISLO - desetinná místa vypisuje automaticky
ORIGINAL - pro SQL příkazy obsah původního řetězce
ALIAS - pro SQL příkazy alias prvního recordu daného souboru
TABULKA - pro SQL příkazy
UCTODAVKA
NEZAUCODDO
DOKLADODDO
OMEZCIRA
UCETMESIC
UCETROK
CONNECTSTRING - string urcujici cestu k datum
DNESNIDATUM
ULOZPAMET1 - uloží výsledek do paměti a vynuluje registr
CTIPAMET1 - přečte údaj z paměti (pamětí je 100 s čísly 0,..,99)
PRIDEJSOUCET - přičte výsledek do paměti ale nevynuluje
CTISOUCET - přečte údaj z paměti a vynuluje paměť (pamětí je 10 s čísly 0,..,9) - lze použít v jiném poli než PRIDEJSOUCET
POSUNRADEK - pro rychlejší zaúčtování
ASCIIZNAK - pro jehličkové tiskárny #F27^ASCIIZNAK#F
SQLSTR - spustí select a načte text z prvního údaje první věty - Pomalé

Funkce je uzevřena mezi dvěmi znaky #F, vnořování není možné, jednotlivé parametry a názvy funkcí jsou odděleny znakem ^. První je proměnná nebo konstanta, následuje jméno funkce a parametry.

Příklady použití :
a)
#F@»$$Částka celkem«^KCSLOVY^ZAROVNAT^L^40^=^VYREZ^21^20#F
Proměnná částka celkem se vypíše jako Kč slovy zarovnané znakem = a z tohoto se vyřízne 20 znaků od pozice 21.

b)
#F@»$$Částka celkem MD«^+^@»$$Částka celkem DAL«^2^+^@»$$DPH«^2#F
Sečte se MD a DAL, a výsledek se zaokrouhlí na 2 desetinná místa. Pak se přičte DPH a znovu se zaokrouhlí na 2 dm.

c)
#F1^+^1^2^ULOZPAMET1^+^2^2^+^2^2^ULOZPAMET2^+^3^2^+^3^2^*^CTIPAMET1^2^*^CTIPAMET2^2#F
(1+1)*(2+2)*(3+3) = 2*4*6 = 48

d)
#Fselect stredisko from UUEDOR200000001 WHERE KLCDKLD='@»$$Klíč dokladu$Klíč bez masky«' ANDTPRADKU=@»$$Typ řádku protivěty« AND PRDRDKA=@»$$Pořadí řádku A«^SQLSTR#F
#F@»$$Typ oádku«^VYREZ^1^0#F
Přečte středisko souvztažné z protivěty, druhá funkce přinutí program, aby zahrnul proměnnou do selectu, ale netiskl ji v sestavě.

Problém - UUEDOR200000001 se zatím musí každý rok přepisovat

e) Výpočet a přičtení
#F@»$$Množství PJ realizované«^*^1^0^PRIDEJSOUCET1#F

f) Tisk součtu
#F0^+^CTISOUCET1^2#F

g)
#FJMENOUZIV^@»$$První uživatel«#F

h) Tisk haléřů
#F@»$$Částka DAL pro rekapitulaci« ^+^0^0^ULOZPAMET1^@»$$Částka DAL pro rekapitulaci«^-^CTIPAMET1^2^*^100^0#F

i) Tisk s podmínkou
#FSELECT case when A00.TypPouzCe = 0 then A00.ZaklCeCel * 1.05 else A00.ZaklCeCel end FROM dbo."OSEDOH200200001" A00 where (A00."CislDokla" = '@»$$Číslo dokladu«')^SQLSTR^+^0^1^+^0^2#F

2. ŽIVNOBANKA KLIENT -> BANKA

  4  kód pu
16  CisloUctuuPU /i s pomlčkou/
13  KcPrikazu
30  adresa
10  VariabilniSymbol
  4  KonstantniSymbol
10  SpecifickySymbol
17  text
  1 konstanta "1"
  8 DatumSplatnostiPrikazu SsRrMmDd

3. OSEDOH zaokrouhleni

Hlavička obsahuje proměnné:
Pro DPH:
- "Řád zaokrouhlení DPH"
- "Způsob zaokrouhlení DPH"
Pro Kc i CM /celkem/:
- "Řád zaokrouhlení dokladu"
- "Způsob zaokrouhlení dokladu"
Přednastavení v číselné řadě

4. UUEDOH zaokrouhleni


Pouze DPH:
Je-li VypocetDPHZhora pak "na 2 dm matematicky",
jinak "na 1 dm nahoru".

5. Reálné zaúčtování CM

create view TRUBKA_PIPKA as SELECT RRR.KLCDKLD as KLIC,
Min(RRR.CISRADKU) as MINIMUM
FROM #FUUEDOR^TABULKA#F RRR
GROUP BY RRR.KLCDKLD

update #FUUEDOR^TABULKA#F
set CSTKCZMN = A00.KUhraVCiM
FROM #FOSEDOH^TABULKA#F A00,
MADAM_ORAWETZ_A_SZEBESTOVA.dbo.TRUBKA_PIPKA TRUBKA_PIPKA,
#FUUEDOR^TABULKA#F RRR
WHERE RRR.CISRADKU = TRUBKA_PIPKA.MINIMUM AND
RRR.KLCDKLD = TRUBKA_PIPKA.KLIC AND A00.KlicDokla = RRR.KLCDKLD
and A00.KUhraVCiM 0

drop view TRUBKA_PIPKA

update #FUUEDOR^TABULKA#F
set KRZVLSTK=A00.KurzovLis,
KURZMENY=KurzCizMe
FROM #FOSEDOH^TABULKA#F A00,
#FUUEDOR^TABULKA#F RRR
WHERE A00.KlicDokla = RRR.KLCDKLD and A00.KurzovLis > ''