Zgradba izpisa
În acest subiect vom analiza câteva exemple de utilizare GetFormValue funcție.
Obținerea valorii obiectului din fereastra PANTHEON
În primul exemplu, vom scrie expresia care returnează depozitul pe facturile emise care se află în meniul programului 'Bunuri | Raport facturi emise | Facturi emise/Raport marjă de profit'. Numele ferestrei Pantheon este 'PrometObracunIzdRac', numele casetei de selectare în care selectăm depozitul este 'fWarehouse'.
[GetFormValue('PrometObracunIzdRac.fWarehouse')]
Obținerea valorii din PANTHEON Fereastra cu Document
Numele unor feronst document sunt compuse dintr-o bază și un sufix care reprezintă tipul documentului. Dacă dorim să imprimăm referentul pe emitere, notăm termenul
[GetFormValue('PrometIzdDob3000.fReferentZap')]
Acesta va returna valoarea doar în cazul tipului de document 3000. Pentru a returna valoarea pentru toate tipurile de documente, trebuie să rescriem acest cod în
[GetFormValue('PrometIzdDob'+<tbLookPoslDog."acDocType">+'.fReferentZap')]
Unde setul de date "tbLookPoslDog" nu este disponibil, putem obține numele ferestrei din numărul documentului. Pe raportul comenzilor de vânzare scriem:
[IIF(Copy(<qReportIzpisD."acKeyView">,Pos('-',
<qReportIzpisD."acKeyView">)+4,1) ='-',
GetFormValue('Naroc'+Copy(<qReportIzpisD."acKeyView">,Pos('-',
<qReportIzpisD."acKeyView">)+1,3)+'0.fReferentZap'),
GetFormValue('Naroc'+Copy(<qReportIzpisD."acKeyView">,Pos('-',
<qReportIzpisD."acKeyView">)+1,4)+'.fReferentZap'))]
Exemplu cu Dată
Funcția GetFormValue returnează data în formatul yyyy/mm/dd . Vrem să afișăm data în dd.mm.yyyy sau d.m.yyyy format.
Cel mai bun exemplu este atunci când nu există date de care ai nevoie în setul de date, există notificări de angajamente restante care sunt în program în 'Finanțe | Rapoarte | Elemente restante'.
Următoarea expresie returnează data stării în yyyy/mm/dd format:
[GetFormValue('GLOutstandingItems.edtDate')]
Termenul are, de asemenea, un dezavantaj că dacă data nu este introdusă, returnează "1900/01/01" (ceea ce nu este posibil în acest caz).
Trebuie să verificăm dacă data este introdusă înainte de a imprima cu IIF funcția:
[IIF(GetFormValue('GLOutstandingItems.edtDate')= '1900/01/01','',
GetFormValue(''GLOutstandingItems.edtDate'))]
Dacă dorim să imprimăm data în formatul dd.mm.yyyy, trebuie să schimbăm ordinea numerelor pe raport:
[IIF(GetFormValue('GLOutstandingItems.edtDate') ='1900/01/01','',
Copy(GetFormValue('GLOutstandingItems.edtDate'),9,2)+'.'+
Copy(GetFormValue('GLOutstandingItems.edtDate'),6,2)+'.'+
Copy(GetFormValue('GLOutstandingItems.edtDate'),1,4))]
Data în d.m.yyyy format este obținută prin transformarea zilei din lună și a lunii într-un număr și apoi înapoi în text:
[IIF(GetFormValue('GLOutstandingItems.edtDate') ='1900/01/01','',
IntToStr(StrToInt(Copy(GetFormValue('GLOutstandingItems.edtDate'),9,2)))
+'.'+IntToStr(StrToInt(Copy(GetFormValue('GLOutstandingItems.edtDate'),6,2)))
+'.'+Copy(GetFormValue('GLOutstandingItems.edtDate'),1,4))]
Exemplu cu Obiect non-text
The GetFormValue funcția poate fi folosită și pentru obiecte care nu reprezintă un text. În acest caz, cea mai importantă caracteristică a acestei facilități este returnată. Valoarea returnată nu este de obicei potrivită pentru imprimare directă, dar o putem folosi pe raportul în sine. De exemplu, textul este afișat în fereastră la această valoare.
Ca exemplu, analizăm un grup de butoane radio numit 'grpGroupBy' pe raportul cardului de cont, de exemplu '32D- Card de Cont' care se află în meniul programului 'Finanțe | Rapoarte | Card de Cont'. Numele ferestrei este 'GLAccountCard'. Pentru acest tip de obiect, funcția returnează proprietatea 'ItemIndex' care determină care buton este selectat. În exemplul nostru, această proprietate determină cum trebuie agregate datele și benzile de pe raport sunt ascunse. Valoarea returnată de funcție este scrisă în variabila 'nGroupBy' și apoi, în funcție de valoarea sa, ascundem benzile de pe raport, în procedura "SubjektFooterOnBeforePrint".
var nGroupBy: Integer;
...
procedură SubjektFooterOnBeforePrint(Sender: TfrxComponent);
începe
if nGroupBy <= 1 then
SubjektFooter.Visible := False;
end;
...
nGroupBy := GetFormValue('GLAccountCard.grpGroupBy');