Důležité:


Funkce @EA - Externí akce - Výkazy

Z Asseco Solutions
Přejít na: navigace, hledání
groups: lcs (ro) ; lcseditor ; partner ; translator (ro) ; customer (ro) ; anonymous (ro) ;


Obsah

Funkce @EA - Externí akce slouží k nadefinování uživatelských funkcí. Každou z funkcí nutno nadefinovat jako novou externí proceduru do databáze Helios Orange.

Pouze pro správce Helios Orange! Nutná znalost jazyka T-SQL a struktur databází.

Funkce Název funkce Formální zápis Popis funkce
@EA

Externí AKCE

@EA* ( Parametr 1[, Parametr 2 ... [, Parametr 9] ... ] ) Výsledek spočítaný vlastní nadefinovanou funkcí - externí procedurou. Funkce může mít 1 až 9 parametrů.
Upozornění V názvu funkce bude místo znaku * libovolné jedno písmeno nebo jedno číslo. Program nerozlišuje velká a malá písmena. Tímto písmenem nebo číslem je nutno doplnit název externí procedury, které je povinné ep_FIAB_Dokum_*. Funkce může mít jeden až devět parametrů.

Například pro funkci @EA1 je nutno založit externí proceduru ep_FIAB_Dokum_1, pro funkci @EAX externí proceduru ep_FIAB_Dokum_X.

Parametry funkce @EA - Externí akce

Parametr funkce Popis
Parametr 1 Libovolný parametr - textový údaj - povinný údaj
Parametr 2 Libovolný parametr - textový údaj - nepovinný údaj
Parametr 3 Libovolný parametr - textový údaj - nepovinný údaj
Parametr 4 Libovolný parametr - textový údaj - nepovinný údaj
Parametr 5 Libovolný parametr - textový údaj - nepovinný údaj
Parametr 6 Libovolný parametr - textový údaj - nepovinný údaj
Parametr 7 Libovolný parametr - textový údaj - nepovinný údaj
Parametr 8 Libovolný parametr - textový údaj - nepovinný údaj
Parametr 9 Libovolný parametr - textový údaj - nepovinný údaj

Popis externí akce - formální popis definice externí akce

CREATE PROCEDURE dbo.ep_FIAB_Dokum_* 
@ParamT1 VARCHAR(255),
@ParamT2 VARCHAR(255),
@ParamT3 VARCHAR(255),
@ParamT4 VARCHAR(255),
@ParamT5 VARCHAR(255),
@ParamT6 VARCHAR(255),
@ParamT7 VARCHAR(255),
@ParamT8 VARCHAR(255),
@ParamT9 VARCHAR(255),
@Sloupec VARCHAR(2),
@IdFIABDefiniceTab INT,
@Hodnota VARCHAR(255) OUT,
@Zao INT OUT,
@Format TINYINT OUT
AS
 
--Vlastní výkonná část externí procedury. Musí obsahovat '''SET @Hodnota =''' Výraz ...
 
SET @Format = ... --není povinné
SET @Zao = ... --není povinné

Prvních 16 řádků externí procedury jsou povinné údaje pro definici externí akce pro použití funkcí @EA. Všechny uvedené parametry jsou povinné, i když je pro vlastní výpočet nepoužijete.

Parametry externí akce dbo.ep_FIAB_Dokum_*

@ParamT1 VARCHAR(255) - Parametr 1 funkce @EA*

@ParamT2 VARCHAR(255) - Parametr 2 funkce @EA* (musí být uveden vždy, i když pro výpočet není použit)

@ParamT3 VARCHAR(255) - Parametr 3 funkce @EA* (musí být uveden vždy, i když pro výpočet není použit)

@ParamT4 VARCHAR(255) - Parametr 4 funkce @EA* (musí být uveden vždy, i když pro výpočet není použit)

@ParamT5 VARCHAR(255) - Parametr 5 funkce @EA* (musí být uveden vždy, i když pro výpočet není použit)

@ParamT6 VARCHAR(255) - Parametr 6 funkce @EA* (musí být uveden vždy, i když pro výpočet není použit)

@ParamT7 VARCHAR(255) - Parametr 7 funkce @EA* (musí být uveden vždy, i když pro výpočet není použit)

@ParamT8 VARCHAR(255) - Parametr 8 funkce @EA* (musí být uveden vždy, i když pro výpočet není použit)

@ParamT9 VARCHAR(255) - Parametr 9 funkce @EA* (musí být uveden vždy, i když pro výpočet není použit)

@Sloupec VARCHAR(2) - Číslo sloupce, ve kterém se nachází počítaná funkce

@IdFIABDefiniceTab INT - Systémové číslo řádku definice tabulky - pomocí něj lze zjistit řádek, odstavec, dokument, přiřazený výkaz apod.

@Hodnota VARCHAR(255) OUT - výstupní parametr pro vypočtenou hodnotu, která se má zobrazit v tabulce dokumentu

@Zao INT OUT - výstupní parametr pro zaokrouhlení

@Format TINYINT OUT - výstupní parametr pro formát

