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 [2023/05/25 11:34] (aktuální) – [Ukázka tisku vizuálního:] Karel Petrů | ||
---|---|---|---|
Řá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é/ | + | ====Ukázka tisku vizuálního: |
- | Výsledek se uloží do souboru pojmenovaném dle sloupce IDMajetek. | + | |
- | <code lua> | + | -pokud potřebuji **ID** a tiskne se z **SQL** je potřeba nastavit **primarni index root DSI**. GotoNextPage urcuje, zda je report seznam ID="" |
- | WindowsManager: | + | -pro doplneni **TypDokl** a **Cisla dokladu** do dokumentu je potreba v SQL mit field TypDokl a mit nastaven **primarni index** nebo **DataModelName** |
- | | + | -**CDokladu** do dokumentu si to bere pres **DSI:GetPrimaryIndex**. Tzn. musí být nadefinován **DataModel** s **RequredIndexes**\\ |
- | </ | + | -//< |
+ | -pokud neni DSI z SQL **otevřené** otevře se automaticky v cf.LuaFormPrintReport | ||
- | Uložení reportu do dokumentu | ||
<code lua> | <code lua> | ||
- | WindowsManager: | + | local query = enc[[ |
- | | + | |
- | </code> | + | <DataModel> |
- | ====Ukázka nevizuálního tisku middle: | + | < |
- | Vytiskne do souboru | + | < |
- | Middle musí být otevřené a vybrané řádky musí být " | + | IDPRIJEMKA-P |
+ | </RequredIndexes> | ||
+ | </Table> | ||
+ | </ | ||
- | <code lua> | + | |
- | ClientSession: | + | |
- | </code> | + | ... |
- | ====Ukázka tisku nevizuálního: | + | |
- | <code lua> | + | local ds=Data.TiskMD: |
- | mid=ClientSession: | + | ds: |
- | mid: | + | ... |
- | print=ClientSession: | + | |
- | report=print: | + | |
- | print: | + | |
- | mid: | + | |
- | print: | + | |
- | report: | + | |
- | print: | + | |
- | ClientSession: | + | |
</ | </ | ||
- | ====Ukázka | + | \\ |
+ | |||
+ | === Základní metoda | ||
- | Preferovaný způsob fungující v mobisu: | ||
<code lua> | <code lua> | ||
+ | LuaForm.Func.v_zakazky_zakazky_reports_PrintZakpol={ | ||
function(Data) | function(Data) | ||
- | | + | Data.PrintMid |
- | | + | |
- | local ID = "" | + | |
- | --pokudse tiskne jeden rozpocet, muze se do dokumentu doplnit odkaz na rozpocet | + | |
- | if #Data.Form: | + | |
- | | + | |
- | Data.FileName=dokumenty_dokumenty.BeforeSaveToDocumentDir(Data.DSI, ID, dokumenty_dokumenty.GetDocumentFileName(" | + | |
- | | + | |
- | end | + | |
- | local Config = {output | + | |
- | return LuaForm.StartPrintReport(Options, | + | |
end, | end, | ||
- | function(Data) | + | |
- | Data.Report: | + | if Data.PrintMid |
- | ... | + | |
- | if Data.FirstParams.Action==PRINT_DOCUMENT | + | |
- | dokumenty_dokumenty.AfterSaveToDocumentDir(nil, "", | + | |
- | | + | |
- | return LuaForm.EndPrintReport() | + | |
end | end | ||
- | </ | + | } |
- | <code lua> | + | |
- | function | + | function |
- | | + | local idzakaz=DSI:FieldByName(" |
- | | + | local polDS = DSI:OwnerMiddleDB(): |
- | | + | |
- | if Action==PRINT_DOCUMENT then | + | |
- | FileName=dokumenty_dokumenty.BeforeSaveToDocumentDir(nil, | + | |
- | end | + | local tisk=[[ |
- | prnt:StartReport(Action, {oput=FileName, document_name=Name}) | + | <Middle Name=" |
- | report:BandDSAndByNames(" | + | < |
- | prnt:PrintReport() | + | <Table Name="zakazky_zakpol"> |
- | report:Free() | + | <Field Name=" |
- | prnt:Free() | + | <Field Name=" |
- | if Action==PRINT_DOCUMENT then | + | </ |
- | | + | </ |
- | end | + | |
+ | < | ||
+ | select z.idzakaz, z.idpartner, | ||
+ | from zakazky_zakpol zp | ||
+ | JOIN zakazky_zakazky z ON z.idzakaz = zp.idzakaz | ||
+ | where ]]..cf.ConstructWhereFromString("idzakaz; | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | ]] | ||
+ | if DEBUG_DETAIL then DEBUG_WRITE({mid=tisk}) end | ||
+ | local TiskMD=ClientSession:CreateMidFromXML(tisk) | ||
+ | if DEBUG_DETAIL and not DEBUG_NOVISIBLE then | ||
+ | local form=WindowsManager: | ||
+ | local outSP=WindowsManager:ShowFormSP(form, {Modal=true}) | ||
+ | | ||
+ | if outSP.MRCode==2 then TiskMD=TiskMD: | ||
+ | end | ||
+ | --pro save dokument musi byt otevrene DSI | ||
+ | local ds = TiskMD:FindDataSetItem("" | ||
+ | | ||
+ | | ||
end | end | ||
+ | |||
</ | </ | ||
- | **Konkrétní příklad** | + | === Metoda tisku Start/ |
<code lua> | <code lua> | ||
- | LuaForm.Func.v_faktury_faktury_reports_PrehledFakturZakPol={ | + | LuaForm.Func.v_rozpocty_rozpocty_reports_Specifikace={ |
function(Data) | function(Data) | ||
- | return | + | return |
- | Caption=enc" | + | |
- | Items={ | + | |
- | {" | + | |
- | {" | + | |
- | {" | + | |
- | } | + | |
- | | + | |
end, | end, | ||
function(Data) | function(Data) | ||
- | | + | ... |
- | | + | |
- | local Config = {output_type = Data.FirstParams.OutputType, document_name = Data.FirstParams.Name} | + | v_rozpocty_rozpocty.reports.TiskKapitol(Data.DSI, Data.Form, Data.Report, GroupPolozky) |
- | | + | |
end, | end, | ||
function(Data) | function(Data) | ||
- | | + | ... |
- | return cf.LuaFormPrintReport(Data, Data.PrintMid) | + | return cf.LuaFormEndPrintReport(Data) |
end, | end, | ||
- | finally=function(Data) | ||
- | if Data.PrintMid then Data.PrintMid: | ||
- | end | ||
} | } | ||
- | function | + | |
- | ... | + | function |
- | ... | + | ... |
- | | + | if GroupPolozky then |
+ | local md = v_rozpocty_rozpocty.reports.GetMiddlelGroupPolozky(kapDS: | ||
+ | md: | ||
+ | if md then md=md: | ||
+ | else | ||
+ | ... | ||
+ | Report: | ||
+ | ... | ||
+ | end | ||
+ | | ||
end | end | ||
</ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
==== Vložení LUA bandu do existujícího reportu ==== | ==== Vložení LUA bandu do existujícího reportu ==== | ||
lua/tisk_pomoci_lua.1656575901.txt.gz · Poslední úprava: 2022/06/30 07:58 autor: Libor Kadaník