Pogledaj uputstva za PANTHEON™

 Categories
 Početna stranica - PANTHEON uputstva
[Collapse]PANTHEON
 [Collapse]PANTHEON priručnici
  [Expand]Vodič po Datalab PANTHEON FarmAccounting
  [Expand]Vodič po PANTHEON Retail
  [Collapse]Vodič po DataLab PANTHEON™
   [Expand]Pomoć
   [Collapse]Postavke
    [Expand]Subjekti
    [Expand]Artikli
    [Expand]POS
    [Expand]Proizvodnja
     Kalendar
    [Expand]Zaposleni
    [Expand]Računovodstvo
    [Expand]Carina
    [Collapse]Program
     [Expand]Vrste dokumenata
     [Collapse]Ispisi u PANTHEON-u
       Prenos ispisa u druge baze
       Prenos ispisa u druge baze
       Postavke u Administrativnom Panelu
       Izvoz oblika ispisa
       Uvoz oblika ispisa
       SQLI i ispisi $
       Prečica za ispis
      [Expand]Izvještaji Registar
       Pregled štampe
       Dupliciranje ispisa i mijenjanje tipa ispisa
      [Expand]Upotreba izraza SQLEXP u ispisima $
      [Expand]Izvještajni dizajner
      [Expand]Poruke pri oblikovanju ispisa
      [Expand]Izrada Izvještaja
      [Expand]Grupacije i Agregati
      [Expand]Oblikovanje ispisa $
      [Expand]Formatiranje i Isticanje
       Ugniježdene Izvještaje (Podizvještaji)
       Specifičnosti ispisa u PANTHEON-u
      [Collapse]Scenario
        "Zdravo, Svijete!" Skripta
        Korištenje varijabli, polja baze podataka i agregatnih funkcija
        Dešavanja
        Primjer korištenja "OnBeforePrint" događaja
        Štampanje grupnog zbira u grupnom zaglavlju
        Trenutni Ukupni Iznos
        "OnAfterData" Događaj
        Servisni objekti
        Korištenje "Engine" objekta
       [Expand]PANTHEON Funkcije za FastReport
        Primjeri sa Tabelama i Upitima
     [Expand]Tekstovi za dokumente
      Načini dostave
     [Expand]Kartice povjerenja
     [Expand]Elementi nadzorne ploče
     [Expand]Administratorska konzola
      Izvještaji na kontrolnoj tabli
     [Expand]Izvještaji nadzorne ploče
      Ad-hoc analiza
     [Expand]Ares
     [Expand]Trenutni Korisnik Ctrl - U
      SQL uređivač
     [Expand]Ad-hoc analize
    [Expand]Dokumentacija
    [Expand]Dokumentacija
    [Expand]Zamjena korisnika
   [Expand]Narudžbe
   [Expand]Roba
   [Expand]Proizvodnja
   [Expand]POS
   [Expand]POS
   [Expand]Servis
   [Expand]Novac
   [Expand]Kadrovi
   [Expand]Radna površina
   [Expand]Analize
   [Expand]Programske poruke
   [Expand]Dodatni programi
   [Expand]Stari proizvodi
   [Expand]Službena objašnjenja
   [Expand]Dodatni programi
   [Expand]Riječnik izraza
  [Expand]Vodič po PANTHEON VET
 [Expand]PANTHEON korisnički priručnici
[Expand]PANTHEON Web
[Expand]PANTHEON Granule
[Expand]Korisničke stranice

Load Time: 875,0262 ms
print   |
Label

Štampanje zbirne sume u zaglavlju grupe

Štampanje zbirne sume u zaglavlju grupe

Ova metoda se često koristi i zahteva korišćenje skripte jer je vrednost zbirne sume poznata tek nakon što su svi zapisi u grupi obrađeni. Da bi se prikazala suma u zaglavlju grupe (tj. pre nego što se grupa prikaže u izveštaju) koristi se sledeći algoritam:

- uključite opciju izveštaja sa dva prolaza (“Izveštaj > Opcije...” stavka u meniju)

- u prvom prolazu, izračunajte sume za svaku grupu i sačuvajte ih u nizu

- u drugom prolazu, izdvojite vrednosti iz niza i prikažite ih u zaglavljima grupa

 Prikažimo dve metode za izvršavanje ovog zadatka. Prvo kreirajte klon izveštaja '147 - Stanje zaliha na datum po skladištima i stavkama'​ koji se može naći u meniju programa 'Robni | Izveštaji o zalihama | Trenutne zalihe'.

Omogućite dvostruki prolaz u podešavanjima izveštaja (“Izveštaj > Opcije...” stavka u meniju). U editoru benda “GroupHeader”, unesite tbIzpisTrenZaloga."acWarehouse" polje podataka. Povežite podatkovni bend sa izvorom podataka “Grupa” i zatim rasporedite neke objekte na sledeći način:

Da bismo prikazali sumu koristimo obojene objekte u dizajnu. Nazvali smo ih "Sum1" i "Sum2".

U objektu nazvanom "Sum1" biće prikazan rezultat prve metode, a uobjektu nazvanom "Sum2" biće prikazan rezultat druge metode.

Prva metoda.

