Generátor sestav
Menu: Výpočty/Generátor sestav
Modul generátor sestav je určen pro zpracování libovolných sestav, které uživatel potřebuje ze skladového systému zjistit. Pro vytváření nových sestav je potřebné znát mnoho věcí z oblasti programování, logiky a zpracování relačních databází.
Proto je nutné konzultovat vytváření sestav s programátory a běžní uživatelé by se měli omezit pouze na úpravu výběrové podmínky a na spuštění vytváření sestavy. Přesto je modul Generátor sestav velmi důležitý, protože umožňuje během pár minut vytvořit značně složité sestavy podle momentálních potřeb uživatele.
Všechny sestavy je možné exportovat do formátu RTF ( jedná se o formát, který lze číst pomocí MS Word, MS Word Viewer, WordPad, Write, Open Office...), s možností rovnou otevřít vyexportovaný dokument. V generátoru sestav existuje podpora přímého exportu do souborů ve formátu MS Excel (tabulky XLS). Soubory jsou čitelné i v programu Open Office.
Obsah
Spuštění vytvoření sestavy
Výrazy sestavy
- Vyberte z nabízeného seznamu skupin sestav skupinu, ve které se nachází vámi požadovaná sestava a stiskněte Enter
- Po zvolení skupiny sestav program nabídne všechny sestavy ze zvolené skupiny. Vyberte si tu, jež vás zajímá.
- Vyberte z nabízeného seznamu skupin sestav skupinu, ve které se nachází vámi požadovaná sestava a stiskněte Enter
- Výběrovou podmínku lze měnit v rámci opravy definice sestavy (klávesa F2) po stisknutí F6 na údaji "Výběrová podmínka"
nebo přímo v textu výrazu pro výběrovou podmínku.
Tlačítka sestavy
Omezení dle indexu
Texty a proměnné
Další nastavení
Přepínač: Generovat databázi - možnosti:
Typ databáze | Popis |
GSE (MIS) | generuje speciální databázi pro manažerský informační systém |
DBF, CSV, CSV - EXCEL, SYLK - EXCEL, EXCEL XLS |
generátor sestav vygeneruje sestavu ve zvoleném formátu |
QR2 | |
XML, HTML | |
DEF soubor | kombinuje se zde výpočet databáze s možností formátování sestavy pomocí DEF souboru. Program nejdříve připraví interní paměťovou tabulku s daty vypočítanými dle definice sestavy v generátoru sestav a následně se spustí vygenerování výsledné sestavy za pomocí sekce z DEF souboru (např. ze SKLAD-01.DEF). Využít to lze pro generování složitých textových sestav nebo HTML souborů. Sekce v DEF souboru se musí jmenovat takto: |
Mezisoučet
Výpočet sestavy se spustí stisknutím Enter na požadované sestavě (Shift + Enter umožní volbu typu sestavy např. text. sest., Excel, SLK atd.). Vzhledem k tomu, že program může zpracovávat rozsáhlé databáze, může výpočet trvat dlouhou dobu.
Při vytváření sestav je potřeba znát některé důležité vztahy v databázích. Mezi nejsložitější patří způsob vyhodnocování nákupních cen a s tím související způsob vyhodnocování zisku (nebo lépe řečeno marže z prodeje). Připomínáme, že ke každé operaci, která není nákupní, existuje tzv. nákupní operace. Tuto nákupní operaci program vyhledá při evidování dokladu. Cena v nákupní operaci určuje tzv. nákupní cenu operace, která se v globále za více operací označuje jako prodej v NC (spotřeba).
Schéma vyhodnocování nákupní ceny za jednu operaci
NÁKUPNÍ CENA | ||
Operace je nákupní | Pokud operace je příjmová | Pokud operace je dodací (dobropis) |
Operace.Cena | Operace.NakupniCena | |
Operace není nákupní tzn. exist. odpovídající nákupní operace (platí, pokud se nepoužívá prodej do mínusu) | Pokud nákupní operace je příjmová | Pokud nákupní operace je dodací |
NakupniOperace.Cena | NakupniOperace.NakupniCena |
V jazyku generátoru sestav by příslušná položka záhlaví vyjadřující nákupní cenu mohla vypadat takto :
if ( Nakupni, if ( Prijem, Cena, NakupniCena), if ( NAKUP.Prijem, NAKUP.Cena, NAKUP.NakupniCena)
Výraz pro vyhodnocení hodnoty nákupní ceny za prodejní operace (účty/služby mají nulovou hodnotu):
if(TypKarty=0, 0, if(Nakupni, -NakupniCen, if(NAKUP.Autokod=0, KARTAZAS.NakupCena, if(NAKUP.Prijem, NAKUP.Cena, NAKUP.NakupniCen)))*abs(Pocet))
Relační výraz KARTZAS.NakupCena se použije v případě, že k prodejní operaci není definována nákupní operace (obvykle to může vzniknout při povoleném prodeji do mínusu nebo ve skladech s řízeným procesem vyskladňování).
Výraz pro vyhodnocení počtu prodaných měrných jednotek za prodejní operace mimo účty/služby:
if(Nakupni,-1,1)*abs(Pocet)
Výraz pro vyhodnocení hodnoty prodejní ceny za prodejní operace mimo účty/služby:
if(Nakupni,-1,1)*abs(Pocet)*Cena
nebo
if(TYPDOKLA.Dobropis,-1,1)*Pocet*Cena
(tato varianta funguje i pro účty a je shodná i pro vyhodnocení hodnoty příjmových operací)
Poznámka |
---|
V uvedeném příkladě by měl být soubor operací zaveden jako hlavní soubor a zároveň by měl být soubor operací jako relační soubor s alias NAKUP s použitím interního klíče 3 a klíčovou položkou Nakup. Alias KARTAZAS je definován pro relační soubor SKLADZAS.BTR s použitím interního klíče 1 a klíčovou položkou Sklad;DelRight(Kod) |
U účtů není nákupní cena sledována (NC=0), proto by účty neměly být dle výše uvedeného schématu vypočítávány |
Schéma vyhodnocování zisku za jednu operaci :
ZISK Z OPERACE | ||
Operace je nákupní | Pokud operace je příjmová | Pokud operace je dodací (dobropis) |
- | Operace.NakupniCena-Operace.Cena | |
Operace není nákupní tzn. exist. odpovídající nákupní operace | Pokud nákupní operace je příjmová nebo operace je příjmová(vrubopis) | Pokud nákupní operace je dodací |
Operace.Cena-NakupniOperace.Cena | Operace.Cena-NakupniOperace.NakupniCena |
V jazyku generátoru sestav by příslušná položka záhlaví vyjadřující zisk za jednu operaci mohla vypadat takto :
if ( Nakupni, if ( Prijem, 0, NakupniCena - Cena ), if ( NAKUP.Prijem OR Prijem, Cena - NAKUP.Cena, Cena - NAKUP.NakupniCena)
Poznámka | ||||
---|---|---|---|---|
V uvedeném příkladě by měl být soubor operací zaveden jako hlavní soubor a zároveň by měl být soubor operací jako relační soubor s alias NAKUP s použitím interního klíče 3 a klíčovou položkou Nakup. | ||||
U účtů není nákupní cena sledována (NC=0)
Zisk u účtů by tedy neměl být dle výše uvedeného schematu vypočítáván |
Poznámka | |
---|---|
V definici relace v generátoru sestav je možné použít neúplné definování klíčové hodnoty pro dohledání relačního záznamu (může chybět definice výrazů pro vyhodnocení koncových segmentů indexu) - v tomto případě se provede dohledání prvního záznamu vyhovující počáteční části klíče (využití pro zrychlení výpočtu např. při sestavách z dokladů v průvodkách). | |
Při definici segmentu klíče v relačních souborech a omezeních dle indexu není nutné pomocí funkce chr() převádět číselné hodnoty na jednoznakové textové klíčové hodnoty - konverze se provede automaticky (např. místo ...;chr(TypDokladu); ... lze použít jen ...;TypDokladu,...) |
Přenos sestav, poslední sestava
Z vybrané skupiny sestav určíme konkrétní sestavu pro přenos
Zde můžeme provést buď přenos/načtení sestavy (kl. Alt+F5) nebo vyvolat poslední vytvořenou sestavu (kl. F8).
Položka | Popis |
Uložit sestavu | Uloží sestavu do přenosového souboru. V jednom přenosovém souboru může být i více sestav (musí mít různé číslo sestavy nebo název) |
Načíst sestavu | Umožní načtení sestavy z přenosového souboru. Je možné určit číslo sestavy, do které se má provést import. Sestava s daným číslem nesmí v dané skupině sestav existovat. Import musí být prováděn do skupiny sestav, která má stejný hlavní soubor jako importovaná sestava. Pokud se hlavní soubor liší, tak se nabídne import do nové skupiny sestav (číslo je určeno automaticky). |
Načíst sestavu do nové skupiny | Sestava je naimportována do nové skupiny sestav. |
2. Vyvolání poslední sestavy
Položka | Popis |
O.K. | návrat zpět |
Otevřít | zobrazí poslední sestavu nebo databázi |
Poslat emailem | sestava/databáze je předána aktuálnímu poštovnímu programu. Zde vyplníme emailové adresy, případně upravíme předmět nebo text emailu a odešleme. |
Kódy a přepínače
V generátoru sestav lze pro exporty do CSV definovat globální výraz CSV_HDRCP, který určuje kódovou stránku pro hlavičku CSV souboru (např. CSV_HDRCP=4 ).
Kód | Popis |
0 | ASCII |
1 | Kamenický |
2 | ASCII2 |
3 | LATIN2 |
4 | Windows |
Výchozí hodnotou je kód ASCII. Kódovou stránku v ostatních řádcích CSV souboru lze měnit pomocí funkce conv(s,cp) formou výrazů v definici sestavy.
V generátoru sestav existuje funkce FileExists(f), která vrací hodnotu true, pokud specifikovaný soubor existuje. Vhodné využití této funkce je např. pro tisky ceníků s obrázky pro testování existence souboru s obrázkem.
Přepínač | Popis |
Netisknout záhlaví sestav | umožňuje vytvářet textové databáze s pevnou strukturou věty |
Postupné vytváření indexů | pokud je vypnuto, pak se indexy vytvářejí až na závěr přípravy indexových souborů, což urychlí vytváření sestav se značným objemem vyhledaných dat |
Povolit používání rozšíř. operací | povolí tzv. extended operace při vytváření hlavního indexového souboru (InsertExtended) |
Povolit automatickou předalokaci dat | pokud je přepínač zapnut a počet stránek není určen, pak je počet předalokovaných stránek dočasných tabulek určen automaticky (default nastavení). Přepínač je vhodné vypnout hlavně u sestav, které zpracovávají rozsáhlé databáze, ale výsledkem je malé množství vyfiltrovaných záznamů. |
Technická poznámka |
Pro export do CSV lze definovat globální výraz CSV_SEPAR, který určuje oddělovač znaků pro CSV soubor (např. CSV_Separ="/") |
V generátoru sestav zaveden nový typ proměnné D umožňující vstup datumu s výběrem datumu z kalendáře. Samotné hodnoty proměnné tohoto typu jsou ukládány v textové podobě (čili je např. nutná konverze pomocí funkce DateValue(promenna) , resp. DV(promenna). |
Globální proměnné generátoru sestav
Proměnná | Popis |
INI_Jmeno | Jméno firmy z inicializačních hodnot |
INI_Jmeno2 | Jméno 2 firmy z inicializačních hodnot |
INI_Ulice | Ulice firmy z inicializačních hodnot |
INI_Mesto | Město firmy z inicializačních hodnot |
INI_PSC | PSČ firmy z inicializačních hodnot |
INI_ICO | IČO firmy z inicializačních hodnot |
INI_DIC | DIČ firmy z inicializačních hodnot |
INI_Ucet | Bankovní účet firmy z inicializačních hodnot |
KFG_Datum | aktuální datum |
G_Vystavil | Identifikace aktuálně přihlášeného uživatele (max. 10 znaků) |
INI_Sklad | Označení skladu, kde je uživatel aktuálně přihlášen (max. 25 znaků) |
INI_KodSkl | Číslo skladu, kde je uživatel aktuálně přihlášen |
KFG_Datum0 | datum začátku aktuálního roku |
KFG_Datum1 | datum začátku aktuálního měsíce |
DBF_CP | umožňuje definovat kódovou stránku, ve které se má tabulka vytvořit (0 .. ASCII, 1 .. Kamenický, 2 .. ASCII2, 3 .. LATIN2, 4 .. Windows) |
Použití těchto proměnných je stejné jako u jiných ručně definovaných proměnných v sestavě. Redefinováním proměnné v Texty a proměnné lze změnit popisky.