Auftrag drucken - Programmierung

4. März 2011 17:48

Hallo,
eine Frage mal?

Wenn ich im auftrag bin und den Button "Drucken --> Verkauf-Auftragsbestätigung" drücke, öffnet sich die Seite "Auftragsbestätigung". Ins Feld Nr. wird dann die Auftragsnummer übergeben.
Weil ich habe auch etwas programmiert und die Nummer wird nicht übergeben.

Wo passiert das denn im Code? Habe lange gesucht, aber nicht fündig geworden!

Danke für eure Hilfe!

Re: Auftrag drucken - Programmierung

4. März 2011 17:58

Der ganze Datensatz des Headers wird in die Funktion PrintSalesOrder im Codeunit 229 Document Print übergeben, die ermittelt aus der Tabelle Berichtsauswahl die Report ID von der Auftragsbestätigung (damit statt dem Standardbericht ggf. ein modifizierter im 50000er Bereich kommt) und löst dann den Druck aus.

Re: Auftrag drucken - Programmierung

4. März 2011 18:10

AhmedA hat geschrieben: Ins Feld Nr. wird dann die Auftragsnummer übergeben.

Jedes Feld, auf das vor Aufruf des Reports gefiltert wird, taucht in der Requestform auf.

Beispiele:
Code:
SalesHeader.RESET;
REPORT.RUN(205, TRUE, FALSE, SalesHeader);
// Bei Aufruf der Request-Form ist kein Feld vorbelegt!


Code:
SalesHeader.RESET;
SalesHeader.SETRANGE("Document Type", SalesHeader."Document Type"::Order);
SalesHeader.SETRANGE("No.", '1031');
REPORT.RUN(205, TRUE, FALSE SalesHeader);
// Bei Aufruf der Request-Form ist das Belegnr. vorbelegt!
// Feld Belegart ist nicht vorbelegt, weil intern sowieso auf dieses Feld fest gefiltert wird.

Re: Auftrag drucken - Programmierung

4. März 2011 18:40

Hallo,
ich erzähle lieber mal sorum:

Ich habe in NAV (Classic Client) ein neues Modul Namens Packliste entwickelt.

Hierfür haben ich 2 Tabellen angelegt 1. Kopf (wie beispielsweise der Sales Header) und 2. Positionen (wie beispielsweise die Sales Line).
Diese habe ich anschließend in einem Formular zur Ansicht gebracht und beide Tabellen bzw. Formulare (Karte inkl. Subform) miteinander verknüpft (gleiche Funktionalität wie beispielsweise bei den Aufträgen).

Die Packliste möchte ich nun Drucken. Dafür habe ich einen Bericht entwickelt der auf beide Tabellen zugreift. Beim Aufruf des „Drucken“ Button öffnet NAV ja den Bericht bzw. erst die Filterauswahl.
An dieser Stelle möchte ich nun das die Packlistennummer (Primery Key) direkt in der Berichtsfilterauswahl mit übergeben wird. Es soll so funktionieren wie bei den Aufträgen.

Ich habe mir die Sache intensiv angesehen und weiß auch das hierfür die Codeunit „Document Print“ mit diversen Funktionen genutzt wird die wiederum auf die Tabelle „Report Selection“ zurückgreift.
Ich könnte mir jedoch vorstellen das diese Funktionalität viel einfacher (eventuell über Propertys) gelöst werden kann.

Hinter dem Button Drucken habe ich die „Action“ RunObject genutzt um dann den entsprechenden Report aufzurufen.


Jetzt ???

Re: Auftrag drucken - Programmierung

4. März 2011 19:06

AhmedA hat geschrieben:Hinter dem Button Drucken habe ich die „Action“ RunObject genutzt um dann den entsprechenden Report aufzurufen.

Der Ansatz ist richtig, jedoch hast du hier keine Möglichkeit, die Assistbuttons zum Füllen des RunFormLinks (welcher für Forms gedacht ist) zu benutzen.
Deswegen: Nimm nicht die Eigenschaften, sondern rufe den Report per C/AL-Code aus. Die Vorlage habe ich dir schon in meineme letzten Beitrag gegeben. DIes musst du im OnPush-Trigger anwenden.