Koristićemo klasu "TStringList" kao niz za čuvanje suma - čuvaćemo numeričke vrednosti kao stringove. Prva stavka u StringList-u će odgovarati sumi prve grupe, i tako dalje. Celobrojna promenljiva (koju ćemo inkrementirati nakon štampanja svake grupe) se koristi za izračunavanje indeksa grupe.

Naš skript će izgledati ovako:

var

   List: TStringList;

   i: Integer;

procedure OnStartReport(Sender: TfrxComponent);

begin

  List := TStringList.Create;

end;

procedure OnStopReport(Sender: TfrxComponent);

begin

  List.Free;

end;

procedure Page1OnBeforePrint(Sender: TfrxComponent);

begin

  i := 0;

end;

procedure  hSkladOnBeforePrint(Sender: TfrxComponent);

begin

  if Engine.FinalPass then

    Sum1.Text := 'Suma: ' + List[i];

end;

procedure fSkladOnBeforePrint(Sender: TfrxComponent);

begin

  if not Engine.FinalPass then

    List.Add(FormatFloat('#,##0.00',SUM(<tbIzpisTrenZaloga."ZALVREDNOST">, Detail)));

  Inc(i);

end;

begin

 

end.

Imena procedura u skripti pokazuju koje događaje smo koristili. Oni su: “Izveštaj.OnStartReport”, “Izveštaj.OnStopReport”, "Page1.OnBeforePrint", "hSkladHeader1.OnBeforePrint" i "fSklad.OnBeforePrint". Prva dva događaja se pozivaju na početku i na kraju izveštaja. Da biste kreirali rukovaoce za ova dva događaja, odaberite objekat “Izveštaj” u padajućem meniju inspektora objekata i njegovi svojstva će se pojaviti u inspektoru objekata. Zatim pređite na karticu “Događaji” inspektora objekata i kreirajte rukovaoce.

Zašto nismo kreirali promenljivu “List” u glavnoj proceduri skripte? Kreirali smo je u događaju "OnStartReport" jer se dinamički kreirane promenljive treba uništiti nakon što je izveštaj završen. Logično je kreirati dinamičke promenljive u događaju “OnStartReport” i uništiti ih u događaju “OnStopReport”. U drugim slučajevima (kada nije potrebno osloboditi memoriju po završetku skripte) može se koristiti glavna procedura skripte za inicijalizaciju promenljivih.

Kreiranje i uništavanje promenljive “List” je jednostavno. Sada hajde da vidimo kako skripta funkcioniše. Na početku stranice, brojač za trenutnu grupu (promenljiva “i”) se resetuje na nulu i inkrementira se nakon što je svaka grupa štampana (u događaju “GroupFooter1.OnBeforePrint”). Izračunata suma se dodaje u “List” u ovom događaju pre nego što se brojač inkrementira. Događaj “GroupHeader1.OnBeforePrint” ne radi ništa tokom prvog prolaza (ako je uslov “Engine.FinalPass”) ali tokom drugog prolaza (kada je “List” popunjen vrednostima) suma koja odgovara trenutnoj grupi se preuzima iz “List” i prikazuje se u objektu "Sum1" da bi se prikazala suma u zaglavlju grupe. U završenom izveštaju, pojavljuje se na sledeći način:

Ovaj algoritam je prilično jednostavan. Međutim, može se pojednostaviti.

Druga metoda.

Koristićemo kolekciju izveštajnih promenljivih kao niz za čuvanje zbirnih suma grupa. Zapamtite da se izveštajne promenljive pristupaju putem funkcija “Get” i “Set”. Korišćenje ovih funkcija nas takođe štedi od potrebe da eksplicitno kreiramo i uništavamo ove promenljive. Naš skript će izgledati ovako:

procedure  hSkladOnBeforePrint(Sender: TfrxComponent);

begin

  if Engine.FinalPass then

    Sum2.Text := 'Suma: ' + FormatFloat('#,##0.00', Get(<tbIzpisTrenZaloga."acWarehouse">));

end;

procedure GroupFooter1OnBeforePrint(Sender: TfrxComponent);

begin

  Set(<tbIzpisTrenZaloga."acWarehouse">, SUM(<tbIzpisTrenZaloga."ZALVREDNOST">, Detail));

end;

begin

 

end.

Kao što možete videti, ova skripta je donekle jednostavnija. Kod u rukovaocu “fSklad.OnBeforePrint” postavlja vrednost promenljive koja ima ime izvedeno iz broja klijenta (ili se može koristiti bilo koji drugi identifikator koji nedvosmisleno identifikuje klijenta, na primer <tbIzpisTrenZaloga."acWarehouse">). Ako ne postoji promenljiva sa tim imenom, skripta je automatski kreira; inače, ako već postoji, njena vrednost se ažurira. U rukovaocu “hSklad.OnBeforePrint” se preuzima vrednost odgovarajuće promenljive.

Završeni izveštaj se pojavljuje na sledeći način:

Druga metoda ne funkcioniše za višestruko grupisanje i za prikazivanje više suma polja u zaglavlju grupe.

Primer nekoliko suma polja u zaglavlju grupe je u izveštaju '32A - Kašnjenja u plaćanju - Po povezanim dokumentima' koji se nalazi u meniju programa 'Finansije | Izveštaji | Kašnjenja u plaćanju'.



Rate this topic
Was this topic usefull?
Comments
Comment will also bo visible in forum!