Ve výkonné části externí procedury je nutno ze vstupních parametrů vypočítat výstupní parametr @Hodnota. Pozor, tento výstupní parametr je vždy textového formátu. V případě výstupu čísel je nutno konvertovat číslo do textového formátu. Obdobně v případu datumu je nutno konvertovat datum do textového formátu - 'RRRRMMYY' - např. 6.4.2008 na '20080406'

SET @Format = ... Nastavuje se formát výstupu. Nepovinný údaj. Pokud neuvedete, bude nastaven formát prostého textu.

  • Pro textový údaj SET @Format = 0 (nemusí být uvedeno)
  • Pro číselný údaj SET @Format = 1
  • Pro údaj datum SET @Format = 2
  • SET @Zao = ... Nastavuje se počet desetinných míst v případě číselného údaje. Nepovinný údaj. Např. SET @Zao = 2 nastaví na číselný formát na dvě desetinná místa. Pokud neuvedete nebo bude SET @Zao = 0, bude nastaveno na číselný formát bez desetinných míst - na celé číslo.
Upozornění U textového formátu nutno přihlédnout k tomu, že bude tištěn v dokumentu v tabulce a je nutno pečlivě zvážit maximální možnou délku vraceného textu. Doporučujeme nastavení maximální možné délky textu vyzkoušet. Maximální možnou délku vraceného textu nutno ošetřit v externí proceduře.
Upozornění Použití externích akcí je podmíněno dobrou znalostí jazyka T-SQL a struktur databází, zejména databáze Helios Orange. Program nehlídá správnost definice externích akcí ep_FIAB_Dokum_*

Příklad funkce @EA - Externí akce

Příklad Příklad vzorce


Jako vzorový případ uvedeme jednoduchý výpočet sumy částky celkem po zaokrouhlení zaplacených vydaných faktur a dobropisů v Helios Orange pro zakázky začínající na - viz @ParamT1 - parametr 1 funkce - a s datumem pořízení v roce @ParamT2 - parametr 2 funkce. Další parametry funkce se nepoužijí.

Nutno založit v databázi Helios Orange externí proceduru (viz Nástroje přizpůsobení, Externí akce - nastavit neveřejná - nebo založit přímo SQL příkazem):

CREATE PROCEDURE dbo.ep_FIAB_Dokum_1 
@ParamT1 VARCHAR(255),
@ParamT2 VARCHAR(255),
@ParamT3 VARCHAR(255),
@ParamT4 VARCHAR(255),
@ParamT5 VARCHAR(255),
@ParamT6 VARCHAR(255),
@ParamT7 VARCHAR(255),
@ParamT8 VARCHAR(255),
@ParamT9 VARCHAR(255),
@Sloupec VARCHAR(2),
@IdFIABDefiniceTab INT,
@Hodnota VARCHAR(255) OUT,
@Zao INT OUT,
@Format TINYINT OUT
AS
SET @Hodnota = (SELECT SUM(SumaKcPoZao) FROM TabDokladyZbozi
WHERE ((TabDokladyZbozi.IDSklad IS NULL)
AND ((TabDokladyZbozi.DruhPohybuZbo = 13) OR (TabDokladyZbozi.DruhPohybuZbo = 14)))
AND ((TabDokladyZbozi.CisloZakazky LIKE (@ParamT1+'%'))
AND (TabDokladyZbozi.DatPorizeni_Y = CONVERT(INT, @ParamT2))
AND (((CASE WHEN (TabDokladyZbozi.DruhPohybuZbo = 14 OR TabDokladyZbozi.DruhPohybuZbo = 19)
THEN -1 ELSE 1 END) * (CASE WHEN ((TabDokladyZbozi.DruhPohybuZbo = 19 OR TabDokladyZbozi.DruhPohybuZbo = 18))
THEN (TabDokladyZbozi.SumaVal + TabDokladyZbozi.ZadanaCastkaZaoVal)
ELSE (ROUND((TabDokladyZbozi.SumaVal + 0.000001), TabDokladyZbozi.ZaokrouhleniFakVal)) END
- (SELECT ISNULL(SUM(TabUhrady.CastkaPoBance), 0) FROM TabUhrady
WHERE TabUhrady.IDFak = TabDokladyZbozi.ID
AND TabUhrady.VPriprave = 0))) = 0)))
SET @Format = 1
SET @Zao = 2

Ve vlastních vzorcích definice použijete funkci @EA1. V uvedeném příkladu se například pro vzorec @EA1(Z20, 2015) vypočte hodnota sumy částky celkem po zaokrouhlení ze všech zaplacených vydaných faktur a dobropisů pro zakázky začínající na Z20 s datumem pořízení v roce 2015. Výsledek bude uveden ve formátu čísla zaokrouhleného na 2 desetinná místa, např. 123 456,50.


Zpět na popis funkcí

Osobní nástroje
Jmenné prostory
Varianty
Akce
Navigace
dokumentace orange
dokumentace easy
společné návody a tipy
interní dokumentace
Nástroje
další nástroje
Tisk/export