Generátor sestav: Porovnání verzí

Z K.A.P.
Skočit na navigaciSkočit na vyhledávání
 
(Není zobrazeno 90 mezilehlých verzí od 2 dalších uživatelů.)
Řádek 1: Řádek 1:
 +
Menu: ''Výpočty/Generátor sestav''<br/>
 +
 
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í.<br/>
 
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í.<br/>
  
 
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.<br/>
 
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.<br/>
  
<ins>Spuštění vytvoření sestavy :</ins>
+
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.
# Vyberte z nabízeného seznamu skupin sestav skupinu, ve které se nachází vámi požadovaná sestava a stiskněte '''Enter'''<br/>
+
 
# Po zvolení skupiny sestav program nabídne všechny sestavy ze zvolené skupiny. Vyberte si tu, jež vás zajímá. 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. Výpočet sestavy se spustí stisknutím '''Enter''' na požadované sestavě. Vzhledem k tomu, že  program může zpracovávat rozsáhlé databáze, může výpočet trvat dlouhou dobu.
+
----
 +
==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'''<br/>
 +
:# Po zvolení skupiny sestav program nabídne všechny sestavy ze zvolené skupiny. Vyberte si tu, jež vás zajímá.<br/><br/>
 +
:[[Soubor:SestDefinice.PNG]]<br/><br/>
 +
: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" <br/><br/>
 +
:[[Soubor:VyberPodmSest.PNG]]<br/><br/>
 +
nebo přímo v textu výrazu pro výběrovou podmínku.<br/><br/>
 +
 
 +
===Tlačítka sestavy===
 +
 
 +
====Omezení dle indexu====
 +
 
 +
::[[Soubor:SestOmInd.PNG]]<br/><br/>
 +
 
 +
====Texty a proměnné====
 +
 
 +
::[[Soubor:SestTextProm.PNG]]<br/><br/>
 +
Při zadávání proměnných při výpočtu sestav v generátoru sestav se automaticky zvětšuje okno pro zadání proměnných, pokud je počet proměnných vyšší než 7
 +
 
 +
Typ proměnné '''D''' umožňuje 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).
 +
 
 +
V definici sestavy v generátoru sestav je možné definovat globální výraz '''QR2_Sort''', který určuje seznam polí z výsledné pracovní tabulky, podle kterých se má pracovní tabulka setřídit. Je tak možné připravit například sestavy tříděné dle výsledných čísel (např. podle celkového obratu nebo dle dosaženého procenta zisku). Pole musí být oddělena středníkem. Třídění se uplatňuje u QR2 sestav, sestav zpracovávaných v generátoru sestav přes DEF soubor a datových kostek.
 +
Např. QR2_Sort="Zasoba;Nazev"
 +
 
 +
====Další nastavení====
 +
::[[Soubor:SestPrepinac.PNG]]<br/><br/>
 +
 
 +
<u>Přepínač: ''Generovat databázi'' - možnosti:</u><br/>
 +
 
 +
{| border=1 style="background:#ddddff; color:black" class = "wikitable"
 +
|-
 +
|'''Typ databáze''' || '''Popis'''
 +
|-valign=top
 +
|width=120|GSE (MIS) || generuje speciální databázi pro manažerský informační systém
 +
|-valign=top
 +
|DBF, CSV,<br/> CSV - EXCEL,<br/> SYLK - EXCEL,<br/> EXCEL XLS||generátor sestav vygeneruje sestavu ve zvoleném formátu
 +
|-valign=top
 +
|QR2||&nbsp;
 +
|-valign=top
 +
|XML, HTML||&nbsp;
 +
|-valign=top
 +
|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ů.<br/>
 +
Sekce v DEF souboru se musí jmenovat takto:<br/>
 +
[GS_x_y], kde x je číslo skupiny sestav a y číslo sestavy z gen.sestav.
 +
Pro každý řádek z vypočítané tabulky se tiskne mezisoučet .Mx definovaný v DEF souboru (x je úroveň mezisoučtu - pro detailní řádky je to .M9, pro celkové součty je to .M0). V definici sekce je možné používat výrazy využívajíci názvy polí z vypočítané paměťové tabulky (definice sloupců kl. '''F6''').<br/>
 +
Sekce může vypadat např. takto:<br/>
 +
[GS_10_1]<br/>
 +
Nadpis sestavy<br/>
 +
.M9Informace z řádku : #{using(Popis,10)+" "+Str(CHodnota,8,2)}<br/>
 +
.M1Informace z mezisoučtu 1<br/>
 +
.M1 - Celkem #{Str(CHodnota,8,2)}<br/>
 +
.KSKonec sestavy
 +
|}
 +
 
 +
====Mezisoučet====
 +
 
 +
[[Soubor:SestTlMezi.PNG]]
 +
 
 +
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).
 
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).
 +
----
  
<ins>Schéma vyhodnocování nákupní ceny za jednu operaci:</ins>
+
==Schéma vyhodnocování nákupní ceny za jednu operaci==
 +
<br/>
 
{| class="wikitable" border=2
 
{| class="wikitable" border=2
 
|-
 
|-
Řádek 21: Řádek 86:
 
|align =center |Operace.NakupniCena
 
|align =center |Operace.NakupniCena
 
|-
 
|-
|rowspan="2" align =center width=150 height =70|'''Operace není nákupní''' <tt> tzn. exist. odpovídající nákupní operace </tt>
+
|rowspan="2" align =center width=150 height =70|'''Operace není nákupní''' <tt> tzn. exist. odpovídající nákupní operace (platí, pokud se nepoužívá prodej do mínusu)</tt>
 
|align =center |<tt>Pokud nákupní operace je příjmová</tt>
 
|align =center |<tt>Pokud nákupní operace je příjmová</tt>
 
|align =center |<tt>Pokud nákupní operace je dodací</tt>
 
|align =center |<tt>Pokud nákupní operace je dodací</tt>
Řádek 31: Řádek 96:
 
V jazyku generátoru sestav by příslušná položka záhlaví vyjadřující nákupní cenu mohla vypadat takto :<br/>
 
V jazyku generátoru sestav by příslušná položka záhlaví vyjadřující nákupní cenu mohla vypadat takto :<br/>
 
'''if ( Nakupni, if ( Prijem, Cena, NakupniCena), if ( NAKUP.Prijem, NAKUP.Cena, NAKUP.NakupniCena)'''
 
'''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):<br/>
 +
