Tisková sestava nad definovatelnou agendou
Ke každé definovatelné agendě (viz Jak vytvořit definovatelnou agendu) systém automaticky vygeneruje Dynamické SQL, které obsahuje hlavičku (dataset MAIN) a případnou kolekci řádků (dataset ROWS, podřízený datasetu MAIN). Toto DynSQL lze použít jako zdroj dat pro vlastní tiskovou sestavu úplně stejně jako u kterékoli jiné agendy.
Sestava průvodcem nad automaticky generovaným DynSQL
Průvodce vytvořením tiskové sestavy (viz obecný návod Vytvoření tiskové sestavy pomocí průvodce) čte datasety zdrojového DynSQL zcela obecně, bez ohledu na to, zda jde o systémovou nebo definovatelnou agendu. Nad definovatelnou agendou tedy funguje stejně jako kdekoli jinde:
-
V definovatelné agendě spusťte průvodce vytvořením tiskové sestavy stejným způsobem jako u jiných agend.
-
Jako zdroj dat vyberte automaticky generované DynSQL dané agendy.
-
Ve stromu polí přidejte položky z větve Main (hlavička) a případně z podřízené větve odpovídající kolekci řádků.
-
Dokončete průvodce - vygenerovanou sestavu lze dále upravovat stejně jako kteroukoli jinou.
Pokud vám údaje z automaticky generovaného DynSQL nestačí (typicky potřebujete zobrazit i data z jiných, s definovatelným objektem propojených tabulek), pokračujte oddílem Rozšíření o data mimo automaticky generovaný DynSQL.
Rozšíření o data mimo automaticky generovaný DynSQL
Automaticky generované DynSQL definovatelné agendy je běžně needitovatelné (systém by úpravu při dalším přegenerování přepsal). Lze si ale nad ním uložit vlastní upravitelnou kopii, kterou systém i nadále aktualizuje spolu s definicí, ale zároveň v ní jde ručně doplnit vlastní obsah - typicky další subkolekce (datasety) k datům, které v definici business objektu přímo nejsou.
-
Otevřete nástroj DynSQLEditor.exe (dostupný i z menu Abra, položka DynSQL, sekce Import/Export - dříve nazývaná Repozitoř) a najděte automaticky generované DynSQL vaší definovatelné agendy.
-
Uložte si z něj vlastní upravitelnou kopii, napojenou na stejný programový bod (jedno DynSQL lze připojit vždy jen k jednomu programovému bodu).
-
V kopii na subzáložce Datasety klikněte v levém seznamu datasetů pravým tlačítkem myši a zvolte Nový - vznikne nový dataset s výchozí, needitovanou šablonou SQL dotazu SELECT {FIELDS} FROM {WHERE}, kterou přepíšete na skutečný dotaz. Vyplňte pole Název (technický, např. STAVYSKLADU) a Popiska (srozumitelná, např. "Stav skladové karty na skladech"). Do pole Master ručně napište název datasetu s řádky (jde o prosté textové pole, ne výběr ze seznamu) - tím tento nový dataset učiníte podřízeným datasetu s řádky, obdobně jako je u standardních dokladů dataset řádků podřízen datasetu hlavičky.
-
Do pole SQL dotazu zadejte dotaz propojující skladovou kartu z řádkového datasetu s tabulkou stavů zásob na jednotlivých skladech, např. SELECT {FIELDS} FROM StoreSubCards A {JOIN} WHERE A.StoreCard_ID = :X_STORECARD_ID {ANDWHERE}. Šablony {FIELDS}/{JOIN}/{ANDWHERE} systém sám doplní (prázdné, pokud pro ně nic není definováno) - nejde o neúplnou syntaxi, ale o zavedený způsob psaní SQL v DynSQL, stejně jako u automaticky generovaných datasetů. Klauzuli WHERE napište napevno sami, obdobně jako u datasetu s řádky, který má napevno napsáno WHERE A.Parent_ID = :ID - parametr za dvojtečkou se automaticky naváže na stejnojmenné pole nadřízeného datasetu (zde tedy technický název vaší položky s odkazem na skladovou kartu).
-
Potřebné výstupní sloupce (zde alespoň sklad a množství) doplňte na subzáložce Rozšířené fieldy tohoto nového datasetu - ne na subzáložce Aliasy, ta slouží k JOINům na tabulky, které odpovídají existující registrované business třídě, což u pomocné tabulky stavů zásob není tento případ. Ke každé rozšířené položce zadejte její SQL výraz (např. A.Store_ID, resp. A.Quantity), název a popisku. Pokud chcete v tiskové sestavě k položce se skladem přistupovat i přes tečkovou notaci (viz kapitola Dynamické SQL - Subzáložka Datasety), vyplňte u ní navíc Packed CLSID business třídy, na kterou pole odkazuje.
-
V editoru tiskové sestavy nad touto vlastní kopií DynSQL přidejte vnořený pás (band) napojený na nový dataset, obdobně jako je popsáno v kapitole Popis jednotlivých funkcí editoru pro vkládání obrázků/vnořených dat.
Vlastní upravitelnou kopii DynSQL lze mezi spojeními přenášet i přímo z DynSQLEditor.exe, bez instalační sady - v menu Export/Import je vedle obecné položky Repozitoř (ta pracuje se systémovým i uživatelským DynSQL obecně, viz Dynamické SQL) i samostatná položka Definovatelné agendy s volbami Exportovat/Importovat. Ta se připojí přímo k jinému, vámi vybranému spojení (musí být pro DynSQLEditor.exe dostupné, stejně jako kterékoli jiné spojení) a přenese do něj (resp. z něj) veškeré DynSQL definice patřící definovatelným agendám najednou - včetně jak automaticky generovaných, tak vašich upravených kopií. Jde o přímý přenos mezi dvěma živými spojeními, ne o soubor k importu, a nijak se nepřekrývá s instalační sadou (viz Přenos definovatelného řešení mezi spojeními pomocí instalační sady) - obě cesty jen zapisují do stejné podkladové definice, takže je lze i kombinovat.
Touto cestou se přenáší pouze DynSQL, ne definice samotné agendy, business objektu ani jeho položek - cílové spojení musí mít odpovídající definovatelnou agendu (a business objekt, na kterém stojí) již vytvořenou, ať už ručně, nebo dříve naimportovanou instalační sadou. Bez toho by DynSQL, které se snažíte přenést, nemělo v cílovém spojení k čemu se navázat (viz jeho vazba na programový bod agendy).
U dokladové agendy Reklamace s řádkovou kolekcí odkazující na skladovou kartu takto lze doplnit subkolekci, která k řádku dotáhne aktuální stav dané karty na všech skladech, a zobrazit je v tiskové sestavě pod příslušným řádkem.
Tento návod je součástí skupiny návodů k definovatelným objektům. Další návody z této skupiny:
- Definovatelné objekty - úvod
- Jak vytvořit definovatelnou agendu
- Jak připojit definovatelnou kolekci k existující agendě
- Tisková sestava nad definovatelnou agendou
- Definovatelný formulář a definovatelné panely na definovatelné agendě
- Přenos definovatelného řešení mezi spojeními pomocí instalační sady
- Příklad z praxe - definovatelná agenda Reklamace
- Přílohy definovatelného business objektu přes API a skriptování
- Definovatelný business objekt kompletně přes REST API