Skip to main content
Skip table of contents

TBeIndiPrintData

TBeIndiPrintData - Individual-Belegdruck

Dient zum Druck eines Individual-Belegs, welcher dann im Belegarchiv abgelegt werden kann

HINWEIS:
Es handelt sich hier um die "erweiterte" Umsetzung des Belegdruckes, eine "einfache" Möglichkeiten zum Belegdruck (z.B. Einzelbelegdruck) bietet die neu im Codeblock verfügbare Funktion "DocumentPrint()" (siehe entsprechendes Memo)

Eigenschaften

Eigenschaft

Beschreibung

DocType

Archiv-Beleg-ID, 900-999, muss als Druckeinstellung definiert sein!

Tables

Array mit Tabellen, welche im Belegdruck bzw. -Layout zur Verfügung stehen

DocNo

Beleg-Nr, frei zu vergeben

PersNo

Pers.Nr, frei zu vergeben

PrintDate

Druck-Datum (default = Buchungsdatum)

PrintDepart

Drucklayout für Abteilung n verwenden (default = aktuelle Abteilung)

PrintLang

Drucklayout für Sprache n verwenden (default = 0)

PrintReportNo

Ab 7.1
Drucklayout von Report Nummer verwenden (default = 0 bzw. Standard Layout) (DabR010:REPORT_NR)

PrintConnect

ADS-Connection auf der die Druckendatenverarbeitung läuft

TestPrint

Test-Druck (Readonly)

ProcessDataOnly

Verarbeitung ohne Druck (default = False)

LayoutAction

Ab 7.1
Welche Layout Aktion bei ExecLayout ausgeführt wird (default = traNone = Dialog anzeigen)
traNew = Neues Layout
traCopy = Kopie von Layout PrintReportNo anlegen
traEdit = Layout PrintReportNo bearbeiten
traDelete = Layout PrintReportNo löschen

Events

Event

Beschreibung

OnInitFirstPrint

Initialisierung erster Beleg im Stapeldruck-Modus

OnInitNextPrint

Initialisierung nächster Beleg im Stapeldruck-Modus

OnSetLocks

Record-Locks für die Verarbeitung setzen

OnReSetLocks

Record-Locks der Verarbeitung aufheben (Gegenstück zu SetLocks)

OnProcDataBefore

Belegdruck-Datenverarbeitung VOR der Druckausgabe

OnProcDataAfter

Belegdruck-Datenverarbeitung NACH der Druckausgabe

Aktive Eigenschaften

Eigenschaft

Beschreibung

ExecLayout

Layout-Designer aufrufen

ExecPrint

Einzeldruck starten

ExecPrintAll

Stapeldruck startem

Hinweise

Die Verwendung der Klasse an Stelle der Funktion DocumentPrint() bietet erweiterte Steuerungsmöglichkeit des Belegdruck, hierzu zählen insbesondere

  • Stapeldruckfunktion

  • Setzen/Prüfen von Satzsperren unmittelbar vor der Verarbeitung (wichtig im Stapeldruck)

  • Festlegen von Druck-Abteiltung und -Sprache

  • Verarbeitung eines Beleges ohne Druck

Siehe dazu auch

  • "Individual-Belege mit Archivierung"

  • "DocumentPrint()"

  • "DocumentDelete()"

  • "Event vor Eintrag Beleghistorie"

  • "DBGetTable(), DBGetLookup(), DBGetMemTable()"

Beispiel

CODE
| oDab010, oConnect, oDM, arrArt, nDocNo |

// In diesem Beispiel wird ein *Stapel*Druck ausgeführt, der für jedes Element
// in arrArt ein Scope auf die DAB010 setzt und daraufhin einen entsprechenden
// Beleg druckt

// Events ----------------------------------------------------------------------

// Events zur Initialisierung des (nächsten) Belegdruckes ######################

