MGAMA - dokumentų formos

MGAMA modulyje "Dokumentai " galima dirbti su sisteminėmis ir su papildomomis formomis.

Papildomos formos aprašomos meniu punkte: "Nustatymai" -> "Dokumentų formos":

forma_01

Meniu punktą Dokumentų formos mato tik vartotojai, kuriems Rivile GAMA programoje priskirtas 9 lygis.

Apie naujos formos sukūrimą aprašyta: Naujos formos sukūrimas ir koregavimas.

Dokumento formos šablonas

Formuojamo šablono taisyklės:

  1. Šablonas aprašomas tarp žymų "app":
    <app></app>
  2. Šablone išskiriamos trys šakos:

Pavyzdys:

<app>
    <form>...</form>
    <data>...</data>
    <on_save>...</on_save>
</app>

Formos atvaizdavimas

Formos aprašymo principai:

  1. Formos pavadinimas, kuris bus matomas vartotojui, talpinamas tarp žymų "caption".
  2. Kiekviena formos eilutė atskiras objektas "row", o eilutės vaikai "schema" - elementai, kurie bus atvaizduoti.

Eilutėje negalima nurodyti daugiau nei dviejų elementų. Mobilioje versijoje bus atvaizduojama po vieną elementą eilutėje.

  1. Tarp žymų "schema" išvardinamos savybės būdingos konkrečiam elementui.
    <app>
    <form>
        <caption>{{<!-- formos pavadinimas -->}}</caption>
        <row>
            <schema>...</schema>
            <schema>...</schema>
        </row>
        <row>...</row>
        <row>...</row>
    </form>
    ...
    </app>

Elementų tipai

Elementas Aprašymas
text laisvai vedamas tekstinis laukas. Galima apriboti leidžiamų vesti simbolių skaičių.
textarea laisvai vedamas tekstinis laukas, turintis savybę rows, nurodančią, kiek eilučių bus vizualiai matoma vartotojui. Galima apriboti leidžiamų vesti simbolių skaičių.
number skaitinis laukas. Galima nurodyti leidžiamų vesti simbolių po kablelio skaičių. Galima nurodyti didžiausią ir mažiausią leidžiamas reikšmes.
select sąrašinis laukas.
checkbox žymimasis kvadratinis laukelis. Vartotojui pažymėjus, laukelyje atsiranda varnelė. Lauko reikšmė yra true arba false.
radio grupė elementų atvaizduojamų kaip maži apskritimai ir vartotojui leidžiama pasirinkti tik vieną reikšmę iš grupės.
date įvedamas arba pasirenkamas iš kalendoriaus datos laukas.
daterange įvedamas arba pasirenkamas iš kalendoriaus datų intervalo laukas.
label vartotojui rodomas kaip informacinis laukas. Nekoreguojamas.

Elementų savybės

Savybė Aprašymas Galimos reikšmės Naudojama elementams
type (privalomas) Elemento tipas text, textarea, number, select, checkbox, radio, date, dateRange, label. visiems
id Elemento id. Bus atiduodamas rezultate. visiems
caption Elemento pavadinimas - bus matomas vartotojui. visiems
value Elemento numatytoji reikšmė. visiems
disabled Jeigu reikšmė true, laukas formoje nebus koreguojamas. true, false visiems
width 1 - jei eilutėje elementas turi užimti visą ilgį.2 - jei eilutėje elementas turi užimti 50% ilgio. 1,2 visiems
data Duomenys reikalingi elementui. select, radio
rows Elemento aukštis - rodomų eilučių skaičius. textarea
decimal Galimų simbolių skaičius po kablelio. number
required Nurodžius reikšmę true nebus leidžiama išsaugoti formos, jei laukas neužpildytas true, false visiems
min Mažiausia galima reikšmė, kai type = number.
Mažiausias leistinas simbolių skaičius, kai type = text arba textarea.
Anksčiausia leistina data, kai type = date arba daterange.
number, text, textarea, date, daterange
max Didžiausia galima reikšmė, kai type = number.
Didžiausias leistinas simbolių skaičius, kai type = text arba textarea.
Vėliausia leistina data, kai type = date arba daterange.
number, text, textarea, date, daterange

Elementų savybė "data" gali būti aprašoma dviem būdais:

  1. naudojant raktažodį “context” - kai elemento reikšmės imamos iš formos šablono šakos data. Sintaksė - po raktažodžio dedamas dvitaškis ir aprašoma nuoroda. Tarpai nenaudojami.
    <data>context:app.data.vietoves</data>
  2. naudojant raktažodį “sp” - kai elemento reikšmės bus generuojamos dinamiškai naudojant procedūrą. Aprašant reikia nurodyti procedūros pavadinimą, kuri generuos reikalingą sąrašą. Sintaksė - po raktažodžio dedamas dvitaškis ir nurodomas procedūros pavadinimas. Tarpai nenaudojami.

    <data>sp:RGI_MGAMA_FORM_GET_SS_PAREIGOS</data>

    Procedūros, kuri bus naudojama sąrašo generavimui pavadinimo pradžia būtinai “RGI_MGAMA_FORM_GET_”.
    Procedūros rezultato elementai privalo turėti stulpelius - id ir name.

Formos sąrašų pildymas

Formos sąrašų aprašymo principai:

  1. Kiekvienam duomenų sąrašui suteikiamas pavadinimas. Toliau šis pavadinimas bus naudojamas formos atvaizdavimo šakoje, norint užpildyti konkretų elementą duomenimis (pavyzdžiui, app.data.padaliniai)
  2. Kiekvienas sąrašo elementas "list" turi dvi savybes "id" ir "name". Vartotojui bus matomos tik "name" reikšmės.
