Pogledaj upute za PANTHEON™

 Categories
 Početna stranica
[Collapse]PANTHEON
 [Collapse]PANTHEON priručnici
  [Expand]Vodič kroz Datalab PANTHEON Farming
  [Expand]Vodič za mobilni POS
  [Collapse]Vodič po DataLab PANTHEON™-u
   [Expand]Pomoć
   [Collapse]Postavke
    [Expand]Dokumentacija
    [Expand]POS
    [Expand]Dokumentacija-staro
    [Expand]Redak s naredbama
    [Expand]Dokumentacija
    [Expand]Subjekti
    [Expand]Identi
    [Expand]Proizvodnja
    [Expand]Zaposleni
     Kalendar - Vrste zapisa
    [Expand]Računovodstvo
    [Expand]Carina
    [Collapse]Program
     [Collapse]Ispisi u PANTHEONU
      [Collapse]Oblici ispisa
        Prijenos ispisa u druge baze
        Postavke u Administrativnoj Ploči
        Izvoz oblika ispisa
        Uvoz oblika ispisa
        Prečac za ispis
       [Expand]Izvještaji Registar
        Pregled ispisa
       [Expand]Izvještajni dizajner
        Dupliciranje ispisa i mijenjanje tipa ispisa
       [Expand]Izrada Izvještaja
       [Expand]Grupe i Agregati
       [Expand]Poruke pri oblikovanju ispisa
       [Expand]Oblikovanje ispisa
       [Expand]Formatiranje i Isticanje
        Ugniježdene izvještaje (podizvještaji)
       [Expand]Specifičnosti ispisa u PANTHEON-u
       [Collapse]Scenarij
         "Pozdrav, svijete!" Skripta
         Korištenje varijabli, polja baze podataka i agregatnih funkcija
         Korištenje izvještajnih objekata u skripti
         Dogodci
         Primjer korištenja "OnBeforePrint" događaja
         Ispisivanje zbroja grupe u zaglavlju grupe
         Trenutni Zbroj
         "OnAfterData" Događaj
         Servisni objekti
         Koristeći "Engine" objekt
        [Expand]PANTHEON Funkcije za FastReport
        [Expand]Primjeri s Tablicama i Upitima
        Razmatranja o dizajnu izvještaja
       Radno okruženje
     [Expand]Kartice povjerenja
     [Expand]Knjiga pošte
     [Expand]Kartice vjernosti
     [Expand]Ad-hoc analize
     [Expand]Vrste dokumenata
      Tekstovi za dokumente
      Načini dostave
      Izvještaji nadzorne ploče
      Ad-hoc analiza
     [Expand]Izvještaji nadzorne ploče
     [Expand]ARES
      SQL urejevalnik
     [Expand]Administratorska konzola
     [Expand]Zamijeni korisnika Ctrl - U
     [Expand]Elementi nadzorne ploče
   [Expand]Narudžbe
   [Expand]Roba
   [Expand]Proizvodnja
   [Expand]Servis
   [Expand]POS
   [Expand]Novac
   [Expand]Kadrovi
   [Expand]Radna površina
   [Expand]Analize
   [Expand]Plansko-analitički alati ZEUS
   [Expand]Poruke programa
   [Expand]Dodatni programi
   [Expand]Sistemska okolina
   [Expand]Dodatni programi
   [Expand]Stari proizvodi
    Riječnik pojmova
  [Expand]Vodič po PANTHEON Vet
 [Expand]PANTHEON korisnički priručnici
[Expand]PANTHEON Web
[Expand]PANTHEON Granule

Load Time: 1328,1379 ms
print   |
Label

Ispisivanje zbroja grupe u zaglavlju grupe

Ispisivanje zbroja grupe u zaglavlju grupe

Ova metoda se često koristi i zahtijeva korištenje skripte jer je vrijednost zbroja grupe poznata tek nakon što su svi zapisi u grupi obrađeni. Da bismo prikazali zbroj u zaglavlju grupe (tj. prije nego što se grupa ispiše u izvještaj) koristi se sljedeći algoritam:

- uključite opciju izvještaja s dva prolaza (“Izvještaj > Opcije...” stavka iz izbornika)

- u prvom prolazu, izračunajte zbrojeve za svaku grupu i spremite ih u niz

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

 Pokažimo dvije metode za izvršavanje ovog zadatka. Prvo stvorite klon izvještaja '147 - Stanje zaliha na datum po skladištima i stavkama'​ koji se može pronaći u izborniku programa 'Roba | Izvještaji o zalihama | Trenutne zalihe'.