'''if(TypKarty=0, 0, if(Nakupni, -NakupniCen, if(NAKUP.Autokod=0, KARTAZAS.NakupCena, if(NAKUP.Prijem, NAKUP.Cena, NAKUP.NakupniCen)))*abs(Pocet))'''<br/>
 +
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í).<br/>
 +
 +
Výraz pro vyhodnocení počtu prodaných měrných jednotek za prodejní operace mimo účty/služby:<br/>
 +
'''if(Nakupni,-1,1)*abs(Pocet)'''
 +
 +
Výraz pro vyhodnocení hodnoty prodejní ceny za prodejní operace mimo účty/služby:<br/>
 +
'''if(Nakupni,-1,1)*abs(Pocet)*Cena'''
 +
 +
nebo<br/>
 +
 +
'''if(TYPDOKLA.Dobropis,-1,1)*Pocet*Cena'''<br/>
 +
(tato varianta funguje i pro účty a je shodná i pro vyhodnocení hodnoty příjmových operací)
  
 
{| class="wikitable" border=1
 
{| class="wikitable" border=1
Řádek 36: Řádek 116:
 
! bgcolor="#FFE68C" align =left |Poznámka
 
! bgcolor="#FFE68C" align =left |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. <br/>
+
|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)<br/>
 
|-
 
|-
 
|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
 
|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 :
 
Schéma vyhodnocování zisku za jednu operaci :
Řádek 55: Řádek 134:
 
|-
 
|-
 
|rowspan="2" align =center width=150 height=70|''Operace není nákupní'' <tt> tzn. exist. odpovídající nákupní operace </tt>
 
|rowspan="2" align =center width=150 height=70|''Operace není nákupní'' <tt> tzn. exist. odpovídající nákupní operace </tt>
|align =center |<tt>Pokud nákupní operace je příjmová nebo operace je příjmová(vrubopis)</tt>
+
|align =center width=300|<tt>Pokud nákupní operace je příjmová nebo operace je příjmová(vrubopis)</tt>
 
|align =center |<tt>Pokud nákupní operace je dodací</tt>
 
|align =center |<tt>Pokud nákupní operace je dodací</tt>
 
|-
 
|-
Řádek 74: Řádek 153:
 
{| class="wikitable" border=0
 
{| class="wikitable" border=0
 
|-
 
|-
| proto u účtů v dodacích dokladech platí &nbsp;&nbsp;&nbsp;|| Zisk := Operace.Cena,  
+
| proto u účtů v dodacích dokladech platí &nbsp;&nbsp;&nbsp;|| Zisk := Operace.Cena * if(TYPDOKLA.Dobropis,-1,1) * Pocet,  
 
|-
 
|-
| zatímco u příjmových dokladů platí &nbsp;&nbsp;&nbsp;||Zisk := -Operace.Cena.  
+
| zatímco u příjmových dokladů platí &nbsp;&nbsp;&nbsp;||Zisk := -Operace.Cena * if(TYPDOKLA.Dobropis,-1,1) * Pocet.  
 
|}
 
|}
 
Zisk u účtů by tedy neměl být dle výše uvedeného schematu vypočítáván
 
Zisk u účtů by tedy neměl být dle výše uvedeného schematu vypočítáván
 
|}
 
