Pro tisk v Notia Business Server jsou připraveny tiskové sestavy, které jsou uživateli k dispozici v nabídce Sestavy formulářů modulů. Obsah nabídky lze upravovat. Zařazení nových sestav, změna organizace apod. se provádí v modulu Administrátor.
Sestavy lze před tiskem na tiskárnu zobrazit v náhledu (v závislosti na nastavení volby Sestavy - Náhled).
Kromě tisku lze informace v tištěné podobě získávat tiskem seznamu.
Pro rychlý opis údajů slouží tisk seznamu. Volba Tisk je obsažena v nabídce po klepnutí pravým tlačítkem myši na seznamu. Po jejím použití se na tiskárnu nebo do náhledu přenesou všechny záznamy v seznamu v rozsahu sloupců, které lze umístit na stránku formátu A4 na výšku nebo na šířku. Obsah výstupu lze definovat v úvodním dialogu tisku:
Před tiskem sestavy formou šablony Wordu je nutné tuto šablonu nejprve připravit.
Pro určení kam a jaký text se má automaticky vložit, se používají pole. Ve Wordu musí být nastaveny (zaškrtnuty) v menu Nástroje - Možnosti - na záložce Zobrazení - Kódy polí.
Nástroj pro tisk do Wordu umí zpracovat tato pole: WR_QUERY, WR_OPTION, WR_DATA, WR_RTFDATA, WR_COMBO a WR_COMBO_CONTENTS. Jednotlivá pole jsou popsána níže. Všechno jsou to pole MACROBUTTON, jen místo textu MACROBUTTON mají odpovídající identifikátor WR_xxx.
Na konci popisu polí je uveden praktický příklad vzorové šablony.
Nejdůležitější věcí je určitě definice dotazu, který nám poskytne potřebná data. K tomu se používá právě pole WR_QUERY. Má následující syntaxi:
WR_QUERY Jmeno_Query: dotaz
Jmeno_Query je interní identifikátor dotazu, na který se mohou odkazovat pole WR_DATA a WR_RTFDATA, dotaz je SQL dotaz. Pozor, důležitá je dvojtečka za Jmeno_Query.
Příklad:
{WR_QUERY qrSestava: SELECT * FROM POHLEDAVKY where ID=:ID }
Na umístění pole WR_QUERY v dokumentu nezáleží, ale je vhodné jej dát na konec. Jednak, aby nepřekáželo, jednak, aby se vždy rychle našlo.
Pole WR_OPTION se používá k nastavení nějakého parametru sestavy. Syntaxe:
WR_OPTION Parametr=Hodnota
Parametr je jméno parametru a Hodnota je hodnota parametru.
V současné době má existují tyto „sestavou měnitelné“ parametry-
CONFIRM_NEXT_PAGE=1 aktivuje potvrzování každé vytištěné stránky.
CONFIRM_NEXT_PAGE=0 vytiskne celý dokument najednou.
Tento parametr je globální, takže jeho nastavení ovlivňuje chování celého dokumentu, implicitní hodnota je 0.
VALID_PAGES=x vytiskne x prvních stránek sestavy. Pokud se parametr VALID_PAGES nepoužije, vytisknou se všechny stránky.
Příklad: {WR_OPTION CONFIRM_NEXT_PAGE=1}
ALLOW_PAGE_SELECTION=1 povolí možnost výběru stránek pro tisk. TWordReport zobrazí okno se seznamem stránek a uživatel zaškrtnutím označit stránky, které chce vytisknout. V dialogu je navíc možné nastavit, kolik kopií se má tisknout.
ALLOW_PAGE_SELECTION=0 vytiskne všechny stránky (případně tolik stránek, kolik určuje parametr VALID_PAGES).
Tento parametr je globální, takže jeho nastavení ovlivňuje chování celého dokumentu – nezáleží na umístění v textu. Implicitní hodnota je 0.
Určuje, na kolik stránek se dokument smí "roztáhnout". Pokud je po automatickém vyplnění šablony počet stránek vyšší než PAGE_LIMIT, zobrazí se varování a uživatel bude mít možnost tisk zrušit.
Tento parametr je globální, takže jeho nastavení ovlivňuje chování celého dokumentu – nezáleží na umístění v textu. Implicitní hodnota je 0, což znamená bez omezení.
Toto pole je základním při tvorbě šablony sestavy. Na pozici pole WR_DATA se, buď vloží hodnota z DB, na kterou se pole odkazuje, nebo uživatelem zadaná hodnota zapsaná v rámci vstupních parametrů sestavy. Syntaxe těchto případů je následující:
(1) WR_DATA Jmeno_Query.Sloupec
(2) WR_DATA „Ručně zadávaný parametr“
(3) WR_DATA „Ručně zadávaný parametr s implicitní hodnotou<Implicitní hodnota“
(4) WR_DATA „Ručně zadávaný parametr s implicitní hodnotou z DB<Jmeno_Query.Sloupec“
Jmeno_Query.Sloupec určuje dotaz definovaný polem WR_QUERY a sloupec, ze kterého se mají vzít data. Implicitní hodnota může být libovolný text, použít se mohou také některé z těchto „maker“:
$DATE – vloží aktuální datum
$LDATE – vloží aktuální datum v dlouhém formátu
$DATETIME – vloží aktuální datum a čas
$TIME – vloží aktuální ... hádejte co?
Příklady:
(1) {WR_DATA qrSestava.DOKL_KOD}......vrátí do výsledného dokumentu kód dokladu
(2) {WR_DATA "Zvláštní poznámka"}......vrátí hodnotu parametru, na který se před zobrazením dokumentu zeptá
3) {WR_DATA "Datum sestavy<$DATE"}......vrátí hodnotu parametru, na který se před zobrazením dokumentu zeptá s předvyplněnou hodnotou
4) {WR_DATA "Datum vystavení faktury<qrSestava.VYSTAVENI"}......vrátí hodnotu parametru, na který se před zobrazením dokumentu zeptá s předvyplněnou hodnotou, kterou bere z databáze
Na pozici pole WR_RTFDATA se vloží formátovaný RTF text z pole typu BLOB:
WR_RTFDATA Jmeno_Query.Sloupec
Příklad:
{WR_RTFDATA qrSestava.TEXT}
Na pozici pole WR_COMBO bude vložena hodnota, kterou uživatel vybral z příslušného seznamu:
(1) WR_COMBO Jmeno_Seznamu „Popis“
nebo
(2) WR_COMBO Jmeno_Seznamu „Popis<Implicitní hodnota“
Jmeno_Seznamu je interní jméno seznamu, definovaného polem WR_COMBO_CONTENTS (viz níže), Popis je „user friendly“ jméno seznamu, které se zobrazí uživateli v okně pro zadání hodnot.
Příklady:
1) {WR_COMBO POHLAVI "Pohlaví"}
(2) {WR_COMBO POHLAVI2 "Pohlaví 2<Muž"}
Definuje seznam hodnot použitelný v poli WR_COMBO. Syntaxe:
(1) WR_COMBO_CONTENTS Jmeno_Seznamu: <hodnota1><hodnota2>...
nebo
(2) WR_COMBO_CONTENTS Jmeno_Seznamu: <popis1=hodnota1><popis2=hodnota2>...
nebo
(3) WR_COMBO_CONTENTS Jmeno_Seznamu: <popis1=hodnota1><hodnota2>...
Jmeno_Seznamu je interní jméno seznamu. Důležité je nezapomenout na dvojtečku za Jmeno_Seznamu.
Varianta 2 a 3 umožňuje, aby se uživateli zobrazovaly jiné hodnoty, než se potom vloží do dokumentu. Uživatel pak v comboboxu uvidí seznam popis1 až popisX, ale do dokumentu se vloží odpovídající hodnota1 až hodnotaX.
Příklady:
(1) WR_COMBO_CONTENTS POHLAVI: <Muž><Žena><Bezpohlavní><Neznámé pohlaví>
(2) WR_COMBO_CONTENTS POHLAVI2:
<Muž=Chlap>
<Žena=Dáma>
<Bezpohlavní=Ehm...>
<Neznámé pohlaví=Pohlaví se bohužel nepodařilo zjistit>
(3) WR_COMBO_CONTENTS POHLAVI3:
<Muž=Chlap>
<Žena=Dáma>
<Bezpohlavní>
<Neznámé pohlaví>
Vloží kompletní výsledek dotazu (sloupce oddělené tabulátory), takže je možné jej použít pro vytváření tabulek. Syntaxe:
WR_TABLE Jmeno_Query
Jmeno_Query určuje dotaz definovaný polem WR_QUERY, jehož výsledek bude vložen do sestavy.
Příklad (Pozor, mezi názvy sloupců jsou tabulátory):
Kód Číslo Zůstatek
{WR_TABLE qrTableTest}
{WR_QUERY qrTableSestava:
SELECT
DOKL_KOD, DOKL_CIS, ZUSTATEK
FROM POHLEDAVKY
WHERE
ZUSTATEK > 0 ORDER BY ZUSTATEK}
TWordReport se po vyplnění všech dat v dokumentu pokusí spustit makro WRBeforePrint. Toto makro se tedy dá skvěle použít pro poslední "dočištění" sestavy před vlastním tiskem. Například můžete odstranit tabulku, do které nebyla dotažena všechna data a podobně.
Uživatelské sestavy lze vytvářet také pomocí exportu dat ve formátu XML a jejich následného zobrazení pomocí XSL (eXtensible Stylesheet Language) stylu ("XSL šablony") v běžném HTML prohlížeči (např. MS Internet Explorer). Výsledný dokument pořízený tímto způsobem lze nejenom tisknout, ale lze jej použít i pro internetové publikování a pro posílání elektronickou poštou. Zahrnutí této možnosti přináší na jedné straně další nástroj na úpravu tištěných výstupů ze strany uživatele (spíše správce systému s alespoň základní znalostí jazyka SQL a XML) a jako novinku přímo pořizovat výstup pro další externí elektronické zpracování.
Výsledný HTML soubor vznikne sloučením informací (dat) v XML dokumentu a grafické předlohy v XSL dokumentu. Pracovat lze s XML a XSL soubory zvlášť a sloučit je až při zobrazení v internetovém prohlížeči nebo lze pomocí XSL procesoru vytvořit HTML soubor a dále pracovat již jen s ním.
Jako "XSL procesor" lze využít i interní procesor, který obsahují internetové prohlížeče.
V modulu Administrátor volba Zobrazit - Správce sestav je nutno vybrat typ vkládané sestavy HTML(XML, XSL). Potom se určí pro které okno (obrazovkový formulář) je sestava určena a jak se bude jmenovat. Pokud již je XSL šablonu vytvořena, lze ji vložit tlačítkem Načíst nebo ji lze vytvořit přímo volbou Upravit.
Data, která se budou v sestavě zobrazovat se definují pomocí SQL dotazů (Dotazy), a to tak, že k hlavnímu dotazu (zástupný symbol T), který definuje základní obsahovou složku, se připojují detailové dotazy, které jako vstupní parametry přebírají hodnoty z hlavního dotazu. Po provedení jakékoliv změny v dotazu je nutné dotaz zkontrolovat (tlačítko Zkontrolovat) a v případě hlavního dotazu určit i typy jeho parametrů. U detailových dotazů je nutné zadat pro danou šablonu výlučný symbol.
V případě nové sestavy je nutné program ukončit a znova spustit.
Po korektním vložení sestavy bude nabídka příslušného okna rozšířena o HTML.
Pokud není zaškrtnuto Připravit k odeslání (výchozí) v nabídce HTML, budou výsledkem spuštění vybrané sestavy zobrazený výsledný HTML soubor ve výchozím internetovém prohlížeči. Výsledný soubor bude sestaven ze dvou souborů (SESTAVA_PREHLED.XML, SESTAVA_SABLONA.XSL), vytvořených po spuštění sestavy a uložených v temporary adresáři počítače.
Při zaškrtnuté volbě Připravit k odeslání se na základě správně nastaveného systémového parametru “XML_XSLT_HTM” spustí externí XSL procesor, jehož výsledkem je standardní HTML soubor (SESTAVA_PREHLED.HTM) uložený v temporary adresáři počítače a jeho následné zobrazení ve výchozím internetovém prohlížeči.
V adresáři (složce) dle parametru “XML_XSLT_HTM” se musí nacházet podadresář DATA, do kterého musí mít uživatele nastaven plný přístup. Příslušnému XSL procesoru(dávkovému souboru) jsou předány 3 parametry: XML soubor, XSL šablona a HTML soubor.
<?xml version="1.0" encoding="Windows-1250" ?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns="http://www.w3.org/TR/REC-HTML40">
<xsl:output method="html"/>
<xsl:template match="*">
<HTML>
<HEAD>
<TITLE> Pohledavky </TITLE>
</HEAD>
<BODY>
<xsl:for-each select="SESTAVA_PREHLED/SESTAVA">
<xsl:for-each select="SESTAVA_TITLE">
<P><B><BIG><BIG>FAKTURA - daňový doklad
<TABLE border='1' cellspacing='0' cellpadding='0' style='border-collapse:collapse;border:none'>
<tr style='height:1pt'><td width='300'></td></tr>
</TABLE>
<TABLE cellspacing='0' cellpadding='0'>
<tr>
<td width='200'><P><B><BIG>Číslo faktury: </BIG></B></P></td>
<td><P><B><BIG><xsl:value-of select="T_CISLOFAK"/> /
<xsl:value-of select="T_DOKL_ROK"/></BIG></B></P></td>
</tr>
<tr>
<td><P><B><BIG>Variabilní symbol:</BIG></B></P></td>
<td><P><B><xsl:value-of select="T_VAR_SYM"/></B></P></td>
</tr>
<tr>
<td><P><B>č.účtu: <xsl:value-of select="T_UCET"/>/
<xsl:value-of select="T_BANKA"/></B></P></td>
<td><P><B>konst.sym: <xsl:value-of select="T_KONST_SYM"/></B></P></td>
</tr>
</TABLE>
.
.
.
</xsl:for-each>
<xsl:for-each select="SESTAVA_DETAIL_P">
<tr>
<td><P><Small><xsl:value-of select="P_PRODUKT"/></Small></P></td>
<td><P><Small><xsl:value-of select="P_NAZEV"/></Small></P></td>
<td align='right'><P><Small><xsl:value-of select="P_CENA"/></Small></P></td>
<td align='right'><P><Small><xsl:value-of select="P_MNOZSTVI"/></Small></P></td>
<td align='right'><P><Small><xsl:value-of select="P_CASTKA_KC"/></Small></P></td>
<td align='right'><P><Small><xsl:value-of select="P_PROCENT"/></Small></P></td>
</tr>
</xsl:for-each>
<BR/>
<TABLE bgcolor='black' border='1' cellspacing='0' cellpadding='0' > <tr><td width='730'></td></tr></TABLE>
<BR/>
<SPAN>
<BR clear='all' style='page-break-before:always'/>
</SPAN>
</xsl:for-each>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>