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

EigenschaftBeschreibung
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)
PrintReportNoAb 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)
ProcessDataOnlyVerarbeitung ohne Druck (default = False)
LayoutActionAb 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

EventBeschreibung
OnInitFirstPrintInitialisierung erster Beleg im Stapeldruck-Modus
OnInitNextPrintInitialisierung nächster Beleg im Stapeldruck-Modus
OnSetLocksRecord-Locks für die Verarbeitung setzen
OnReSetLocksRecord-Locks der Verarbeitung aufheben (Gegenstück zu SetLocks)
OnProcDataBeforeBelegdruck-Datenverarbeitung VOR der Druckausgabe
OnProcDataAfterBelegdruck-Datenverarbeitung NACH der Druckausgabe

Aktive Eigenschaften

EigenschaftBeschreibung
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.