|}
 +
 +
{| class="wikitable" border=1
 +
|-
 +
! bgcolor="#FFE68C" align =left |Poznámka
 +
|-
 +
|colspan=2| 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).
 +
|-
 +
|colspan=2| 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==
 +
Skupina sestav:
 +
<br/>[[Soubor:SkupinySest1.PNG]]<br/>
 +
 +
Z vybrané skupiny sestav určíme konkrétní sestavu pro přenos
 +
<br/>[[Soubor:SkupinyVybSestavy.PNG]]<br/>
 +
 +
Zde můžeme provést buď přenos/načtení sestavy (kl. '''Alt+F5''') nebo vyvolat poslední vytvořenou sestavu (kl. '''F8''').
 +
 +
Při přenosu sestavy v generátoru sestav lze při importu pomocí přepínače určit, že se nemají načítat relační soubory. To je vhodné v případě, že importujeme sestavu z databáze, kde je množství dalších relací, které nová sestava nevyužívá a do definice relací se tak přenesou i relace, které jsou v dané skupině sestav zbytečné.
 +
 +
1. Přenos sestavy
 +
<br/>[[Soubor:SkupinySestavPrenos.PNG]]<br/>
 +
 +
{| border=1 style="background:#ddddff; color:black" class = "wikitable"
 +
|-
 +
|'''Položka''' || '''Popis'''
 +
|-valign=top
 +
|''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)
 +
|-valign=top
 +
|''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).
 +
|-valign=top
 +
|''Načíst sestavu do nové skupiny'' || Sestava je naimportována do nové skupiny sestav.
 +
|}
 +
 +
2. Vyvolání poslední sestavy
 +
 +
{| border=1 style="background:#ddddff; color:black" class = "wikitable"
 +
|-valign=top
 +
|'''Položka''' || '''Popis'''
 +
|-valign=top
 +
| ''O.K.''||návrat zpět
 +
|-valign=top
 +
| ''Otevřít''||zobrazí poslední sestavu nebo databázi
 +
|-valign=top
 +
| ''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 ).
 +
 +
{| border=1 style="background:#ddddff; color:black" class = "wikitable"
 +
|-
 +
|'''Kód''' || '''Popis'''
 +
|-
 +
|width=75|0 ||width=150| ASCII
 +
|-
 +
|1 || Kamenický
 +
|-
 +
|2 || ASCII2
 +
|-
 +
|3 || LATIN2
 +
|-
 +
|4 || Windows
 +
|}
 +
<br/>
 +
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.<br/>
 +
 +
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.
 +
 +
<br/>
 +
 +
{| border=1 style="background:#ddddff; color:black" class = "wikitable"
 +
|-
 +
|'''Přepínač''' || '''Popis'''
 +
|-valign=top
 +
|''Netisknout záhlaví sestav''||umožňuje vytvářet textové databáze s pevnou strukturou věty
 +
|-valign=top
 +
|''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
 +
|-valign=top
 +
|''Povolit používání rozšíř. operací''|| povolí tzv. extended operace při vytváření hlavního indexového souboru (InsertExtended)
 +
|-valign=top
 +
|''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ů.
 +
|}
 +
