Moduly
Úvod
Altus Vario je modulární systém, otevřený pro rozšiřování o zákaznické moduly. Moduly mohou využívat společných funkcí knihovny Vario.MDA pro správu objektů Varia (jako jsou Moduly, Agendy a Knihy), stejně jako funkcí pro práci se záznamy (založení záznamu, úpravy, tisk, filtrování atd) při zachování všech vlastností Varia (například přidělování oprávnění uživatelům). Na základě Varia lze díky tomu, vytvořit firemní informační systém, který používá standardní řešení ekonomických agend a vlastní řešení pro specifické činnosti firmy.
Modul Varia, podle tohoto dokumentu, je aplikace databázového prostředí Microsoft Access. Předpokládáme znalost Accessu na úrovni programování objektů ve VBA.
Jako základ pro vytvoření vlastního modulu vám poslouží modul Korespondence, který obsahuje komentovaný kód otevřený pro úpravy.
V příkladech naleznete praktické ukázky kódů pro vytváření, otevírání a úpravy záznamů nejen této, ale i jiných agend (například založení adresy do Adresáře nebo vytvoření faktury kódem).
Datová struktura Varia je popsána v dokumentaci ve složce Servis / Prevod_dat instalačního CD. Jinak předpokládáme, že pro vývojáře není problém prozkoumat datové struktury Varia pomocí MS Accessu nebo některého z nástrojů pro dokumentaci databáze. Názvy polí odpovídají titulkům, které se zobrazují ve formulářích, takže význam polí je transparentní. Poněkud složitější může být zjištění významu skrytých polí, ovšem těch je minimum. Pokud potřebujete zjistit jejich význam, doporučujeme založit záznam v příslušné agendě a prozkoumat výsledek v tabulce.
Pokud tvoříte vlastní modul, dosaďte všude v následujícím textu za slovo Korespondence název vašeho modulu. Při návrhu vlastních modulů doporučujeme dodržovat konvenci Varia (Rozmístění nabídky, standardní velikosti polí, fonty ..). Využívejte všech vestavěných funkcí a nabídek (například pro zajištění tisku nemusíte napsat ani řádek kódu, jen zaregistrovat vlastní tiskové výstupy). Uživatelé se budou ve vašem modulu rychleji orientovat.
Dobře zvažte předem, zda pro řešení vaší úlohy lépe vyhoví doplněk nebo modul. Modul je potřeba tam, kde se jedná o vlastní agendu (s knihami), která neexistuje ve Variu. Tam, kde se pracuje se stávajícími agendami, zpravidla dobře vyhoví doplněk otevíraný nad standardním modulem.
Dále je popsán postup vytvoření modulu. Jména konkrétních objektů se vztahují na modul Korespondence. Můžete si nainstalovat tento modul a projít si návod nad hotovými objekty v tomto modlu. Zdrojový tvar tohoto modulu je přiložen na CD ve složce SDK\Moduly.
Vytvoření datového souboru
Moduly mohou používat data ze stávající datové struktury Varia nebo ukládat data do vlastních datových souborů.
Data Varia jsou ukládána do oddělených databází (v případě uložení dat na fileserveru jsou to soubory MDB, u SQL serveru jsou to SQL databáze). Při instalaci se do datové složky umístí prázdné datové soubory (např. Data0000.mdb). Při založení nové firmy se v datové složce vytvoří pomocí Průvodce založením firmy kopie všech souborů, jejichž název odpovídá masce ????0000.mdb. Nové soubory mají v názvu pořadové číslo firmy (více viz dokumentace Varia). Při dodržení dále popsaných konvencí zajistí Vario pro zákaznické moduly: založení dat modulu při založení nové firmy a připojení datového souboru při otevření jiné firmy (předpokládáme, že každá zpracovávaná firma má vlastní data). Problematické je přidání nového modulu do existující instalace - založení datových souborů k existujícím firmám se zajistí opakovaným přidáním modulu nad jednotlivými daty. Založení zákaznických databází na SQL serveru musí zajistit administrátor spuštěním vytvářecích dotazů.
- Vytvoříme nový mdb soubor a pojmenujeme ho dle konvence ZZZZ0000.mdb, kde Z je písmeno A-Z (korespondence používá DKor0000.mdb).
- Vytvoříme potřebné tabulky. Tabulka obsahující záznamy agendy musí obsahovat pole Kniha. Viz tabulka Korespondence v souboru DKor0000.mdb.
- Zvolíme položku pro primární klíč (Ve Variu zpravidla text 30, nepoužívejte delší).
- Soubor uložte do složky ..\Vario11\Data\
- Vytvořte pracovní kopii dat ZZZZ0001.mdb (v našem případě DKor0001.mdb) pro ladění. (Soubor ZZZZ0000.mdb se nepoužívá při práci, je to výchozí šablona pro založení nových dat.)
Tím je datová část modulu hotová.
TIP: vlastní datový soubor je také vhodný pokud potřebujete rozšířit stávající datovou strukturu Varia. Například pokud vaše aplikace vyžaduje nová pole v tabulce Doklady, vytvoříte vlastní datový soubor s tabulkou Doklady_rozsireni. Do ní přidáte nova pole a vaše aplikace potom může používat dotaz, který propojí obě tabulky (relace 1:1).
Poznámka: některá řešení nemají datové soubory v MDB (jsou určena výhradně pro SQL server). Přesto bývá vhodné si datovou strukturu v mdb připravit pro ladění a na SQL převést až finální podobu dat.
Vytvoření souboru aplikace
Pro modul navržený podle zde uvedených pravidel, zajistí Vario inicializaci včetně připojení dat a otevření výchozí agendy, ověření oprávnění, inicializaci panelů nabídek a nástrojů Varia. Pro agendy obsažené v modulu zajistí Vario založení a nastavení knih, správu tiskových výstupů a práci se záznamy (založení, úpravy, mazání, tisk atd.).
- Vytvořte databázi aplikace (náš příklad je Korespondence.mdb)
Tabulky
- Propojte povinné tabulky
Agendy ze souboru ..\Vario11\Data\Firmy.mdb
Knihy ze souboru ..\Vario11\Data\Data0001.mdb
Poznámka: musíte používat pracovní skupinu Vario.mdw a musíte být členem skupiny VarioUsers abyste mohli číst data (viz též níže kapitola Ladění). - Nyní propojte tabulky ze souboru ZZZZ0001.mdb (DKor0001.mdb)
V případě korespondence je to tabulka Korespondence. - Propojte všechny potřebné tabulky ze souborů ????0001.mdb v adresáři ...\Vario11\Data\
(To může být např. tabulka Firmy pro využití databáze firem v novém modulu). V našem případě jsou to tabulky
Ciselniky
Firmy
Osoby
- V dialogu Po spuštění vyplňte Název aplikace. Název aplikace je název modulu a zároveň název Výchozí agendy modulu. V našem případě Korespondence.
Dotazy
- Vytvořte dotaz, který vrací záznamy pro tabulku agendy
Kniha <Název agendy> (příklad: Kniha Korespondence)
V tomto dotazu musí být uvedeno kriterium Kniha=AktualniKniha("Název agendy"), které zajistí, že dotaz vrací pouze záznamy aktuální knihy (tj. knihy zobrazené v seznamu knih na panelu nástrojů). Pokud se jedná o roční agendu, musíte navíc uvést kriterium, které vrátí pouze záznamy spadající do aktuálního roku. Například: Rok=AktualniRok("Název agendy") nebo Datum Between DateSerial(AktualniRok("Název agendy");1;1) And DateSerial(AktualniRok("Název agendy");12;31). - Vytvořte dotaz, který vrací detail záznamu
LibovoplnyNazev_Detail (příklad: Korespondence_Detail)
V tomto dotazu musí být uvedeno kriterium Pole_primarniho_klice_agendy=ParametrDotazu("parZaznam"), které zajistí, že dotaz vrátí pouze upravovaný/prohlížený záznam. - Vytvořte pomocné dotazy. V našem příkladu jde o dotazy
Referenti
Dej Firmu
Formuláře
- Vytvořte vlastní formuláře pro uživatelskou práci s modulem. V našem příkladovém modulu to jsou formuláře
Korespondence
Korespondence_Detail
Formulář Korespondence slouží jako tabulka agendy. Obsahuje povinné události- Při otevření,
- Aktivaci a
- Deaktivaci.
Viz komentáře v kódu.
- Formulář Korespondence_detail slouží pro prohlížení/úpravy záznamu. Tento formulář musí obsahovat vlastnosti
- Agenda,
- StavZaznamu,
- NadFormularem a
- Zaznam, pomocí kterých zobrazí Vario detail záznamu.
- Od okna detailu záznamu se také očekávají určité operace při zavření, které jsou komentovány v kódu.
V praxi je nejlépe postupovat tak, že se naimportujete tyto formuláře z modulu Korespondence a zaměníte název agendy (agKorespondence nebo Korespondence) a název primárního klíče (Cislo_jednaci) za příslušné názvy.
Makra
- Vytvořte povinné makro
AutoExec
Toto makro má za úlohu spustit funkci AutoExe(). Takto nazvané makro se spustí hned po zavedení modulu. Pokud při startu modulu podržíme stisknutou klávesu SHIFT, makro se neprovede, což můžeme využít při ladění modulu.
- Jiná makra zásadně nepoužívejte, protože v nich nelze ošetřit chybové stavy.
Moduly (kód)
- Vytvořte moduly
imVario
DialogyModulu
a libovolné další. V našem příkaldu je modul imKorespondence. - Kód modulu imVario a kód třídy DialogyModulu přeberte z Korespondence a upravte tak, aby odpovídal vašim potřebám.
- Programový kód v modulech a formulářích je ve vzorovém modulu Korespondence dostatečně okomentován.
Nastavení referencí a předvoleb
- Odkazy (references) nastavte na :
Visual Basic For Application
Microsoft Access 9.0 Object Library
Microsoft DAO 3.6 Object Library
C:\Program files\Vario11\Vario.mda - Dále je třeba zajistit, aby v nástrojích / po spuštění byl Název Aplikace = Název modulu = Název výchozí agendy.
Více agend v modulu
- Pokud požadujete vytvoření více agend v modulu (např. podobně jako v modulu sklad, banka, účetnictví, mzdy, zakázky), postupujte dle výše popsaného postupu pro každou agendu zvlášť a vše vložte do jediného .mdb souboru aplikace.
Vytvoření a připojení nových toolbarů
- Vytvořte nový toolbar a pojmenujte ho Menu_Agend. (postup : Klepněte pravým tlačítkem myši v oblasti toolbarů. Zvolte položku Vlastní a poté vyberte Nový a jako název napište Menu_agend.)
- Výchozí typ Panel nástrojů změňte na Řádek nabídek
- Do nově vytvořeného toolbaru vložte tolik nových nabídek, kolik máte agend v modulu.
- Jako název nabídky vložte název identifikující agendu (jméno názvu není kritické) a do vlastností (tagu) v řádku identifikace vložte jméno agendy.
- Po spuštění modulu z Varia dojde k zavedení vlastního sloupce nabídek na třetí pozici zleva v implicitním toolbaru.
- Pokud máte v modulu více agend, postupujte stejným způsobem. Vlastní nabídkový sloupec vytvořte tak, aby horní položky tvořily odkazy na ostatní agendy a od výkonných příkazů je oddělte čarou.
- Další změny v nabídce provádějte vždy v nabídce Menu_Agend.
Nyní je potřeba modul zaregistrovat, abyste ho mohli spustit.
Vložení nového modulu do Varia
- Spusťte program Vario (libovolný modul).
- Klepněte na Nástroje / Možnosti a zvolte kartu Moduly a tlačítko Přidat.
- V dialogovém okně vyberte soubor .mdb, jenž bude vaším novým modulem. V našem příkladě to je soubor Korespondence.mdb. Vario přidá potřebné hodnoty do registrační databáze MS Windows. Tím je nový modul zaregistrován a zobrazí se v menu Soubor / Otevřít modul.
- Pokud Vario nalezne v modulu tabulku USysModulInfo obnoví z této tabulky soubory a záznamy do složek a databází Varia. Tím se nainstalují tiskové výstupy, číselníky a nezbytné výchozí hodnoty.
- Pokud je v tabule USysModulInfo databáze ZZZZ0000.mdb, Vario jí zkopíruje do složky dat. Dále vytvoří kolpii ZZZZ0001.mdb, kde 0001 je číslo aktuálních dat (pokud neexistuje a nejsou aktuální data na SQL serveru).
Když vytváříte nový modul, musíte nejprve tyto záznamy zapsat sami. Potom použijte doplněk Setup_modulu.mda, který vytvoří tabulku USysModulInfo a vloží do ní záznamy a soubory, které modul potřebuje pro svoji funkci.
Vyplnění potřebných záznamů
Propojte si z Varia tabulky Agendy (db Firmy), Knihy (db Data0001), Sablony a Vychozi_hodnoty a vyplňte tyto hodnoty (nahraďte Korespondence vlastními názvy):
Agendy
- Agenda: Korespondence
- Modul: Korespondence
- Detail: Korespondence_detail
- Tabulka: Korespondence
- Tabulka_polozky:
- Primarni_klic: Cislo_jednaci
- Rocni: ano
- Mesicni: ne
- Zobrazit_formular: ne
Knihy
- Kniha: VK Korespondence
- Agenda: Korespondence
- Výchozí tiskový formulář: Seznam pošty
- Výchozí šablona: Výchozí
- Výchozí záznam: KD
- Konto knihy:
- Účtovat: ne
- Roční: ano
- Prefix: \C\J\-YYYY\-
- Číslo: 0000
- Suffix:
- Číselná řada: 2
- Vlastnosti:
- Podmínka:
- Podmínka položky:
- Typ knihy: V
- Měna knihy:
- Nepoužívat: ne
Šablona | Kniha | Vyplnit_polozky |
---|---|---|
Výchozí | VK Korespondence | ne |
Šablona | Kniha | Pole | Položka | Výchozí hodnota | Povinné pole |
---|---|---|---|---|---|
Výchozí | VK Korespondence | Datum | ne | =Date() | ano |
Výchozí | VK Korespondence | Referent | ne | =CurrentUser() | ne |
Výchozí | VK Korespondence | Typ_korespondence | ne | ne | |
Výchozí | VK Korespondence | Typ_dopisu | ne | ne | |
Výchozí | VK Korespondence | Kategorie_korespondence | ne | ne |
Potom spusťte funkci (stačí z ladicího okna):
mZabezpeceni.ZapisOpravneni AgKorespondence, ObjektAgenda, Opravneni1 + Opravneni2 + Opravneni3 + Opravneni4 + Opravneni5 + OpravneniCist + OpravneniMazani + OpravneniMoznosti + OpravneniPridavani + OpravneniUpravy, VychoziUzivatel
Tato funkce vytvoří záznam do tabulky oprávnění:
Uživatel | Objekt | Typ_objektu | Opravneni |
---|---|---|---|
<Výchozí> |
Korespondence | 1 | 3605 |
Tím je modul připraven ke spuštění a můžete spustit makro AutoExec, kterým se modul otevře.
Vytvoření tiskových formulářů
- Viz SDK tvorba tiskových výstupů. Postupujte dle návodu s tím rozdílem, že tiskové formuláře můžete tvořit přímo v modulu (dokud není modul uzavřen pro úpravy - viz Distribuce).
Vytvoření sestav
- Viz SDK tvorba tiskových výstupů. Postupujte dle návodu s tím rozdílem, že podkladové dotazy sestav můžete tvořit přímo v modulu.
Vytvoření grafů
- Viz SDK tvorba tiskových výstupů. Postupujte dle návodu s tím rozdílem, že podkladové dotazy grafů tvoříte přímo v modulu.
Programování
- V modulu Korespondence se dále nachází vzorový kód pro otevírání, vytváření, editování a mazání záznamů v libovolných tabulkách a kód pro zápis do zvolených dokladů, rovněž je zde uveden způsob kontroly chyb při běhu programu. Strukturu vlastních procedur a funkcí je pro korektní spolupráci s Variem nutné dodržet stejnou jako ve vzorových kódech.
- V modulu Korespondence v modulu kódu Vzorový kód je také funkce VytvoreniNoveFaktury ilustrující založení nového dokladu. Stejný postup se používá též pro založení zakázky nebo jiných typů dokladů.
Ladění
- Soubor pracovních skupin, který používáte při ladění, musí být umístěn v datové složce.
Poznámka: Vytvořte na ploše zástupce programu MS Access a jako parametr napište ... MSACCESS.EXE /WrkGrp "CestaKSouboru *.mdw"
Distribuce
- Pro distribuci vlastních modulů doporučujeme skrýt okno databáze, aby koncový uživatel neměl přístup k Vámi napsanému kódu (zaheslovat).
- Modul mějte nainstalovaný ve složce Varia. Dokončete tiskové výstupy, exporty a importy, doplňte číselníky.
- Nainstalujte si doplněk Setup_modulu.mda, který naleznete ve složce SDK\Moduly.
- Otevře váš modul a spusťte doplněk Příprava instalace modulů.
- V prvním kroku zadejte název modulu (Korespondence).
- V druhém přiložte soubory. Nezapomeňte přidat soubor dat (DKor0000.mdb)
- Ve třetím průvodce vloží dotazy, které načtou záznamy pro každou agendu. Syntaxe dotazů odpovídá exportu Vario XML (viz SDK exporty a importy). Prvních 9 dotazů nechte jak jsou, můžete upravit nebo odstranit dotaz číslo 10. Můžete přidat vlastní dotazy.
- Dokončením se vytvoří tabulka USysModulInfo. Můžete se do ní podívat jestli obsahuje vše potřebné. Data jsou uložena ve formátu VarioXml, soubory jsou uloženy binárně.
Instalace
- Zkopírujete modul do složky Varia
- Spustíte Vario, otevřete dialogové okno Možnosti, přejdete na kartu Moduly, klepnete na Přidat modul.
- Zadatáte soubor modulu (<Složka Varia>\<Modul>.mdb) a potvrdíte OK.
- Vario zaregistruje modul, obnoví soubory vložené průvodcem Příprava instalace modulů a zapíše do tabulek záznamy vložené tímto průvodcem.