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,