lua:tisk_pomoci_lua
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze | ||
| lua:tisk_pomoci_lua [2022/06/30 07:58] – [Doplnění LUA reportů o správné ukládání při SaveDocument] Libor Kadaník | lua:tisk_pomoci_lua [2026/01/22 08:25] (aktuální) – [Vložení LUA bandu do existujícího reportu] Libor Kadaník | ||
|---|---|---|---|
| Řádek 1: | Řádek 1: | ||
| ==== Doplnění LUA reportů o správné ukládání při SaveDocument ==== | ==== Doplnění LUA reportů o správné ukládání při SaveDocument ==== | ||
| - | |||
| - | * Name - jméno reportu, je použito v názvu souboru: [ID-]Name-IDDokument.ext | ||
| - | * v reports.xml doplnit volaní LUA funkce o parametr Name (..., Use, Name) | ||
| - | * volanou Lua funkci doplnit o parametr Name | ||
| - | * ve volání Print doplnit třetí parametr hash: {document_name=Name} | ||
| * MiddleName je použit jako podadresář v reports (report/ | * MiddleName je použit jako podadresář v reports (report/ | ||
| Řádek 11: | Řádek 6: | ||
| * pokud se tiskne z Query a chceme dokument ukládat k danému rozpočtu, musí byt v prvním Query field // | * pokud se tiskne z Query a chceme dokument ukládat k danému rozpočtu, musí byt v prvním Query field // | ||
| - | |||
| - | === Pokud potřebuji ID a tiskne se z SQL je první field v SQL (ID) === | ||
| - | |||
| - | Do typu reportu napsat: '' | ||
| - | |||
| - | Pro doplneni //TypDokl// a //Cisla dokladu// do dokumentu je potreba v SQL mit field //TypDokl// a mit nastaven primarni index nebo // | ||
| - | |||
| - | DSI z SQL musi být před tiskem otevřené !!! | ||
| - | |||
| - | <code lua> | ||
| - | function v_zakazky_zakazky.reports.PracVykaz(DSI, | ||
| - | local TiskMD=v_prost_vykony.ZakazkaVykazMiddle(DSI: | ||
| - | if TiskMD then | ||
| - | TiskMD: | ||
| - | TiskMD: | ||
| - | WindowsManager: | ||
| - | TiskMD: | ||
| - | end | ||
| - | end | ||
| - | |||
| - | --ponovu | ||
| - | return LuaForm.PrintReport(Data.TiskMD, | ||
| - | {document_name=Data.Params.Name, | ||
| - | AfterSaveLuaHookFunc=" | ||
| - | |||
| - | </ | ||
| === pokud je použit GotoNextPage=false, | === pokud je použit GotoNextPage=false, | ||
| <code lua> | <code lua> | ||
| + | --pro specielni pripady ze je dialogu vybran konktretni partner nebo zakazka a dokument pak chci s nim spojit (napr. seznam faktur) | ||
| if res.idpartner ~= "" | if res.idpartner ~= "" | ||
| local MD=ClientSession: | local MD=ClientSession: | ||
| Řádek 55: | Řádek 25: | ||
| </ | </ | ||
| - | === Pro tisk metodou CreatePrint-CreateReport-StartPrint === | ||
| - | Pro doplneni //TypDokl// a //Cisla dokladu// do dokumentu je potreba ve **BeforeSaveToDocumentDir(DSI, | ||
| - | Z DSI se bere //TypDokl// a // | ||
| - | |||
| - | <code lua> | ||
| - | local prnt=WindowsManager: | ||
| - | local report=prnt: | ||
| - | local FileName | ||
| - | local Options = {Report=ReportName, | ||
| - | if Action==PRINT_DOCUMENT then | ||
| - | if ID ~= "" | ||
| - | FileName=dokumenty_dokumenty.BeforeSaveToDocumentDir(DSI, | ||
| - | end | ||
| - | prnt: | ||
| - | | ||
| - | ... | ||
| - | |||
| - | prnt: | ||
| - | report: | ||
| - | prnt:Free() | ||
| - | if Action==PRINT_DOCUMENT then | ||
| - | dokumenty_dokumenty.AfterSaveToDocumentDir(nil, | ||
| - | end | ||
| - | | ||
| - | </ | ||
| - | |||
| - | |||
| ====Ukázka tisku vizuálního: | ====Ukázka tisku vizuálního: | ||
| Řádek 93: | Řádek 36: | ||
| Pomocí output lze nastavit jméno výstupního souboru (má přednost před nastavením v < | Pomocí output lze nastavit jméno výstupního souboru (má přednost před nastavením v < | ||
| - | Preferovaný způsob fungujívcí v mobisu. | + | |
| - | <code lua> | + | ====Ukázka nevizuálního tisku middle:==== |
| - | function(Data) | + | Vytiskne do souboru "/ |
| - | ... | + | Middle musí být otevřené a vybrané řádky musí být " |
| - | local Options | + | |
| - | local Config | + | |
| - | | + | |
| - | end, | + | |
| - | </ | + | |
| <code lua> | <code lua> | ||
| - | mid=ClientSession: | + | ClientSession: |
| - | mid: | + | |
| - | WindowsManager:Print(mid, {Typ=1, | + | |
| - | ClientSession: | + | |
| </ | </ | ||
| - | Tisk přímo z tiskového dialogu. Umožňuje tisknout označené/všechny řádky dle volby uživatele. | + | ====Ukázka tisku vizuálního: |
| - | Výsledek | + | |
| + | -pokud potřebuji **ID** a tiskne se z **SQL** je potřeba nastavit **primarni index root DSI**. GotoNextPage urcuje, zda je report seznam ID="" | ||
| + | -pro doplneni **TypDokl** a **Cisla dokladu** do dokumentu je potreba | ||
| + | -**CDokladu** do dokumentu si to bere pres **DSI: | ||
| + | -//< | ||
| + | -pokud neni DSI z SQL **otevřené** otevře | ||
| <code lua> | <code lua> | ||
| - | WindowsManager: | + | local query = enc[[ |
| - | | + | <Middle Name=" |
| + | < | ||
| + | <Table Name=" | ||
| + | < | ||
| + | IDPRIJEMKA-P | ||
| + | </RequredIndexes> | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | select p.idprijemka, ' | ||
| + | ... | ||
| + | Data.TiskMD=ClientSession: | ||
| + | local ds=Data.TiskMD:FindDataSetItem("" | ||
| + | ds: | ||
| + | ... | ||
| </ | </ | ||
| - | Uložení reportu do dokumentu | + | \\ |
| + | |||
| + | === Základní metoda tisku PrintReport (WindowsManager: | ||
| <code lua> | <code lua> | ||
| - | WindowsManager: | + | LuaForm.Func.v_zakazky_zakazky_reports_PrintZakpol={ |
| - | | + | function(Data) |
| - | </code> | + | Data.PrintMid = v_zakazky_zakazky.reports.PrintZakpol(Data.DSI, Data.Form) |
| - | ====Ukázka nevizuálního tisku middle:==== | + | return cf.LuaFormPrintReport(Data, |
| - | Vytiskne do souboru "m:/ | + | end, |
| - | Middle musí být otevřené a vybrané řádky musí být " | + | finally=function(Data) |
| + | if Data.PrintMid then Data.PrintMid: | ||
| + | end | ||
| + | } | ||
| + | |||
| + | |||
| + | function v_zakazky_zakazky.reports.PrintZakpol(DSI, Form) | ||
| + | local idzakaz=DSI: | ||
| + | | ||
| + | polDS: | ||
| + | local tIDZakpol = Form: | ||
| + | |||
| + | local tisk=[[ | ||
| + | < | ||
| + | < | ||
| + | <Table Name=" | ||
| + | <Field Name=" | ||
| + | <Field Name=" | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | select z.idzakaz, z.idpartner, zp.*, z.popis as popiszak | ||
| + | from zakazky_zakpol zp | ||
| + | JOIN zakazky_zakazky z ON z.idzakaz = zp.idzakaz | ||
| + | where ]]..cf.ConstructWhereFromString(" | ||
| + | </SQL> | ||
| + | </ | ||
| + | </ | ||
| + | ]] | ||
| + | if DEBUG_DETAIL then DEBUG_WRITE({mid=tisk}) end | ||
| + | local TiskMD=ClientSession: | ||
| + | if DEBUG_DETAIL and not DEBUG_NOVISIBLE then | ||
| + | local form=WindowsManager: | ||
| + | local outSP=WindowsManager:ShowFormSP(form, | ||
| + | form=form: | ||
| + | if outSP.MRCode==2 then TiskMD=TiskMD: | ||
| + | end | ||
| + | --pro save dokument musi byt otevrene DSI | ||
| + | local ds = TiskMD:FindDataSetItem("" | ||
| + | ds: | ||
| + | | ||
| + | end | ||
| - | <code lua> | ||
| - | ClientSession: | ||
| - | </ | ||
| - | ====Ukázka tisku nevizuálního: | ||
| - | <code lua> | ||
| - | mid=ClientSession: | ||
| - | mid: | ||
| - | print=ClientSession: | ||
| - | report=print: | ||
| - | print: | ||
| - | mid: | ||
| - | print: | ||
| - | report: | ||
| - | print: | ||
| - | ClientSession: | ||
| </ | </ | ||
| - | ====Ukázka | + | === Metoda |
| - | Preferovaný způsob fungující v mobisu: | ||
| <code lua> | <code lua> | ||
| + | LuaForm.Func.v_rozpocty_rozpocty_reports_Specifikace={ | ||
| function(Data) | function(Data) | ||
| - | ... | + | |
| - | | + | |
| - | local ID = "" | + | |
| - | --pokudse tiskne jeden rozpocet, muze se do dokumentu doplnit odkaz na rozpocet | + | |
| - | if # | + | |
| - | if Data.FirstParams.Action==PRINT_DOCUMENT then | + | |
| - | Data.FileName=dokumenty_dokumenty.BeforeSaveToDocumentDir(Data.DSI, | + | |
| - | Data.FirstParams.ReportName, | + | |
| - | end | + | |
| - | local Config = {output = Data.FileName, | + | |
| - | return LuaForm.StartPrintReport(Options, | + | |
| end, | end, | ||
| function(Data) | function(Data) | ||
| - | Data.Report: | ||
| ... | ... | ||
| - | | + | |
| - | | + | |
| - | end | + | end, "Tisk zakazek", |
| - | return | + | end, |
| - | end | + | function(Data) |
| - | </ | + | ... |
| + | return | ||
| + | end, | ||
| + | } | ||
| + | |||
| + | |||
| + | function v_rozpocty_rozpocty.reports.TiskKapitol(DSI, | ||
| + | ... | ||
| + | if GroupPolozky then | ||
| + | local md = v_rozpocty_rozpocty.reports.GetMiddlelGroupPolozky(kapDS: | ||
| + | md: | ||
| + | if md then md=md: | ||
| + | else | ||
| + | ... | ||
| + | Report: | ||
| + | ... | ||
| + | end | ||
| + | Report: | ||
| - | <code lua> | ||
| - | function Tisk(DSI, Form, Action, ReportName, Use) | ||
| - | local prnt=WindowsManager: | ||
| - | local report=prnt: | ||
| - | local FileName | ||
| - | if Action==PRINT_DOCUMENT then | ||
| - | | ||
| - | end | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | if Action==PRINT_DOCUMENT then | ||
| - | | ||
| - | end | ||
| end | end | ||
| </ | </ | ||
| - | **Konkrétní příklad** | + | \\ |
| + | |||
| + | ==== RawPrint ==== | ||
| <code lua> | <code lua> | ||
| - | LuaForm.Func.v_faktury_faktury_reports_PrehledFakturZakPol={ | + | LuaForm.Func.v_sklad_objed_reports_PrintPalety |
| function(Data) | function(Data) | ||
| - | return LuaForm.ShowDlg({ | + | return LuaForm.StartNotify("Tisk palety") |
| - | Caption=enc"Přehled faktur s vybranou zakpol", | + | |
| - | Items={ | + | |
| - | {" | + | |
| - | {" | + | |
| - | {" | + | |
| - | } | + | |
| - | }) | + | |
| end, | end, | ||
| function(Data) | function(Data) | ||
| - | if Data.Params.Result == DLG_CANCEL then return end | ||
| local Options = {Report = Data.FirstParams.ReportName, | local Options = {Report = Data.FirstParams.ReportName, | ||
| - | local Config = {output_type = Data.FirstParams.OutputType, | + | |
| + | | ||
| + | luaprint=" | ||
| return LuaForm.StartPrintReport(Options, | return LuaForm.StartPrintReport(Options, | ||
| end, | end, | ||
| function(Data) | function(Data) | ||
| - | Data.PrintMid | + | |
| - | return | + | local hlDS = md: |
| + | local polDS = md: | ||
| + | local palDS = md: | ||
| + | local tID = Data.Form: | ||
| + | local tOzn = Data.Form: | ||
| + | --print(tID, tOzn) | ||
| + | local tPal, tPol = nil, nil | ||
| + | if #cf.spliti(" | ||
| + | tPal = tOzn | ||
| + | elseif #cf.spliti(" | ||
| + | tPol = tOzn | ||
| + | end | ||
| + | cf.WalkRecords(hlDS, | ||
| + | polDS: | ||
| + | cf.WalkRecords(polDS, | ||
| + | palDS: | ||
| + | cf.WalkRecords(palDS, | ||
| + | | ||
| + | end, Data.Notify) | ||
| + | end, Data.Notify) | ||
| + | end, Data.Notify) | ||
| + | return | ||
| + | end, | ||
| + | function(Data) | ||
| + | return LuaForm.EndNotify(" | ||
| end, | end, | ||
| - | finally=function(Data) | ||
| - | if Data.PrintMid then Data.PrintMid: | ||
| - | end | ||
| } | } | ||
| - | |||
| - | function v_faktury_faktury.reports.PrehledFakturZakPol(res, | ||
| - | ... | ||
| - | ... | ||
| - | return md, {GotoNextPage=false, | ||
| - | end | ||
| </ | </ | ||
| + | |||
| + | |||
| ==== Vložení LUA bandu do existujícího reportu ==== | ==== Vložení LUA bandu do existujícího reportu ==== | ||
| Řádek 279: | Řádek 268: | ||
| * V excelu a openoffice se napíše kouzelné slovíčko **commandband** do 1. řádku a posledního + 3 sloupce daného bandu. | * V excelu a openoffice se napíše kouzelné slovíčko **commandband** do 1. řádku a posledního + 3 sloupce daného bandu. | ||
| * V html se prostě mezi značky nic nevloží. ''< | * V html se prostě mezi značky nic nevloží. ''< | ||
| + | |||
| + | ==== Přímý tisk z OBIS na Windows tiskárnu ==== | ||
| + | |||
| + | <code LUA> | ||
| + | print(LuaForm.RawPrintFile([[c: | ||
| + | </ | ||
lua/tisk_pomoci_lua.1656575901.txt.gz · Poslední úprava: 2022/06/30 07:58 autor: Libor Kadaník