<app>
    ...
    <data>      
        <padaliniai>        
            <list>          
                <id>1</id>          
                <name>Administracija</name>        
            </list>        
            <list>          
                <id>2</id>          
                <name>IT skyrius</name>        
            </list>      
        </padaliniai>    
    </data>  
</app>

Saugojimo metu generuojamos sudėtinės reikšmės

Esant poreikiui formos išsaugojimo metu sugeneruoti sudėtines reikšmes, tai galima aprašyti šakoje tarp žymų "on_save".

Aprašymo principai:

  1. Elementai yra tarp žymų "params".
  2. Kiekvienas elementas turi savybes "id" ir "value".
<app>
    ...
    <on_save>
        <params>
            <id>@k42_pav</id>
            <value>(@k42_aprasymas1.value_name) (@k42_aprasymas3.value)</value>
        </params>
    </on_save>  
</app>

Sisteminės formos pavyzdys

Pavyzdyje pateiktas sisteminės formos "Prašymas dėl nuotolinio darbo " šablonas.

<app>
    <form>
        <!-- MGAMA_SS_F02 - Prašymas dėl nuotolinio darbo -->
        <caption>{{<!-- form_caption -->}}</caption>
        <row>
            <schema>
                <type>label</type>
                <id>vardas_pavarde</id>
                <caption_lt>Vardas Pavardė</caption_lt>
                <caption_en>Full name</caption_en>
                <width>2</width>
                <value>{{<!-- vardas_pavarde -->}}</value>
            </schema>
            <schema>
                <type>select</type>
                <id>@pareigos</id>
                <caption_lt>Pareigos</caption_lt>
                <caption_en>Job position</caption_en>
                <required>true</required>
                <width>2</width>
                <data>context:app.data.pareigos</data>
                <value>{{<!-- pareigos_value -->}}</value>
                <disabled>{{<!-- pareigos_disabled -->}}</disabled>
            </schema>
        </row>
        <row>
            <schema>
                <type>radio</type>
                <id>@k42_aprasymas1</id>
                <caption_lt>Vietos tipas</caption_lt>
                <caption_en>Location type</caption_en>
                <required>{{<!-- case when isnull(K41_APRASYMAS1,'')+isnull(K41_APRASYMAS2,'')+isnull(K41_APRASYMAS3,'')+isnull(K41_APRASYMAS4,'')<>'' then 'true' else 'false' end -->}}</required>
                <width>2</width>
                <data>context:app.data.tipas</data>
            </schema>
        </row>
        <row>
            <schema>
                <type>text</type>
                <id>@k42_aprasymas2</id>
                <caption_lt>Vietos pavadinimas / adresas</caption_lt>
                <caption_en>Location name / address</caption_en>
                <required>true</required>
            </schema>
        </row>
        <row>
            <schema>
                <type>dateRange</type>
                <id>@k42_aprasymas3</id>
                <caption>Laikotarpis</caption>
                <width>2</width>
                <required>true</required>
                <min>{{ left(convert(varchar(23),dateadd(day,3,getdate()),120),10) }}</min>
            </schema>
        </row>
        <row>
            <schema>
                <type>number</type>
                <id>@nuo_val</id>
                <caption>Nuo (val.)</caption>
                <width>2</width>
                <required>true</required>
                <min>0</min>
                <max>23</max>
                <value>8</value>
            </schema>
            <schema>
                <type>number</type>
                <id>@iki_val</id>
                <caption>Iki (val.)</caption>
                <width>2</width>
                <required>true</required>
                <min>0</min>
                <max>23</max>
                <value>17</value>
            </schema>
        </row>
        <row>
            <schema>
                <type>textArea</type>
                <id>@k42_aprasymas4</id>
                <caption_lt>Priežastis</caption_lt>
                <caption_en>Reason</caption_en>
                <rows>5</rows>
                <required>true</required>
            </schema>
        </row>
        <row>
            <schema>
                <type>label</type>
                <id>komentarai</id>
                <caption_lt>Pastaba</caption_lt>
                <caption_en>Note</caption_en>
                <value>{{ rtrim(cast(K41_PASTABOS as varchar(max))) }}</value>
            </schema>
        </row>
    </form>
    <data>
        <pareigos>
            {{(<!--
 select [id], [name] from #pareigos as [list] order by pri_data asc for xml auto,elements 
            -->)}}
        </pareigos>
        <tipas>
            {{(<!-- select '<list><id>1</id><name>'+dbo.RGI_F_XML_ENCODE(rtrim(K41_APRASYMAS1))+'</name></list>' where isnull(K41_APRASYMAS1,'')<>'' -->)}}
            {{(<!-- select '<list><id>2</id><name>'+dbo.RGI_F_XML_ENCODE(rtrim(K41_APRASYMAS2))+'</name></list>' where isnull(K41_APRASYMAS2,'')<>'' -->)}}
            {{(<!-- select '<list><id>3</id><name>'+dbo.RGI_F_XML_ENCODE(rtrim(K41_APRASYMAS3))+'</name></list>' where isnull(K41_APRASYMAS3,'')<>'' -->)}}
            {{(<!-- select '<list><id>4</id><name>'+dbo.RGI_F_XML_ENCODE(rtrim(K41_APRASYMAS4))+'</name></list>' where isnull(K41_APRASYMAS4,'')<>'' -->)}}
        </tipas>
    </data>
    <on_save>
        <params>
            <id>@k42_pav</id>
            <value>(@k42_aprasymas1.value_name) (@k42_aprasymas3.value) (@nuo_val.value):00-(@iki_val.value):00</value>
        </params>
    </on_save>
</app>