3. Ferestre, Tab-uri & Câmpuri
În fereastra Ferestre, Tab-uri & Câmpuri din meniul Dicţionarul Aplicaţiei se defineşte prezentarea tabelelor şi coloanelor în fiecare fereastră. Un tab dintr-o fereastră se referă la o singură tabelă. Câmpurile din taburile unei ferestre se referă la coloanele unei tabele.
Ferestre
În fereastra Ferestre, Tab-uri & Câmpuri se definește fiecare fereastră a sistemului. Se completează câmpurile:
Denumire - numele ferestrei, se va afişa în zona de titlu a ferestrei şi în meniul Socrate. Sistemul va sincroniza numele ferestrei cu entitatea meniu.
Tip Fereastră - determină comportamentul ferestrei atunci când este accesată. Ex:
Menţinere - toate înregistrările active sunt returnate
Tranzacţie - doar înregistrările care au fost create sau modificate azi vor fi afişate. De obicei când se lucrează cu ferestre tranzacţii (ex. Facturile) nu se doreşte afişarea tranzacţiilor de acum 2 ani.
Butonul Copiază Taburi permite copierea taburilor din ferestre deja definite.
În tab-ul Acces se introduc rolurile care au acces la fereastră.
Se poate seta la nivel de System, în fereastra cu același nume (System) informația ”Timeout Grid” și ”Timeout rapoarte/procese” ce reprezintă timpul de așteptare maxim pentru încărcarea informațiilor unui grid (ferestre sau info window) sau ale unui raport/proces. Sunt utile aceste setări în vederea protejării resurselor serverului în cazul în care apar interogări greșite ce ar duce la cererea unui volum foarte mare de date în mod inutil.
Taburi
În tabul Tab se defineşte fiecare tab a unei ferestre. Fiecare tab se referă la o singură tabelă.
Se completează câmpurile:
Denumire - numele tab-ului;
Tabelă - determină ce câmpuri sunt disponibile pentru afişare cât şi tabela care va fi updatată la adăugarea, modificarea sau ştergerea unei înregistrări în acest tab
Secvență - determină ordinea tabului în fereastră. Iniţial sistemul va incrementa secvenţa de la valoarea 10 pentru fiecare tab nou adăugat.
Nivel Tab - determină dacă tabul este o înregistrare copil sau un tab anterior.
0 - tabul este parinte
1 - tabul este copilul tabului principal
2 - tabul este copilului tabului cu nivel 1 cu secvența imediat anterioară;
Proces - se indică procesul care printează un document şi este disponibil pentru acest tab.
Single Row Layout - se bifează pentru ca la deschiderea afişarea să fie de tip înregistrarea singulară
Tab Avansat, Tab contabilitate şi Tab Traducere - se bifează dacă afişarea acestui tab va fi controlată de setările definite în Preferinţe.
Verificare Atașamente - se bifează dacă pe acest tab se va actualiza în mod dinamic iconul de ataşamente.
Afișat şi Read-Only - prin bifarea permite definirea de reguli pentru controlşul afişării şi modificarea unui tab.
Read Only Logic - dacă expresia introdusă aici este evaluată ca fiind adevărată, atunci toate informațiile din tabul respectiv devin ”read only” (needitabile), indiferent de înregistrarea pe care ești poziționat.
Read Only Logic All Fields - dacă expresia introdusă aici este evaluată ca fiind adevărată, atunci toate informațiile din tabul respectiv devin ”read only” (needitabile), dar dependent de înregistrarea pe care ești poziționat. Evaluarea expresiei se face pentru fiecare înregistrare în parte. Ca excepție de la regulă, câmpurile marcate în tabela ca fiiind ”Modificabil oricând” nu vor deveni ”read only” (râmân editabile tot timpul). În fapt, regula scrisă aici este aplicată pentru toate câmpurile din tabul respectiv ca și cum ar fi setată la nivel de coloană pe tabela aferentă.
se pot folosi expresii logice ce conțin variabile de context global (ex: @##AD_User_ID@), exact în forma aceasta (2 diezi !!!).
exemplu de obținere read only pe înregistrările introduse de către alți utilizatori decât utilizatorul logat: @##AD_User_ID@!@CreatedBy@.
Commit Warning - dacă se completează, la salvarea unei înregistrări afișate în acest tab va fi afișat mesajul completat, cu opțiunea de a readuce înregistrarea la starea inițială.
este disponibil câmpul Actualizare automată în (min:), prin care se poate seta reactualizarea automata a datelor în mod vizualizare "grid" a tabului respectiv.
se pot seta doar valori întregi, care reprezintă numărul de minute la care se face actualizarea datelor
după setarea unei valori în acest câmp, în interfață, pe tabul respectiv, va aparea o bifă, Actualizare automată, lângă butonul Refresh
valoarea implicită a acestei bife este False
pentru activarea actualizaii automate pe tab a datelor va trebui ca această bifa sa fie setata cu valoarea True
Câmpuri
În tab-ul Câmpuri se definesc câmpurile care se afişează într-un tab. Modificările efectuate în tab - ul Câmpuri devin vizibile după o resetare de cache. Dacă secvenţa introdusă este negativă înregistrările sunt ordonate descendent. Dacă menţinerea se realizează la nivel central numele, descrierea şi comentarii/ajutor sunt sincronizate automat.
Câmpurile Denumire şi Coloană sunt obligatorii. Lista de coloane disponibile pentru selecţie se bazează pe tabela definită pentru tab. Denumirea, Descrierea şi Comentarii/Ajutor se vor sincroniza din definirea coloanei. Dacă într-o anume fereastră se doreşte folosirea unei etichete diferite pentru câmp se completează manual câmpurile şi se debifează căsuţa Întreţinere centralizată
Alte atribute ale Câmpurilor care vor afecta afişarea, sunt:
Grup Câmpuri - se alege grupul din care face parte câmpul. Pentru câmpurile ce au setate un grup se poate bifa Implicit restrâns. La deschiderea unei ferestre, grupurile marcate asfel vor fi implicit restrânse.
se se pot defini câmpuri obligatorii în secțiuni implicit restrânse. Până la această versiune la salvare nu se ținea cont de obligativitatea câmpurilor respective;
Afişat - se bifează pentru afişarea câmpului. Dacă un câmp nu este necesar într-o implementare specifică se debifează
Read Only - bifa indică faptul că respectivul câmp nu poate fi modificat
Logică ReadOnly - logică specifică pentru câmp/fereastră, având aceiași sintaxă ca logica de afișare. Dacă există setată și logică pe coloană și rezultă ca fiind adevărată (true), atunci nu se mai ține cont de logica de pe câmp/fereastră.
Logică Afișare - logică specifică pentru câmp/fereastră.
reguli și exemple de operatori:
paranteze pentru stabilirea precedenței
'|' = sau
'&' = și
'=' = egal
'!' = diferit
exemple de completare:
@R_Status_ID@=1003025 | @R_Status_ID@=1003037 | @R_Status_ID@=1002693
@TokenType@!Q
@$Element_U1@=Y & @AnyUser1@=N
(@Order_Receive_Status@=NEW | @Order_Receive_Status@=STR) & @IsFreeInOut@=Y
@Inventory_Status@ = STR & (@SCWI_NoTasks@=N | @IsCompleteAllData@=Y) & @IsOrderTasksFinished@=Y
@Name@ = '' (Pentru verificare că o coloană de tip alfanumerică este nulă)
@C_Order_ID@ = 0 (Pentru verificare că o coloană de tip ID este nulă)
Secvenţa şi Acelaşi Rând - determină unde va fi afişat în fereastră
Default Focus - bifa indică că la o nouă înregistrare cursorul utilizatorului va fi poziţionat în acest câmp
Encrypted - dacă este bifa pusă atunci valorile din acest câmp nu se vor mai vedea din interfață (ex: ”********”). Această setare are efect și asupra rapoartelor ce conțin această coloană, aceasta nemaifiind afișată!
Obscure - dacă este aleasă o variantă atunci valorile din acest câmp nu se vor mai vedea din interfață în mod complet (ex: ”*******1234”). Această setare are efect și asupra rapoartelor ce conțin această coloană, aceasta nemaifiind afișată!
Tab-ul Suprascriere permite suprascrierea regulilor definite la nivel de tabelă și coloană:
Validare Dinamică - regulă de validare aditivă la regula definită pentru coloană;
Atenție: nu înlocuiește regula definită pentru coloană!
Definire Fereastră Nouă
SocrateCloud permite definirea de ferestre noi la nivel de titular. Pentru a defini o fereastră sunt necesari următorii pași:
se introduce o înregistrare nouă în fereastra Ferestre, Tab-uri & Câmpuri, localizată în meniul Dicționarul Aplicației, conform regulilor prezentate mai sus;
opțional, la nivel de fereastră, se poate utiliza butonul Copiază taburi pentru a copia tab-urile dintr-o fereastră existentă;
optional, la nivel de tab, se poate utiliza butonul Generează Câmpuri pentru a genera câmpuri pentru tab, pe baza coloanelor din tabelă sau butonul Creează Câmpuri Tab pentru a genera câmpuri pe baza unui alt tab care utilizează aceiași tabelă;
opțional, se pot adăuga câmpuri virtuale care să aducă valori din coloane ale unor entități referite. Entitățile referite sunt cele de tip combobox, care au la randul lor fereastră (au detaliere din câmp). De asemenea, mai pot fi câmpuri de tip Adresa, tip Instanță set proprietăți, tip Cont contabil.
Câmpurile virtuale:
se pot defini la nivel de titular pe ferestre customizate de entități sau documente. Pot fi adăugate și pe rapoarte și formate de tipărire;
se pot introduce atât pe master cât și pe tab-uri și subtab-uri (tab de orice nivel: 0, 1, 2) ;
În câmpul “Coloană” se precizează coloana de pe care se dorește preluarea atributului dorit;
bifa “Este câmp virtual” devine vizibilă doar dacă se alege o tabelă care permite preluarea de câmpuri virtuale;
când se pune bifa “Este câmp virtual”, se deblochează “Câmp virtual”, unde sunt disponibile spre selecție doar entitățile prezente în tabela selectată
vor fi readonly, întrucât scopul lor este de afișare a informației în fereastră, nu de modificare/introducere;
se populează cu valori după salvarea master document sau linie document (în funcție de nivelul la care au fost adăugate);
pot fi folosite în căutări, căutare avansată, sortare, grupare, etc (câmpurile virtuale apar în grid);
după definirea tuturor câmpurilor și tab-urilor, fereastra trebuie adăugată la meniul SocrateCloud prin crearea unei înregistrări corespunzătoare în fereastra Meniu;
de asemenea trebuie efectuate setările corespunzătoare la nivel de rol.
Obs:
Ferestrele custom cu Tip Fereastră "User maintained", definite de utilizatori cu procesul ”Copiază Taburi”, vor avea taburile și câmpurile copiate, traduse. Traducerea este identică cu traducerea din taburile și câmpurile ferestrei sursă.
Ferestrele custom, cu Tip Fereastră "User maintained" nu beneficiază automat de modificările, actualizările aduse ferestrelor standard de către BITSoftware, prin procesul de migrare aplicație.
Utile:
sintaxă sql pentru adăugarea de câmpuri virtuale care prezintă valorile atributelor articolelor care prin definiție au indicat un set de atribute:
SELECT ai.M_Attribute_ID
FROM M_AttributeSetInstance asi
JOIN M_AttributeInstance ai ON (ai.M_AttributeSetInstance_ID = asi.M_AttributeSetInstance_ID)
JOIN M_AttributeUse au ON (au.M_AttributeSet_ID = asi.M_AttributeSet_ID AND au.M_Attribute_ID = ai.M_Attribute_ID)
WHERE asi.M_AttributeSetInstance_ID = M_AttributeInstance.M_AttributeSetInstance_ID
ORDER BY au.SeqNo
LIMIT 1 OFFSET 0
unde ”OFFSET 0” va returna valoarea din primul atribut alocat articolului, ”OFFSET 1” va returna valoarea celui de al 2-lea atribut al articolului, șamd.