===== Lua dialogy ===== ==== Přehled možností == local res = dlg.create({Caption="Test dialog", Encoding=encoding, Items={ {"label1", "label", "Nápis", nil, nil, "return Sender..' changed, value: '..cf.tostring(Params[Sender])"}, {"edit1", "edit", "editační pole", "", "default val"}, {"memo1", "memo", "memo pole", "", "default memo val"}, {"edit_integer", "edit", "integer editační pole", "integer", "1,123"}, {"edit_float", "edit", "float editační pole", "float", 1.123}, {"edit_currency", "edit", "currency editační pole - zaokrouhluje default hodnotu", "currency", "1.123"}, {"lookup1", "lookup", "lookup pole", "partneri_partneri:firma", "default val"}, {"lualookup1", "lualookup", "lualookup pole", "return cf.ShowMsg('LuaLookup pole')", "default val"}, {"combo1", "combo", "combo pole", "tohlesezobrazuje1=tohlesevraci1|tohlesezobrazuje2=tohlevraci2"}, {"list1", "listbox", "listbox pole", "tohlesezobrazuje1=tohlesevraci1|tohlesezobrazuje2=tohlevraci2"}, {"checkbox1", "checkbox", "checkbox pole", "", "1"}, {"calendartime1", "calendartime", "kalendář time", "", os.time()}, {"calbetweentime1", "calbetweentime", "datum od time|datum do time","From|To", {os.time(), os.time()+24*3600}}, {"calc1", "calc", "kalkulačka pole", "1.1.2005,EUR", "1000"}, {"dirdialog1", "dirdialog", "Výběr adresáře", "", "default dir"}, {"filedialog1", "filedialog", "Výběr souboru", "Filter EXE|*.exe|Filter DLL|*.dll", "default file"} }, Buttons={ {"show", "Ukaž výsledek", 18}, {DLG_CANCEL, "Storno", 19} } }) {{:lua:dialog.png|}} ==== Správná práce s datumy ==== [[lua:datetime|Odkaz]] ==== Použítí LUA a LUA dialogů v SQL ==== Příklad SQL dotazu pro zobrazení pořadí dodavatelů/odběratelů dle ceny local res = dlg.create(Caption="Výběr", Encoding=encoding, Items="datum", "calbetweentime", "datum od|datum do","From|To", "znamenko", "combo", "Odběratelé/dodavatelé","Odběratelé=1|Dodavatelé=-1", "pocet", "edit", "Vypsat prvních ... (prázdno = všechny)" ) if res.Result == "Cancel" then return [[select ' Storno' from common_nast]] end local pocet = '' if res.pocet ~= "" then pocet = [[first ]]..cf.tonumber(res.pocet) end local sql = [[select ]]..pocet..[[ prijemky.idpartner, partneri.firma, sum(ppolozky.mnozstvi * ppolozky.cena ) as cena, count(prijemky.idprijemka) as pocet from sklad_prijemky prijemky JOIN sklad_ppolozky ppolozky ON ppolozky.idprijemka = prijemky.idprijemka JOIN sklad_karty karty ON ppolozky.idskladkarta = karty.idskladkarta LEFT JOIN partneri_partneri partneri ON partneri.idpartner = prijemky.idpartner where prijemky.datum between ']]..cf.FormatSQLUnixTime(res.datumfrom)..[[' and ']]..cf.FormatSQLUnixTime(res.datumto)..[[' and prijemky.znamenko = ']]..res.znamenko..[[' group by prijemky.idpartner, partneri.firma order by 3 desc]] return sql ==== Použítí "lualookup" pole ==== Příklad použití "lualookup" pole pro výběr hodnot z navázané tabulky. Tento p říklad se používá při tisku obratové předvahy v deníku. --zobrazeni osnovy pro vyber uctu. --osnova se zobrazuje pres lualookup z dialogu --vraci oznacene ucty jako string oddeleny strednikama --Params je pole s hodnotama vsech fieldu v dialogu --Sender je jmeno fieldu, ktery akci vyvolal function ucto_denik.reports.SelectIDUcet(Params, Sender) local md=ClientSession:ActivateMid("ucto_osnova") local ds=md:FindDataSetItem("ucto_osnova") local form=WindowsManager:CreateDetailMidDBForm(md) local OutSP=WindowsManager:ShowFormSP(form, {Modal=true}) local values=form:GetSelectedRows() local str="" table.foreachi( values, function(k, v) if k ~= values.n then str = str..v..";" else --posledni (nedavat strednik) str = str..v end end) ClientSession:Passivate(md) return str end -- ucto print dialog (datum OD, DO, druh, prefix, vyber uctu) function ucto_denik.reports.UctoPrintDialog() local res = dlg.create({Caption="Zadejte rozmezí datumů, druh a prefix", Encoding=encoding, Items={ {"datum", "calbetween", "datum od|datum do","From|To"}, {"iddruh", "lookup", "Prefix druhů dokladů", "ucto_udruh:iddruh" }, {"idstred", "lookup", "Středisko", "common_stred:idstred" }, {"iducet", "lualookup", "Vyber účty - jednotlivé účty oddělené středníkem", "return ucto_denik.reports.SelectIDUcet(Params, Sender)"} }}) return res end