Pogledaj uputstva za PANTHEON™

 Sadržaj
 Glavna strana- Dobrodošli u PANTHEON uputstva
[Collapse]PANTHEON
 [Collapse]PANTHEON priručnici
  [Collapse]Priručnik za PANTHEON
   [Expand]Pantheon Hosting
   [Expand]Pomoć
   [Collapse]Podešavanja
    [Expand]Subjekti
    [Expand]Identi
    [Expand]POS
    [Expand]Proizvodnja
    [Expand]Zaposleni
     Kalendar
    [Expand]Računovodstvo
    [Expand]Carina
    [Collapse]Program
     [Expand]Vrste dokumenata
     [Collapse]Ispisi u PANTHEON-u
       Podešavanja
       Vrste ispisa
       Grupisanje i numerisanje
      [Expand]Funkcije
       Radno okruženje
       Specifičnosti ispisa
       Sistemske promenljive
       Uvoz i izvoz ispisa
      [Collapse]Skripta
        "Zdravo, Svete!" Skripta
        Korišćenje promenljivih, polja baze podataka i agregatnih funkcija
        Dejstva
        Primer korišćenja "OnBeforePrint" događaja
        Štampanje zbirne sume u zaglavlju grupe
        Trenutni Ukupni Iznos
        "OnAfterData" Događaj
        Servisni objekti
        Korišćenje "Engine" objekta
       Tabele i upiti na ispisima
       Objekti
       Izrazi
     [Expand]Oblici ispisa
     [Expand]Šifarnik tekstova za vrste dokumenata
      Načini dostave
     [Expand]ARES
     [Expand]Administratorska konzola
     [Expand]Elementi kontrolne table
      Izveštaji na kontrolnoj tabli
      Ad-hoc analiza
     [Expand]Kartice poverenja
     [Expand]Izveštaji kontrolne table
     [Expand]Trenutni korisnik Ctrl - U
     [Expand]Ad-hoc analize
      SQL editor
     [Expand]Poštanska knjiga
      Klasifikacijski plan
    [Expand]Dokumentacija
   [Expand]Narudžbine
   [Expand]Roba
   [Expand]Proizvodnja
   [Expand]POS
   [Expand]Servis
   [Expand]Novac
   [Expand]Kadrovi
   [Expand]Radna površina
   [Expand]Analize
   [Expand]Korisničke strane
   [Expand]Poslovni saveti
    Dodatno
   [Expand]Plansko-analitički alat ZEUS
   [Expand]Dodatni programi
   [Expand]Obaveštenja programa
   [Expand]Zvanična mišljenja
   [Expand]Dodatni programi
   [Expand]Sistemska okolina
    Rečnik izraza
   [Expand]Zastareli produkti
  [Expand]Vodič po DataLab PANTHEON™ Farming
  [Expand]Vodič za mobilni POS
  [Expand]Vodič za PANTHEON Vet
 [Expand]PANTHEON korisnički priručnici
[Expand]PANTHEON Web
[Expand]PANTHEON Granule

Load Time: 796,858 ms
print   |
Label

Štampanje zbirne vrednosti u zaglavlju grupe

Štampanje zbirne vrednosti u zaglavlju grupe

Ova metoda se često koristi i zahteva korišćenje skripta jer je vrednost zbirne vrednosti poznata tek nakon što su svi zapisi u grupi obrađeni. Da bismo prikazali zbir 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 'Robna | 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 zbir 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) koristi se 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 := 'Zbir: ' + 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 skriptu 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, izaberite 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 skripta? 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 ne treba osloboditi memoriju po završetku skripta) može se koristiti glavna procedura skripta za inicijalizaciju promenljivih.

Kreiranje i uništavanje promenljive “List” je jednostavno. Sada hajde da vidimo kako skript 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čunati zbir 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) zbir koji odgovara trenutnoj grupi se preuzima iz “List” i prikazuje se u objektu "Sum1" da bi se prikazao zbir 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 vrednosti 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 := 'Zbir: ' + 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, ovaj skript je donekle jednostavniji. 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 jednoznačno identifikuje klijenta, na primer <tbIzpisTrenZaloga."acWarehouse">). Ako ne postoji promenljiva sa tim imenom, skript 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'.



Oceni ovu temu
Da li je ova tema korisna?
Komentari
Komentari će biti vidljivi i na forumu!