15. November 2016 16:23
Value Entry, Header (1) - OnPreSection()
IF EinzelnMand = TRUE THEN BEGIN
CurrReport.SHOWOUTPUT(TRUE);
END ELSE BEGIN
CurrReport.SHOWOUTPUT(FALSE);
END;
SETRANGE("Item No.",Item."No.");
SETCURRENTKEY("Item No.","Posting Date",
"Item Ledger Entry Type","Entry Type","Variance Type","Item Charge No.","Location Code","Variant Code");
Anzahl:=0;
IF "Value Entry".FIND('-') THEN
REPEAT
Anzahl+="Invoiced Quantity";
Gesamt+="Invoiced Quantity";
UNTIL "Value Entry".NEXT(+1)=0;
15. November 2016 16:55
15. November 2016 17:31
enh hat geschrieben:Du rechnest in der Header Section, der Code gehört aber eher in den OnAfterGetRecord Trigger. Der macht auch das REPEAT dann überflüssig, wofür ein FINDSET besser wäre.
15. November 2016 19:11
navCH hat geschrieben:Bräuchte vielmehr eine Berechnung der Artikel pro alle Mandanten!?
16. November 2016 11:29
sweikelt hat geschrieben:jap - z.B. per Array, aber je nachdem wieviele Artikel ihr habt, könntet ihr dann an die Grenze stoßen:
Maximum number of elements in an array variable
1,000,000
---------
du könntest bsp im Integer-DataItem nochmal alle Artikel & Wertposten aller anderen Mandanten durchprüfen Stichwort CHANGECOMPANY...-> die Artikel die du willst, hast du dir ggf. vorher schonmal im Item-DataItem weggepuffert ( in eine Temp-Itemtable als Beispiel)
16. November 2016 12:21
21. November 2016 12:42
Integer - OnPreDataItem()
i:=1;
k:=1;
IF tempItem.FIND('-') THEN BEGIN
REPEAT
GesamtAlle:=0;
valueEnt.SETFILTER("Item No.",tempItem."No.");
IF valueEnt.FIND('-') THEN BEGIN
REPEAT
GesamtAlle+=valueEnt."Invoiced Quantity";
UNTIL valueEnt.NEXT(+1)=0;
END;
AnzahlFinal[k]:=GesamtAlle;
k:=k+1;
UNTIL tempItem.NEXT(+1)=0;
END;
valueEnt.RESET;
IF EinzelnMand = FALSE THEN BEGIN
tempItem.FIND('-');
isAllItems:=FALSE;
END;
Integer - OnAfterGetRecord()
IF EinzelnMand = FALSE THEN BEGIN
IF isAllItems THEN CurrReport.BREAK;
Liste:=tempItem."No.";
Descript:=tempItem.Description;
AnzahlAusgabe:=AnzahlFinal[i];
i:=i+1;
IF tempItem.NEXT = 0 THEN isAllItems:=TRUE;
END ELSE BEGIN
CurrReport.BREAK;
END;
21. November 2016 13:22
navCH hat geschrieben:Hallo.
habe einen weg gefunden die Anzahl pro Artikel im Integer-Dataitem auszurechnen und auszugeben.
Allerdings noch ohne Changecompany, da überlege ich noch wo.
21. November 2016 14:27
elTorito hat geschrieben:Nachdem alle Artikel für den ersten Mandant durchgelaufen sind ? :)
21. November 2016 15:21
21. November 2016 15:41
elTorito hat geschrieben:Warum nicht pro Mandant eine TempTabelle füllen, und wenn alle gefüllt sind dann erst Gesamtwerte zusammenrechnen?
21. November 2016 16:30
Integer - OnPreDataItem()
Company.Name:='Name';
i:=1;
k:=1;
IF tempItem.FIND('-') THEN BEGIN
REPEAT
GesamtAlle:=0;
IF comp.FIND('-') THEN
REPEAT
valueEnt.SETFILTER("Item No.",tempItem."No.");
IF valueEnt.FIND('-') THEN BEGIN
REPEAT
GesamtAlle+=valueEnt."Invoiced Quantity";
UNTIL valueEnt.NEXT(+1)=0;
END;
valueEnt.CHANGECOMPANY(comp.Name);
UNTIL comp.NEXT(+1)=0;
AnzahlFinal[k]:=GesamtAlle;
k:=k+1;
UNTIL tempItem.NEXT(+1)=0;
END;
valueEnt.RESET;
IF EinzelnMand = FALSE THEN BEGIN
tempItem.FIND('-');
isAllItems:=FALSE;
END;
Integer - OnAfterGetRecord()
IF EinzelnMand = FALSE THEN BEGIN
IF isAllItems THEN CurrReport.BREAK;
Liste:=tempItem."No.";
Descript:=tempItem.Description;
AnzahlAusgabe:=AnzahlFinal[i];
i:=i+1;
IF tempItem.NEXT = 0 THEN isAllItems:=TRUE;
END ELSE BEGIN
CurrReport.BREAK;
END;