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
| 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,