function InitNextPrint( aSender, aContinue:R )
   // (nur im Stapeldruck!)
   // Für jedes Element in arrArt einen eigenen Beleg drucken,
   // bis alle Belege gedruckt...
   // Wird aContinue auf FALSE gesetzt, wird der Stapeldruck beendet
   Meld('InitNextPrint'),
   nDocNo++,
   oDM.DocNo := 5000 + nDocNo, // Nr. des Beleges setzen (5001, 5002, ...)
   aContinue := nDocNo <= Len(arrArt), // True = weiteren Beleg drucken
   if aContinue then
      DbScope( {arrArt[nDocNo]}, {arrArt[nDocNo]}, oDab010 ),
   endif,
end,

function InitFirstPrint( aSender, aContinue:R )
   // (nur im Stapeldruck!, beim Druck des ersten Beleges)
   Meld('InitFirstPrint'),
   aContinue := True, // True = es gibt einen Beleg zu drucken
   // In diesem Fall ist die Initialisierung für alle Belege gleich ...
   InitNextPrint( aSender, aContinue ),
end,

// Events zum Setzen/Prüfen bzw. Aufheben von Datzsperren ######################

function SetLocks( aSender, aContinue:R )
   // Alle für die Verarbeitung des Beleges benötigten Satzsperren setzen
   // aContinue = FALSE, Sperren konnten nicht (vollständig) gesetzt werden,
   // Es wird in diesem Fall mit dem Druck des nächsten Beleges fortgefahren !!
   Meld('SetLocks'),
end,

function ResetLocks( aSender )
   // Alle für die Verarbeitung des Beleges gesetzten Satzsperren (in SetLocks)
   // wieder aufheben
   Meld('ResetLocks'),
end,

// Events zur Datenverarbeitung des Beleges ####################################

function ProcessDataBefore( aSender )
   // Verarbeitung der Belegdaten (VOR dem Druck)
   // Achtung ! Transaktion auf oConnect und somit oDab010 ist aktiv !
   Meld('ProcessDataBefore'),
end,

function ProcessDataAfter( aSender )
   // Verarbeitung der Belegdaten (NACH dem Druck)
   // Achtung ! Transaktion auf oConnect und somit oDab010 ist aktiv !
   Meld('ProcessDataAfter'),
end,

// Hauptprogramm ---------------------------------------------------------------

arrArt   := {"A","B","C"},
nDocNo   := 0,

oDM      := CreateObject("TBeIndiPrintData", "BeIndiPrintData" ),

// WICHTIG: Folgende Zeile erstellt eine Tabelle welche auf der Connection des Druckmoduls läuft 
// und somit in den ProcessData-Events transaktionsgestützt eingesetzt werden kann !!
oDab010  := DbGetTable( oDM, waDAB010 ), 

startseq

   // Beleg initialisieren
   oDM.DocType         := 901,
   oDM.DocNo           := 5000, // ist hier eigentlich überflüssig, weil das Setzen in InitNextPrint() erfolgt
   oDM.PersNo          := 4711,
   oDM.PrintDate       := Date(), // wäre hier das Druckdatum für ALLE Belege im Stapel
   oDM.PrintDepart     := 1,
   oDM.PrintLang       := 2,
   oDM.Tables          := {oDab010},

   // Recordlock-Routinen (Events) setzen
   AssignEvent( oDM, "OnSetLocks",   "SetLocks" ),
   AssignEvent( oDM, "OnResetLocks", "ResetLocks" ),
   // Stapel-Druck-Routinen (Events) setzen
   AssignEvent( oDM, "OnInitFirstPrint", "InitFirstPrint" ),
   AssignEvent( oDM, "OnInitNextPrint",  "InitNextPrint" ),
   // Verarbeitungs-Routinen (Events) setzen
   AssignEvent( oDM, "OnProcDataBefore", "ProcessDataBefore" ),
   AssignEvent( oDM, "OnProcDataAfter",  "ProcessDataAfter" ),

   // Layout designen oder Beleg drucken
   //oDM.ExecLayout,   // Layout
   oDM.ExecPrintAll, // Stapel-Druck !

always
   DestroyObject(oDab010),
   DestroyObject(oConnect),
   DestroyObject(oDM),
stopseq,

Weitere Verknüpfungen

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.