[Gelöst] Request Form NICHT überspringen?

25. August 2010 14:29

Folgendes Problem hat sich bei mir jetzt ergeben:

Wir haben eine Lösung, die in den Requestforms der Belege die Druckersteuerung enthält(Anzahl der Kopien, Druckerschacht-auswahl usw). Diese funktioniert auch wunderbar, nur bei Gutschriften z.B. leider nicht. Durch die Schaltfläche "Buchen und Drucken" in der Einkaufsgutschrift werden die Optionen komplett übersprungen, womit keine Auswahl möglich ist. Auch aktivierte Savevalues sind nicht möglich, da ich diese wegen anderer Anpassungen abschalten musste.

Gibt es eine Möglichkeit, diese Requestform dennoch vor dem Druck anzeigen zu lassen?

Gruß, und vielen Dank schonmal
Zuletzt geändert von Lithium am 27. August 2010 13:47, insgesamt 1-mal geändert.

Re: Request Form NICHT überspringen?

25. August 2010 15:00

Dazu müsste man wissen, wie diese "Lösung" umgesetzt worden ist. Scheinbar wurde sie nicht sauber in alle Belege integriert.
Die Art des Reportaufrufs (mit den Möglichkeiten, sich reinzuhängen) im Standard ist bei den Einkaufs- und Verkaufsbelegen ("Buchen und Drucken") identisch.

Re: Request Form NICHT überspringen?

26. August 2010 08:44

Lithium hat geschrieben:Gibt es eine Möglichkeit, diese Requestform dennoch vor dem Druck anzeigen zu lassen?

Ja, erst nur Buchen, dann Drucken.

Ich vermute, das Problem ist SaveValues. Wenn du den Gutschriftsdruck einmal ausführst und hier deine Werte einträgst, dann sollte das (bei SaveValues=Yes) in der zup-Datei gespeichert werden. D.h. bei einem Aufruf des gleichen Reports vom gleichen Rechner aus unter dem gleichen Benutzer ohne die Request Form würden die zuletzt verwendeten Werte übernommen werden. Warum hast du denn SaveValues deaktiviert?

Re: Request Form NICHT überspringen?

26. August 2010 11:58

Ich habe hier mal den Code des Reports:

Code:
Im CopyLoop - OnPreDataItem

NoOfLoops := ABS(NoOfCopies) + 1; // NoOfCopies = Eingabe in Requestform
CopyText := '';
SETRANGE(Number,1,NoOfLoops);


Code:
Im CopyLoop - OnAfterGetRecord

IF Number > 1 THEN
  CopyText := Text003; // Text003 = KOPIE
CurrReport.PAGENO := 1;

IF PaperSourceSelected THEN BEGIN
  IF Number = 1 THEN BEGIN
    CurrReport.PAPERSOURCE(PapersourceOriginal); //Schachtauswahl mit Briefpapier
  END ELSE BEGIN
    CurrReport.PAPERSOURCE(PapersourceCopy);     //Schachtauswahl mit Normalpapier
  END;
END;


Die defaultvalues habe ich deaktiviert weil es oft vorkam, dass die Benutzer einmal unter einer anderen Einstellung drucken, und sich Nav diese Einstellung eben merkt. In dem Fall die Briefpapierwahl.

In Form 44 wird halt über "Buchen und drucken" ausgelöst, das soll auch beibehalten werden. Der Aufruf geht direkt an eine Codeunit im OnPush:

Code:
IF ApprovalMgt.PrePostApprovalCheck(Rec,PurchaseHeader) THEN
  CODEUNIT.RUN(CODEUNIT::"Sales-Post + Print",Rec);


Diese Codeunit(82) überspringt die Requestform, und dort ist meiner Meinung nach der wunde Punkt. Ich nehme an das ein Report die Requestform überspringt, wenn er nicht direkt, sondern über eine Codeunit aufgerufen wird. Ist dem so? Wenn ja, auf welchem Weg kann ich dann der Codeunit beibringen, den Report mit Requestform aufzurufen? Oder bin ich grad komplett auf dem Holzweg?

Der Report ist übrigens im 50000er Bereich, wird also über die Berichtsauswahl dorthin umgelenkt.

Re: Request Form NICHT überspringen?

26. August 2010 12:10

Lithium hat geschrieben:Ich nehme an das ein Report die Requestform überspringt, wenn er nicht direkt, sondern über eine Codeunit aufgerufen wird. Ist dem so?
Dem ist nur dann so, wenn es der C/AL-Code so besagt.
Man kann den Report per C/AL-Code mit und ohne RequestForm aufrufen. Verantwortlich dafür ist ein Parameter beim Aufruf:
Code:
REPORT.RUN(Number [, ReqWindow] [, SystemPrinter] [, Record])

Re: Request Form NICHT überspringen?

26. August 2010 12:51

Aber bitte nicht einfach in der Buchungscodeunit die Request Form eine Reports anknipsen. Man sollte sich ganz genau darüber im Klaren sein, was man da tut und wie man es tut.

Re: Request Form NICHT überspringen?

27. August 2010 13:47

Genau das hatte ich gesucht.

Timo Lässer hat geschrieben:
Code:
REPORT.RUN(Number [, ReqWindow] [, SystemPrinter] [, Record])


Da war ich beim durchsuchen der C/SIDE Reference Guide wohl wieder auf ein bis zwei Augen blind.

Vielen Dank :-D