Suma wyrażenia ze zbioru rekordów
Przykładowy skrypt


Przykład pokazuje w jaki sposób można utworzyć skrypt wyliczający sumę wyrażenia dla zadanego zbioru.


Założenia:

W module Media na wybranym zasobie mamy zestaw liczników.

W tych licznikach wykorzystujemy pole KLASA do przechowywania identyfikatora węzła.

Chcemy wyliczyć sumę danej rozliczeniowej węzła dla węzłów określonych przez te liczniki.


Parametry:


Nazwa skryptu: 'Suma danej rozliczeniowej węzła'

pZAS - identyfikator zasobu

pDRW - identyfikator danej rozliczeniowej węzła

pDATA - data/na dzień

Kod:


! Zebranie pola MEL:KLASA w TPS
USTAW('MEL', T:GatherRanged(163,'MEL:KeyZasTypNr','MEL:id_zas='&PAR('pZAS')&'|MEL:Typ=ZW|MEL:NrLicz=','MEL:id_zas='&PAR('pZAS')&'|MEL:Typ=ZW|MEL:NrLicz=z','MEL:klasa','LENC(MEL:Klasa)>0') )
! Zebranie pola MEL:KLASA w SQL
!SQL2FS('SELECT KLASA FROM ME_LICZNIKI__MEL WHERE ID_ZAS='&PAR('pZAS')&' AND TYP=''ZW''')
! Wyliczenie sumy
ECHO( LOOP( PAR('MEL') ,'DanaRozliczeniowaWezla3(I,'&PAR('pDRW')&','&PAR('pDATA')&')','I','SUM') )

Przykładowe wywołanie:


SKRYPT('Suma danej rozliczeniowej węzła','PZAS='&ZAS:ID_ZAS&'|PDRW=1|PDATA='&GLO:DataAkt)

Dodatkowe informacje:


Jeżeli pole KLASA zawierałoby kod węzła (nie zalecane), to potrzebna jest konwersja z kodu (i typu węzła) na identyfikator:


ECHO( LOOP( PAR('MEL') ,'DanaRozliczeniowaWezla3( DajIDWezla(ZAS:ID_ADMG,I,'ZW') ,'&PAR('pDRW')&','&PAR('pDATA')&')','I','SUM') )


Funkcja T:GatherRanged zadziała również w przypadku SQL, ale będzie działać nieefektywnie (wolno).


---