Přiřazuje Middle k Formě a specifikuje možné filtry pro Formu. Lze zde také definovat tzv. ShortCut pro variantní Lookupy v datamodelu.
QuickPopis:Popis=@filter_FilterPopis|Param1=z,Param2=y
AcceptLocate=1
(potom mu prijdou parametry LocateFields a LocateValues)Do sekce <Filters> se doplní následující řádek s textem popisu filtru a LUA kódem vracejícím string pro where klasuli SQL dotazu. Oddělovač polí je znak =. Je nutno pouzivat prefixy tabulek.
Příklad:
<!DOCTYPE FormRegister SYSTEM "../system/formregister.dtd"> <FormRegister> <Form Name="rozpocty_rozpocty"> <Filters> IDRozp IDDruh IDZakazka IDPartner IDCen IDUzivatele Počítače nad 100tis.=@return [[rozpocty_rozpocty.iddruh="poc" and rozpocty_rozpocty.CenaCelkem>100000]] </Filters> </Form> </FormRegister>
Nebo po novu pomocí xml můžeme nadefinovat i caption a default hodnoty po vložení řádku. Aby nevypadl z rozsahu.
Počítače nad 100tis.=@return filter.create([[rozpocty_rozpocty.iddruh="poc" and rozpocty_rozpocty.CenaCelkem>100000]], "Počítače > 100000", {IDDruh="poc"})
Nebo je navíc možno definovat vlastni záložky a používat je jako vstup do naší funkce. Demo: v akcích vytvoříme fiktivní filtr, který filtruje najednou IDDruh a IDStav s nastavením záložek na 'xxx' a 'yyy'. Při přepnutí na tento filtr je parametr Folder=nil a žádná záložka není vybrána, v tomto případě nevyhoví žádný řádek. Až uživatel cvakne na záložku, tak do Folder dostaneme string 'xxx' nebo 'yyy' a vytvoříme filtr.
Dvojitý filtr=@return v_partneri_akce.DvojityFilter(DSI, Form, Folder)
A v souboru v_partneri_akce.lua si nadefinujeme funkci:
function v_partneri_akce.DvojityFilter(DSI, Form, Folder) local s = cf.tostring(Folder) local ws = '0=1' if Folder then ws=string.format("partneri_akce.IDDruh='%s' and partneri_akce.IDStav='%s'", s, s) end return filter.create(ws, string.format("%s pokus", s), {IDDruh=s, IDStav=s}, {'xxx', 'yyy'}, s) end