Omogućite dvostruki prolaz u postavkama izvještaja (“Izvještaj > Opcije...” stavka iz izbornika). U uređivaču benda “GroupHeader” unesite tbIzpisTrenZaloga."acWarehouse" polje podataka. Povežite podatkovni bend s izvorom podataka “Group” i zatim rasporedite neke objekte na sljedeći način:

Za prikaz zbroja koristimo obojene objekte u dizajnu. Nazvali smo ih "Sum1" i "Sum2".

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

Prva metoda.

Koristit ćemo klasu "TStringList" kao niz za pohranu zbrojeva - pohranjivat ćemo numeričke vrijednosti kao stringove. Prva stavka u StringListu odgovarat će zbroju prve grupe, i tako dalje. Cjelobrojna varijabla (koju ćemo povećavati nakon ispisa 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 := 'Zbroj: ' + 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 smo događaje koristili. To su: “Izvještaj.OnStartReport”, “Izvještaj.OnStopReport”, "Page1.OnBeforePrint", "hSkladHeader1.OnBeforePrint" i "fSklad.OnBeforePrint". Prva dva događaja se pozivaju na početku i na kraju izvještaja. Da biste stvorili rukovatelje za ova dva događaja, odaberite objekt “Izvještaj” u padajućem popisu inspektora objekata i njegove će se postavke pojaviti u inspektoru objekata. Zatim prebacite se na karticu “Događaji” inspektora objekata i stvorite rukovatelje.

Zašto nismo stvorili varijablu “List” u glavnoj proceduri skripte? Stvorili smo je u događaju "OnStartReport" jer se dinamički stvorene varijable trebaju uništiti nakon što je izvještaj završen. Logično je stvoriti dinamičke varijable u događaju “OnStartReport” i uništiti ih u događaju “OnStopReport”. U drugim slučajevima (kada nije potrebno osloboditi memoriju nakon završetka skripte) može se koristiti glavna procedura skripte za inicijalizaciju varijabli.

Stvaranje i uništavanje varijable “List” je jednostavno. Sada pogledajmo kako skripta radi. Na početku stranice brojač za trenutnu grupu (varijabla “i”) se resetira na nulu i povećava se nakon što je svaka grupa ispisana (u događaju “GroupFooter1.OnBeforePrint”). Izračunati zbroj se dodaje u “List” u ovom događaju prije nego što se brojač poveća. Događaj “GroupHeader1.OnBeforePrint” ne radi ništa tijekom prvog prolaza (ako je uvjet “Engine.FinalPass”) ali tijekom drugog prolaza (kada je “List” ispunjen vrijednostima) zbroj koji odgovara trenutnoj grupi se dohvaća iz “List” i ispisuje se u objekt "Sum1" kako bi se prikazao zbroj u zaglavlju grupe. U završenom izvještaju, pojavljuje se na sljedeći način:

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

Druga metoda.

Koristit ćemo kolekciju varijabli izvještaja kao niz za pohranu zbrojeva grupa. Zapamtite da se varijablama izvještaja pristupa putem funkcija “Get” i “Set”. Korištenje ovih funkcija također nas spašava od potrebe da eksplicitno stvaramo i uništavamo ove varijable. Naša skripta će izgledati ovako:

procedure  hSkladOnBeforePrint(Sender: TfrxComponent);

begin

  if Engine.FinalPass then

    Sum2.Text := 'Zbroj: ' + 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 vidjeti, ova skripta je donekle jednostavnija. Kod u rukovatelju “fSklad.OnBeforePrint” postavlja vrijednost varijable koja ima ime izvedeno iz broja klijenta (ili se može koristiti bilo koji drugi identifikator koji nedvosmisleno identificira klijenta, na primjer <tbIzpisTrenZaloga."acWarehouse">). Ako ne postoji varijabla s tim imenom, skripta je automatski stvara; inače, ako već postoji, tada se njezina vrijednost ažurira. U rukovatelju “hSklad.OnBeforePrint” dohvaća se vrijednost odgovarajuće varijable.

Završeni izvještaj pojavljuje se na sljedeći način:

Druga metoda ne radi za višestruko grupiranje i za prikaz višestrukih zbrojeva polja u zaglavlju grupe.

Primjer nekoliko zbrojeva polja u zaglavlju grupe nalazi se u izvještaju '32A - Kašnjenja u plaćanju - Po povezanim dokumentima' koji se nalazi u izborniku programa 'Financije | Izvještaji | Kašnjenja u plaćanju'.



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