Zugriff auf Cun1 habe ich, geht das nur dort in meinem Fall?
Ja
Wann genau wird die Cun1 Funktion FindPrinter aufgerufen?
Der wird vom Report.RUN aus dem System heraus aufgerufen.
Deine Funktion in muss also vor dem Aufruf von Report.RUN in CU1 die Parameter setzen. Da CU1 eine SingleInstance- Codeunit ist, kannst du CU1 lokal definieren, und die Parameter setzten. Das System wird dann auf die Werte Zugriff haben.
Würde nur ungern die Standardfunktion "FindPrinter" modifizieren, wenn sich das vermeiden lässt.
Kann ich verstehen, ist aber die einzige Möglichkeit
Der Aufruf:
- Code: Alles auswählen
CU1.Setparam(USERID);
Report.RUN
die Funtion in CU1 (GlobalUserid ist eine globale Varible von Typ Code50):
- Code: Alles auswählen
Function Setparm(pUserID:Code[50])
BEGIN
GlobalUserID := pUserID;
END;
die Funktion FindPrinter benötigt eine lokale Variable LocalUserid:
- Code: Alles auswählen
BEGIN
LocalUserid := GlobalUserID; // diese zwei Zeilen sorgen dafür das GlobalUserid beim nächsten Aufruf von Report.RUN garantiert wieder gelöscht ist, egal ob ein Fehler auftritt oder nicht
GlobalUserid := '';
if LocalUserid = '' THEN
LocalUserid :=USERID;
CLEAR(PrinterSelection);
IF NOT PrinterSelection.GET(LocalUserid,ReportID) THEN
IF NOT PrinterSelection.GET('',ReportID) THEN
IF NOT PrinterSelection.GET(LocalUserid,0) THEN
IF PrinterSelection.GET('',0) THEN;
EXIT(PrinterSelection."Printer Name");
END
Du musst aber sicherstellen das du CU1.Setparm unmittelbar vor JEDEM zu ändernden Report.RUN aufrufst, damit die Userid immer gelöscht wird, bevor du einen anderen Report aufrufst, oder ein Fehler passieren kann.
GruĂź Fiddi
GruĂź Fiddi