Inhaltsverzeichnis
Schnittstelle 2: Interner Cleanup
Dokumentiert / statisch geprüft: 2026-10-02. Statisch dokumentiert; Nutzerprüfung offen. Keine Schnittstelle ausgeführt.
Identität und Quellenstand
eProgramm.Cleanup = 2. Aktive feste Registrierung → kein aktiver Delegate (E,P). Registrierung und erreichbare Quellen geprüft; installierte Binärdateien ungeprüft. Active=True, InAutomatik=false, ManuellerAufruf=false, NurAufServer=false. Kennzeichen beschreiben Registrierung/Defaults, nicht eingerichtete Jobs; Run selbst prüft keine Serverbindung.
seegerstefan/pep4desktop, master, Commit f1d82a003b62f2658f06eaa943dc685ab219bdf3. Lokale .DS_Store-/cPep/PEP-Abweichungen nicht vermischt; Fachquellen cSchnittstellen/ZW/Sqlfiles unverändert. Kein Remote-/Installationsabgleich.
Einstieg, Parameter und Ablauf
Keine Fachparameter oder Eingangsdateien. cCalcZw.DatenBereinigen ruft ausschließlich dbo.Maintenance_Clean ohne Parameter auf; Standard-SqlCommand-Timeout, nicht SQL_TIMEOUT. Keine anschließende Neuberechnung.
Die SP schließt offene ITZeit/ITORGA/ITPEP/ITSonderurlaub/ITZahlung.bis mit Personen.Austritt; bei fehlendem Austritt bleibt der Wert NULL. BerechneteZeiten außerhalb StartZW/Austritt werden gelöscht. CStatus außerhalb dieser Grenzen wird erst auf 0/Meldung leer gesetzt und dann über OUTPUT deleted.* in CStatus_Sicherung gesichert und gelöscht. Die Sicherung enthält also nicht mehr den ursprünglichen Status/Meldung. Positive Status gültiger inaktiver ITZeit werden zusätzlich auf 0 gesetzt (keine Sicherung dafür).
Pep3Log-Löschung: Datafox/Gantner InfoLevel51 älter sechs Monate, alle Einträge älter18 Monate, Erfolgsinfo51 mit Kurz='Ausführung erfolgreich beendet' älter einen Monat; Dorma älter zwölf Monate. Maßstab SQL-Serverzeit, nicht die Zeit der Eingangsbuchung.
Wiederholung, Schema und Fehler
Kein Append fachlicher Zeiten; UPDATE/DELETE und Append Sicherung. Keine Gesamttransaktion oder automatische Rücknahme; vorangegangene Anweisungen bleiben bei späterem Fehler bestehen. OUTPUT ohne Zielspaltenliste hängt an genauer CStatus-/Sicherungs-Spaltenreihenfolge; DDL0834 belegt die dokumentierten Sicherungsfelder, nicht ein beliebiges Kundenschema. Keine Fixierungsprüfung. Wiederholung arbeitet auf verbleibendem Stand; SQL-Autocommit/Parallelität nicht als Jobschutz verstehen. Helfer fängt SQL-Fehler und liefert False.
Workerbindung
ExecuteTask behandelt Kennung2 ausdrücklich als Spezialfall; fehlender normaler Delegate bedeutet nicht wirkungslos. Interner Cleanup-Task ID-2 wird nur bei CalcZw aktiviert, als Anschluss an Statusfüllen1. Direkter cProgramm.Run wäre dagegen kein gültiger Ersatz für den Workerzweig.
Worker gibt Helfer-Boolean weiter. Automatik schreibt Schnittstellen.LastGet/Erfolg für ihre Task-ID; bei intern negativer ID kann UPDATE ohne passende Tabellenzeile wirkungslos sein. Command-Modus löscht ZwWorkerCommand nach Ausführung auch bei False; daher kein automatischer Wiederholungsvertrag. Diese Workerrahmenwirkung ist nicht Teil der Cleanup-SP.
Einstellungen und gemeinsame Nebenwirkungen
Gemeinsames Profil: LEGACY (interne Referenz).
Keine fachliche ZW-Einstellung im erreichbaren Einstieg nachgewiesen; gemeinsame Meldeeinstellungen nur über die ausdrücklich genannten Profile.
Defaults sind keine Livewerte. Melde-/Datei-/DB-Wirkungen sind nicht atomar.
Feldbeziehungen
DB-Rolle PEP4-Anmeldedatenbank, soweit nicht ausdrücklich Aprocon oder Import angegeben. Unqualifizierte Objektschemata nicht als Live-dbo-Vertrag behaupten. INSERT-Defaults/Computed-Spalten sind gesonderte Schemawirkung, kein explizites UPDATE.
| Beziehung | Tabelle.Feld | Operation | Datenfluss / Verwendung | Bedingung | Beleg |
|---|---|---|---|---|---|
| 2-D001 | Personen.PersonID | SELECT | Zeit-/Austrittsgrenzen | Globaler Lauf | SQL |
| 2-D002 | Personen.StartZW | SELECT | Zeit-/Austrittsgrenzen | Globaler Lauf | SQL |
| 2-D003 | Personen.Austritt | SELECT | Zeit-/Austrittsgrenzen | Globaler Lauf | SQL |
| 2-D004 | ITZeit.PersonenStammID | SELECT | Personenjoin und nur offene Historien | bis IS NULL | SQL |
| 2-D005 | ITZeit.bis | SELECT | Personenjoin und nur offene Historien | bis IS NULL | SQL |
| 2-D006 | ITZeit.bis | UPDATE | Austritt der passenden Person; bei fehlendem Austritt bleibt NULL | bis IS NULL | SQL |
| 2-D007 | ITORGA.PersonenStammID | SELECT | Personenjoin und nur offene Historien | bis IS NULL | SQL |
| 2-D008 | ITORGA.bis | SELECT | Personenjoin und nur offene Historien | bis IS NULL | SQL |
| 2-D009 | ITORGA.bis | UPDATE | Austritt der passenden Person; bei fehlendem Austritt bleibt NULL | bis IS NULL | SQL |
| 2-D010 | ITPEP.PersonenStammID | SELECT | Personenjoin und nur offene Historien | bis IS NULL | SQL |
| 2-D011 | ITPEP.bis | SELECT | Personenjoin und nur offene Historien | bis IS NULL | SQL |
| 2-D012 | ITPEP.bis | UPDATE | Austritt der passenden Person; bei fehlendem Austritt bleibt NULL | bis IS NULL | SQL |
| 2-D013 | ITSonderurlaub.PersonenStammID | SELECT | Personenjoin und nur offene Historien | bis IS NULL | SQL |
| 2-D014 | ITSonderurlaub.bis | SELECT | Personenjoin und nur offene Historien | bis IS NULL | SQL |
| 2-D015 | ITSonderurlaub.bis | UPDATE | Austritt der passenden Person; bei fehlendem Austritt bleibt NULL | bis IS NULL | SQL |
| 2-D016 | ITZahlung.PersonenStammID | SELECT | Personenjoin und nur offene Historien | bis IS NULL | SQL |
| 2-D017 | ITZahlung.bis | SELECT | Personenjoin und nur offene Historien | bis IS NULL | SQL |
| 2-D018 | ITZahlung.bis | UPDATE | Austritt der passenden Person; bei fehlendem Austritt bleibt NULL | bis IS NULL | SQL |
| 2-D019 | ITZeit.von | SELECT | Inaktive gültige Zeitgeschichte setzt positive CStatus zurück | IsAktiv=0 | SQL |
| 2-D020 | ITZeit.bis2 | SELECT | Inaktive gültige Zeitgeschichte setzt positive CStatus zurück | IsAktiv=0 | SQL |
| 2-D021 | ITZeit.IsAktiv | SELECT | Inaktive gültige Zeitgeschichte setzt positive CStatus zurück | IsAktiv=0 | SQL |
| 2-D022 | BerechneteZeiten.Person | SELECT | Vor StartZW oder nach Austritt | Datumvergleich | SQL |
| 2-D023 | BerechneteZeiten.Datum | SELECT | Vor StartZW oder nach Austritt | Datumvergleich | SQL |
| 2-D024 | BerechneteZeiten.— Zeilen | DELETE | Zeilen außerhalb Personengrenzen | Keine Sicherung | SQL |
| 2-D025 | CStatus.PersonenStammID | SELECT | Grenz-/Statusauswahl | Global | SQL |
| 2-D026 | CStatus.Datum | SELECT | Grenz-/Statusauswahl | Global | SQL |
| 2-D027 | CStatus.CStatus | SELECT | Grenz-/Statusauswahl | Global | SQL |
| 2-D028 | CStatus.CStatus | UPDATE | 0 außerhalb Grenzen sowie bei inaktiver ITZeit | Grenzdatum oder CStatus>0 | SQL |
| 2-D029 | CStatus.Meldung | UPDATE | Leerer Text außerhalb StartZW/Austritt | Vor nachfolgendem DELETE | SQL |
| 2-D030 | CStatus.— Zeilen | DELETE | Außerhalb Grenzen; OUTPUT deleted.* | Nach Reset CStatus/Meldung | SQL |
| 2-D031 | CStatus.MeldungAus | SELECT | OUTPUT deleted.* ins Sicherungsobjekt | Gelöschte Zeilen; Spaltenreihenfolge relevant | SQL,DDL |
| 2-D032 | CStatus.RahmenPepAus | SELECT | OUTPUT deleted.* ins Sicherungsobjekt | Gelöschte Zeilen; Spaltenreihenfolge relevant | SQL,DDL |
| 2-D033 | CStatus.RahmenOeffnungAus | SELECT | OUTPUT deleted.* ins Sicherungsobjekt | Gelöschte Zeilen; Spaltenreihenfolge relevant | SQL,DDL |
| 2-D034 | CStatus.Meldung | SELECT | OUTPUT deleted.* ins Sicherungsobjekt | Gelöschte Zeilen; Spaltenreihenfolge relevant | SQL,DDL |
| 2-D035 | CStatus.AutoPauseAus | SELECT | OUTPUT deleted.* ins Sicherungsobjekt | Gelöschte Zeilen; Spaltenreihenfolge relevant | SQL,DDL |
| 2-D036 | CStatus.Kommentar | SELECT | OUTPUT deleted.* ins Sicherungsobjekt | Gelöschte Zeilen; Spaltenreihenfolge relevant | SQL,DDL |
| 2-D037 | CStatus.ts | SELECT | OUTPUT deleted.* ins Sicherungsobjekt | Gelöschte Zeilen; Spaltenreihenfolge relevant | SQL,DDL |
| 2-D038 | CStatus.USERID | SELECT | OUTPUT deleted.* ins Sicherungsobjekt | Gelöschte Zeilen; Spaltenreihenfolge relevant | SQL,DDL |
| 2-D039 | CStatus.MaxStundenAus | SELECT | OUTPUT deleted.* ins Sicherungsobjekt | Gelöschte Zeilen; Spaltenreihenfolge relevant | SQL,DDL |
| 2-D040 | CStatus_Sicherung.Datum | INSERT | Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt | INSERT ohne Zielspaltenliste muss zur DDL passen | SQL,DDL |
| 2-D041 | CStatus_Sicherung.PersonenStammID | INSERT | Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt | INSERT ohne Zielspaltenliste muss zur DDL passen | SQL,DDL |
| 2-D042 | CStatus_Sicherung.CStatus | INSERT | Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt | INSERT ohne Zielspaltenliste muss zur DDL passen | SQL,DDL |
| 2-D043 | CStatus_Sicherung.MeldungAus | INSERT | Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt | INSERT ohne Zielspaltenliste muss zur DDL passen | SQL,DDL |
| 2-D044 | CStatus_Sicherung.RahmenPepAus | INSERT | Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt | INSERT ohne Zielspaltenliste muss zur DDL passen | SQL,DDL |
| 2-D045 | CStatus_Sicherung.RahmenOeffnungAus | INSERT | Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt | INSERT ohne Zielspaltenliste muss zur DDL passen | SQL,DDL |
| 2-D046 | CStatus_Sicherung.Meldung | INSERT | Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt | INSERT ohne Zielspaltenliste muss zur DDL passen | SQL,DDL |
| 2-D047 | CStatus_Sicherung.AutoPauseAus | INSERT | Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt | INSERT ohne Zielspaltenliste muss zur DDL passen | SQL,DDL |
| 2-D048 | CStatus_Sicherung.Kommentar | INSERT | Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt | INSERT ohne Zielspaltenliste muss zur DDL passen | SQL,DDL |
| 2-D049 | CStatus_Sicherung.ts | INSERT | Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt | INSERT ohne Zielspaltenliste muss zur DDL passen | SQL,DDL |
| 2-D050 | CStatus_Sicherung.USERID | INSERT | Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt | INSERT ohne Zielspaltenliste muss zur DDL passen | SQL,DDL |
| 2-D051 | CStatus_Sicherung.MaxStundenAus | INSERT | Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt | INSERT ohne Zielspaltenliste muss zur DDL passen | SQL,DDL |
| 2-D052 | CStatus_Sicherung.tsSicherung | INSERT | Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt | INSERT ohne Zielspaltenliste muss zur DDL passen | SQL,DDL |
| 2-D053 | Pep3Log.Modul | SELECT | Datafox/Gantner/Dorma-Alter und Meldungsart | SQL Server GETDATE | SQL |
| 2-D054 | Pep3Log.Datum | SELECT | Datafox/Gantner/Dorma-Alter und Meldungsart | SQL Server GETDATE | SQL |
| 2-D055 | Pep3Log.InfoLevel | SELECT | Datafox/Gantner/Dorma-Alter und Meldungsart | SQL Server GETDATE | SQL |
| 2-D056 | Pep3Log.Kurz | SELECT | Datafox/Gantner/Dorma-Alter und Meldungsart | SQL Server GETDATE | SQL |
| 2-D057 | Pep3Log.— Zeilen | DELETE | Datafox/Gantner 6/18 Monate, Erfolgsinfo 1 Monat; Dorma 12 Monate | Keine Archivierung dieser Logs | SQL |
Teststatus und Pflege
Keine Laufzeit-/Live-Schema-/Lieferformat-Abnahme, keine Codekorrektur. Q02 gilt für kundenspezifische Trigger/Constraints/DLLs/Jobs; weitere Grenzen siehe oben und Fragen (interne Referenz). Externe Betriebs-/Schemaabweichungen sind nicht durch die statische Analyse ausgeschlossen.
Gemeinsame Nebenwirkungen LEGACY
Block17 ergänzt6001/6002/6003/6004/6005 ausschließlich für direkte Info-/Dialog-/Logmeldungen; keine BASE-Mail/API. Parameter, Auswahl, Return und Fachwirkung jeID.
Block16 ergänzt explizit3031/3032/3041/3042/3060/3500 für die direkten Info-/Logmeldungen. Keine BASE-Vererbung bzw. Mail-/API-Nebenwirkung; Fachdateien/SQL/Returns pro ID prüfen. Keine pauschale Übernahme alter Dateiverträge.
Stand 2026-10-02; statisch geprüft am Commit f1d82a003b62f2658f06eaa943dc685ab219bdf3. Mitglieder ausschließlich durch expliziten Profilverweis: Block 07, IDs 2000, 2001, 2010, 2020, 3020, 3021, 3030, 3040, 3050, 3070.
Block 13: Profil für 1067,1070,1073 nur bezüglich direkter cInfoTools-Dialog-/Logmeldungen und ihrer zwei Einstellungen wiederverwendet. Deren Datei-/Rückgabe-/Timeout-/Folgeaufrufverträge stehen ausschließlich in den Einzelbeschreibungen; die nachfolgenden Block-07-PFAD-/Return-Aussagen sind keine pauschale Behauptung für diese drei neuen IDs.
Block14 nutzt LEGACY ausschließlich für direkte Info-/Logpfade von 1100,1101,1102,1103,1200,1207,1208,1209,1223. Keine pauschale Übernahme der nachfolgenden Block07-Datei-/Rückgabeverträge; konkrete Unterschiede stehen je ID. 1203 verwendet nur direkten MsgBox-Fehlerpfad und ist kein Mitglied.
Block15 ergänzt ausdrücklich 1224/1225/1226/1320/1360/1400/1401/2021/2023 sowie die Veraltet-Stubs 2028/2029/2032/2046/2047/2048. Nur direkte Info-/Logpfade; konkrete Datei-/Return-/Timeoutverträge stehen je ID. Die sechs Stubs erben als Klasse zwar BASE, instanziieren aber nichts und rufen deren Start/Ende nicht auf. 2022 hat keinen solchen Pfad.
Abgrenzung und Ablauf
Die belegten LEGACY-Einstiege rufen cSchnitt_Basis.Start/Ende nicht auf. Die ursprünglichen Block-07-Klassen erben auch nicht von der Basis; für spätere statische Stubs gilt dagegen nur die fehlende Start-/Ende-Ausführung. Deshalb keine BASE-Mail-/API-/Outboxbeziehungen übernehmen. MAILTO wird zwar von cProgramm angelegt, aber hier nicht ausgewertet; ebenso keine fachliche Auswertung von MANUELL oder SILENT. RunWithDialog setzt MANUELL. Dialogunterdrückung kommt aus Settings.Info.SupressDialogs (Clientkonstruktor False, Worker True), kein belegter ZW-Schlüssel.
Die folgenden Datei-/Return-Aussagen gelten für Block 07, nicht pauschal für spätere Profilmitglieder. PFAD ist FileImport, auch bei den Exporten 2001/3021: vorhandene Datei erforderlich, OpenFileDialog statt SaveFileDialog. Der lokale Registrywert PEP3/PFADESCHNITT/<ID> speichert den zuletzt verwendeten Ordner; dies ist keine serverseitige Systemeinstellung. Fehlender PFAD-Schlüssel ergibt False mit Fehlermeldung. Value.ToString bei Nothing liegt vor dem Fach-Try und kann ungefangen abbrechen. Datei-Existenzprüfung und Startmeldung liegen ebenfalls davor.
Meldungen: ShowProgrammStart/ShowProgrammEndeSuccessDialog mit Level 51, ShowProgrammEndeErrorDialog 102, ShowExceptionDialog 105 → ZeigeInfoEvent, ggf. Dialog, Log. Kein Nachweis über externe Event-Abonnentenwirkungen. Dialog kann unterdrückt sein, Logging bleibt separat. Die acht Ausführen-Funktionen außer 2010/3070 haben keinen abschließenden Return und liefern deshalb Boolean False, auch wenn Daten geändert wurden. 2020/3020 und die beiden Exporte haben zusätzlich im Fachhelfer keinen Return; dort wird bereits Success=False und ein Fehlerdialog gewählt. 2000/3030/3040/3050 können Erfolg melden und dennoch False liefern.
Einstellungen
| Beziehung | Schlüssel / Variable | Default | Einfluss | Wirkung | Beleg |
|---|---|---|---|---|---|
| LEGACY-S001 | GLOBAL_LOGLEVEL / GLOBAL_LOGLEVEL | 50 | Init → Info.LogLevel | Meldung ab einschließlich Grenzwert in Datei/DB; verändert keine Fachdaten | LEGACY:SET, LEGACY:INIT, LEGACY:INFO |
| LEGACY-S002 | GLOBAL_LOGLEVELEVLOG / GLOBAL_LOGLEVELEVENTLOG | 0 | Init → Info.LogLevelEvLog | Windows-Ereignisprotokoll nur bei Level > Grenze, Grenze > 0 und Level < 200 | LEGACY:SET, LEGACY:INIT, LEGACY:INFO |
Beide gezeigten Settings-Konstruktoren setzen AlwaysToFile=True. Oberhalb LogLevel werden Datei UND DB versucht; bei False nur DB, Datei als Fehlerfallback. Datei unter ApplicationData/PEP/LogFiles/yyyyMMdd_peplog.txt (Append). DB-Fehler werden als False abgefangen, verhindern nicht zwingend den Import. EventLog-Fehler werden geschluckt. Direkte Fachcommands des Block 07 setzen kein Timeout; SQL_TIMEOUT ist in diesen zehn Pfaden nicht gelesen. Keine zusätzliche fachliche ZW-Einstellung nachgewiesen, auch nicht in spCalcUmsatzPlan.
Datenbeziehungen
DB-Rolle PEP4-Anmeldedatenbank. Log schreibt über eigene Verbindung; nicht atomar mit Fachoperationen. fnUserId liest minimalen UserID zum rechten 25-Zeichen-Teil von SUSER_NAME(), sonst 0.
| Beziehung | Tabelle.Feld | Operation | Datenfluss / Verwendung | Bedingung | Beleg |
|---|---|---|---|---|---|
| LEGACY-D001 | Pep3Log.UserID | INSERT | dbo.fnUserId() | Meldungslevel erreicht DB-Log | LEGACY:INFO, LEGACY:FN |
| LEGACY-D002 | Pep3Log.Datum | INSERT | getdate() | Meldungslevel erreicht DB-Log | LEGACY:INFO |
| LEGACY-D003 | Pep3Log.Kurz | INSERT | Kurztext, maximal 255 Zeichen | Meldungslevel erreicht DB-Log | LEGACY:INFO |
| LEGACY-D004 | Pep3Log.LogText | INSERT | Detailtext einschließlich Pfad/ggf. Exception | Meldungslevel erreicht DB-Log | LEGACY:INFO |
| LEGACY-D005 | Pep3Log.Modul | INSERT | Modulbezeichnung, maximal 50 Zeichen | Meldungslevel erreicht DB-Log | LEGACY:INFO |
| LEGACY-D006 | Pep3Log.InfoLevel | INSERT | 51, 102 oder 105 je Meldung | Meldungslevel erreicht DB-Log | LEGACY:INFO |
| LEGACY-D007 | tblUser.Name | SELECT | Abgleich RIGHT(SUSER_NAME(),25) | fnUserId bei Log-INSERT | LEGACY:FN |
| LEGACY-D008 | tblUser.UserID | SELECT | MIN(UserID), fehlend → 0 | fnUserId bei Log-INSERT | LEGACY:FN |
Quellenverzeichnis
| Kürzel | Quelldatei am geprüften Commit |
|---|---|
| E | PEP4/ZW/Allgemein.vb |
| P, LEGACY:P | PEP4/cSchnittstellen/Programme/cProgramme.vb |
| PRJ | PEP4/cSchnittstellen/cSchnittstellen.vbproj |
| B | PEP4/ZW/cCalcZw.vb |
| SQL | Sqlfiles/PEP4Functions/Maintenance_Clean.sql |
| DDL | Sqlfiles/PEP4Update/update_0834.sql |
| WORKER | PEP4/ZwWorker2/cAutomatik.vb |
| LEGACY:INFO | PEP4/cTools/cInfoTools.vb |
| LEGACY:INIT | PEP4/ZW/Einstellungen/cSetting.vb |
| LEGACY:SET | PEP4/ZW/Einstellungen/cEinstellungenZw.vb |
| LEGACY:FN | Sqlfiles/PEP4Functions/fnUserId.sql |
Siehe auch: Übersicht der Schnittstellen. Keine Ausführung oder Codekorrektur.