----
 +
{|border=1 class ="wikitable"
 +
|-
 +
|bgcolor=#00FF00| '''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)''.
 +
|-
 +
|V přehledu proměnných zobrazovaných v záhlaví sestavy (resp. XLS nebu SLK souboru) vytvářených z generátoru sestav se u výčtových proměnných namísto číselné hodnoty vypisuje textová hodnota odpovídající vybrané položce z definice proměnné. Při vyhodnocení sestavy jsou ale stále výčtové proměnné vyhodnocovány jako číselné hodnoty.
 +
|-
 +
|Prodloužení maximální šířky výsledné sestavy v generátoru sestav. Nyní je možné vytvářet sestavy širší než 254 znaků. Omezení pro vyhodnocení jednotlivých výrazů (včetně např. výrazů pro mezisoučty) zůstalo ale na původní délce s omezením na 255 znaků. Čili prodloužení lze využít hlavně na číselné součtované hodnoty nebo pro položkové sestavy.
 +
|}
 +
 +
----
 +
 +
==Globální proměnné generátoru sestav==
 +
 +
{| border=1 style="background:#ddddff; color:black" class = "wikitable"
 +
|-
 +
|'''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.
 +
 +
----
 +
 +
==Výstupního formátu v generátoru sestav: Datová kostka ==
 +
 +
Tento výstupní formát umožňuje zobrazovat data formou kontingenční tabulky (datové kostky). Pro výstup do datové kostky jsou vhodné především sestavy s jednou úrovní mezisoučtů (tj. buď položkové sestavy bez mezisoučtů nebo mezisoučtové sestavy s jedním mezisoučtem).<br/>
 +
Při prvním spuštění datové kostky se zobrazí obvykle prázdná datová kostka a je třeba určit rozvržení datové kostky přetažením údajů ze seznamu polí do příslušné dimenze(osy X, Y, hodnoty). Doporučujeme následně uložit schema datové kostky s výchozím názvem dle jména souboru sestavy (soubor se schématem má příponu .mds). Příště se tabulka otevře s uloženým nastavením.
 +
 +
==Výstupního formátu v generátoru sestav "PDF (QR2)".==
 +
Pro definici designu sestavy se použije QR2 formulář. Pokud je QR2 formulář již připraven, tak se po spuštění výpočtu sestavy rovnou generuje PDF dokument. Pro editaci QR2 formuláře spusťte sestavu pomocí '''Shift+Enter''' a v nabídce výstupních formátů vyberte QR2.
 +
----
 +
Pokud pro výsledný dokument není ve Windows nastavena funkční asociace pro otevření souboru, tak se při použití volby Otevřít spustí Průzkumník Windows, který by měl mít jako aktivní soubor právě vytvořený dokument. Soubor je tak možné snadno zkopírovat nebo ho zkusit otevřít za pomocí jiných programů.

Aktuální verze z 22. 8. 2022, 14:00

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.


Spuštění vytvoření sestavy

Výrazy sestavy

  1. Vyberte z nabízeného seznamu skupin sestav skupinu, ve které se nachází vámi požadovaná sestava a stiskněte Enter
  2. Po zvolení skupiny sestav program nabídne všechny sestavy ze zvolené skupiny. Vyberte si tu, jež vás zajímá.

SestDefinice.PNG

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"

VyberPodmSest.PNG

nebo přímo v textu výrazu pro výběrovou podmínku.

Tlačítka sestavy

Omezení dle indexu

SestOmInd.PNG

Texty a proměnné

SestTextProm.PNG

Při zadávání proměnných při výpočtu sestav v generátoru sestav se automaticky zvětšuje okno pro zadání proměnných, pokud je počet proměnných vyšší než 7

Typ proměnné D umožňuje 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).

V definici sestavy v generátoru sestav je možné definovat globální výraz QR2_Sort, který určuje seznam polí z výsledné pracovní tabulky, podle kterých se má pracovní tabulka setřídit. Je tak možné připravit například sestavy tříděné dle výsledných čísel (např. podle celkového obratu nebo dle dosaženého procenta zisku). Pole musí být oddělena středníkem. Třídění se uplatňuje u QR2 sestav, sestav zpracovávaných v generátoru sestav přes DEF soubor a datových kostek. Např. QR2_Sort="Zasoba;Nazev"

Další nastavení

SestPrepinac.PNG

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:
[GS_x_y], kde x je číslo skupiny sestav a y číslo sestavy z gen.sestav. Pro každý řádek z vypočítané tabulky se tiskne mezisoučet .Mx definovaný v DEF souboru (x je úroveň mezisoučtu - pro detailní řádky je to .M9, pro celkové součty je to .M0). V definici sekce je možné používat výrazy využívajíci názvy polí z vypočítané paměťové tabulky (definice sloupců kl. F6).
Sekce může vypadat např. takto:
[GS_10_1]
Nadpis sestavy
.M9Informace z řádku : #{using(Popis,10)+" "+Str(CHodnota,8,2)}
.M1Informace z mezisoučtu 1
.M1 - Celkem #{Str(CHodnota,8,2)}
.KSKonec sestavy

Mezisoučet

SestTlMezi.PNG

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)
proto u účtů v dodacích dokladech platí     Zisk := Operace.Cena * if(TYPDOKLA.Dobropis,-1,1) * Pocet,
zatímco u příjmových dokladů platí     Zisk := -Operace.Cena * if(TYPDOKLA.Dobropis,-1,1) * Pocet.

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

Skupina sestav:
SkupinySest1.PNG

Z vybrané skupiny sestav určíme konkrétní sestavu pro přenos
SkupinyVybSestavy.PNG

Zde můžeme provést buď přenos/načtení sestavy (kl. Alt+F5) nebo vyvolat poslední vytvořenou sestavu (kl. F8).

Při přenosu sestavy v generátoru sestav lze při importu pomocí přepínače určit, že se nemají načítat relační soubory. To je vhodné v případě, že importujeme sestavu z databáze, kde je množství dalších relací, které nová sestava nevyužívá a do definice relací se tak přenesou i relace, které jsou v dané skupině sestav zbytečné.

1. Přenos sestavy
SkupinySestavPrenos.PNG

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).
V přehledu proměnných zobrazovaných v záhlaví sestavy (resp. XLS nebu SLK souboru) vytvářených z generátoru sestav se u výčtových proměnných namísto číselné hodnoty vypisuje textová hodnota odpovídající vybrané položce z definice proměnné. Při vyhodnocení sestavy jsou ale stále výčtové proměnné vyhodnocovány jako číselné hodnoty.
Prodloužení maximální šířky výsledné sestavy v generátoru sestav. Nyní je možné vytvářet sestavy širší než 254 znaků. Omezení pro vyhodnocení jednotlivých výrazů (včetně např. výrazů pro mezisoučty) zůstalo ale na původní délce s omezením na 255 znaků. Čili prodloužení lze využít hlavně na číselné součtované hodnoty nebo pro položkové sestavy.

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.


Výstupního formátu v generátoru sestav: Datová kostka

Tento výstupní formát umožňuje zobrazovat data formou kontingenční tabulky (datové kostky). Pro výstup do datové kostky jsou vhodné především sestavy s jednou úrovní mezisoučtů (tj. buď položkové sestavy bez mezisoučtů nebo mezisoučtové sestavy s jedním mezisoučtem).
Při prvním spuštění datové kostky se zobrazí obvykle prázdná datová kostka a je třeba určit rozvržení datové kostky přetažením údajů ze seznamu polí do příslušné dimenze(osy X, Y, hodnoty). Doporučujeme následně uložit schema datové kostky s výchozím názvem dle jména souboru sestavy (soubor se schématem má příponu .mds). Příště se tabulka otevře s uloženým nastavením.

Výstupního formátu v generátoru sestav "PDF (QR2)".

Pro definici designu sestavy se použije QR2 formulář. Pokud je QR2 formulář již připraven, tak se po spuštění výpočtu sestavy rovnou generuje PDF dokument. Pro editaci QR2 formuláře spusťte sestavu pomocí Shift+Enter a v nabídce výstupních formátů vyberte QR2.


Pokud pro výsledný dokument není ve Windows nastavena funkční asociace pro otevření souboru, tak se při použití volby Otevřít spustí Průzkumník Windows, který by měl mít jako aktivní soubor právě vytvořený dokument. Soubor je tak možné snadno zkopírovat nebo ho zkusit otevřít za pomocí jiných programů.