====== 1400 — Arbeitszeiten aus Satzarten1401/1402 ====== Dokumentation ins Wiki übernommen am **02.10.2026**. Das ist keine Laufzeitabnahme. Technische Referenz zum aktiven Programm eProgramm.ImpZeitbuchungen. Sie beschreibt Eingänge, tatsächliche Schreibwirkung und Grenzen am genannten Quellenstand. Erreichbarer Aufruf statisch dokumentiert, nicht zur Laufzeit abgenommen. **Wichtig:** ⚠ fehlender Return / Löschen aller Korrekturvarianten. Prüfe vor einem späteren Test die beschriebenen Fälle. ===== Aufruf und Parameter ===== Delegate: ''cSchnittZeitbuchungen.Ausführen''. Active=True, Automatik=true, ManuellerAufruf=true, NurAufServer=false. Registrierung/Defaults, keine bestätigten Jobs. Run prüft die Serverbindung nicht selbst. ^ Parameter ^ Dialogtyp ^ Fester Wert ^ DefaultValue ^ | PFAD | FileImport | nicht fest | nicht gesetzt | MAILTO und der von RunWithDialog gesetzte MANUELL-Schlüssel sind Registrierung/Dialogzustand, keine ZW-Einstellung. Eine Auswertung durch die Basis ist nur bei ausdrücklich belegtem BASE-Pfad anzunehmen. ===== Ein-/Ausgänge und Dateivertrag ===== PFAD FileImport, vorhandene Datei. TextFieldParser ohne Encodingargument (DefaultUTF8/BOM), Semikolon, Trim=True, Quotes=True. Parser wird zweimal erzeugt, erste Instanz nicht ordentlich entsorgt. Keine Kopfzeilen-/Feldzahlprüfung. ^ Position ab1 ^ Inhalt ^ Typ / Fallback ^ | 1 | 1401=Anfügen,1402=Löschen | Satzarten, nicht Programmkennungen | | 2 | PersonID | Long/0 | | 3 | Kommen | Datumzeit/0 | | 4 | Gehen | Datumzeit/0 | | 5 | Kennzeichen | Long/0 | | 6 | Korrektur, nur1401 | Double/0 | Datum-Fallback0 ist alsObject in datetime-Parameter gegeben; erfolgreiche Konvertierung nicht zugesichert. Kulturabhängige IsDate/IsNumeric-Parser(F).1401 braucht6,1402 fünf Felder; unbekannte Satzarten ignoriert. ===== SQL und Betrieb ===== 1401 IF COUNT auf Person/Kommen/Gehen/Kennzeichen/**Korrektur**=0→INSERT dieser fünf Felder. Unterschiedliche Korrekturen sind damit neue Zeilen, keine Aktualisierung.1402 DELETE nach Person/Kommen/Gehen/Kennzeichen **ohne Korrektur**, löscht alle passenden Korrekturvarianten. Keine eigene Transaktion/SP/Statusmarkierung/Calc/Archivierung; SQL30s. Arbeitszeiten.ID Identity; Manuell default1,Zeitereignisse0,Korrektur0,weitere Defaults lautSchema(U89/U99), nicht explizit als Anwendungsänderung gesetzt. FK aufPersonen undKennzeichen verlangt vorhandene IDs(U90); Filiale wird nicht gesetzt. SQL-Zeilenfehler werden geloggt und spätere Zeilen verarbeitet; Felderzugriff/Konvertierung undReadFields außerhalb SQL-Try können Restdatei abbrechen. LOG/yyyyMMdd_HHmmss_ImportSchnitt_ZeitbuchungenCSV.log; beiFehler zusätzlich monatliches Fehler.log über cFehlerLog, kein Fach-DB-Log daraus. **1400-F01:** äußeres Ausführen ohneReturn→False trotz möglicher Erfolgsmeldung. Import selbst liefertresult. Wiederholungsschutz COUNT/INSERT nicht atomar; keine Berechnungsmeldung aus Direktimport ableiten. Liefer-/EinheitenfragenQ15. ===== Direkte Einstellungen ===== Keine direkte fachliche ZW-Einstellung in diesem Einstiegsteil nachgewiesen; Einstellungen der belegten gemeinsamen Pfade folgen unten. ===== Direkte Feldbeziehungen ===== ^ Beziehung ^ Tabelle.Feld ^ Operation ^ Datenfluss / Verwendung ^ Bedingung ^ Beleg ^ | 1400-D001 | ''Arbeitszeiten.Person'' | SELECT | COUNT-Match für1401, Korrektur Teil des Matches | Satz1401 | B | | 1400-D002 | ''Arbeitszeiten.Kommen'' | SELECT | COUNT-Match für1401, Korrektur Teil des Matches | Satz1401 | B | | 1400-D003 | ''Arbeitszeiten.Gehen'' | SELECT | COUNT-Match für1401, Korrektur Teil des Matches | Satz1401 | B | | 1400-D004 | ''Arbeitszeiten.Kennzeichen'' | SELECT | COUNT-Match für1401, Korrektur Teil des Matches | Satz1401 | B | | 1400-D005 | ''Arbeitszeiten.Korrektur'' | SELECT | COUNT-Match für1401, Korrektur Teil des Matches | Satz1401 | B | | 1400-D006 | ''Arbeitszeiten.Person'' | INSERT | Dateifelder2–6 bei fehlendem exaktem Match | Satz1401 | B | | 1400-D007 | ''Arbeitszeiten.Kommen'' | INSERT | Dateifelder2–6 bei fehlendem exaktem Match | Satz1401 | B | | 1400-D008 | ''Arbeitszeiten.Gehen'' | INSERT | Dateifelder2–6 bei fehlendem exaktem Match | Satz1401 | B | | 1400-D009 | ''Arbeitszeiten.Kennzeichen'' | INSERT | Dateifelder2–6 bei fehlendem exaktem Match | Satz1401 | B | | 1400-D010 | ''Arbeitszeiten.Korrektur'' | INSERT | Dateifelder2–6 bei fehlendem exaktem Match | Satz1401 | B | | 1400-D011 | ''Arbeitszeiten.— Zeilen'' | DELETE | Person/Kommen/Gehen/Kennzeichen, alle Korrekturvarianten | Satz1402 | B | | 1400-D012 | ''Personen.PersonID'' | CONSTRAINT | Personen-FK, keine Anlage | Arbeitszeiten-INSERT | U90 | | 1400-D013 | ''Kennzeichen.Kennzeichen'' | CONSTRAINT | Kennzeichen-FK, keine Anlage | Arbeitszeiten-INSERT | U90 | ===== Direkte Rückmeldung und Logging (LEGACY) ===== Nur Info-/Logmeldungen, kein BASE-Start/Ende und keine daraus abgeleitete Mail/API. Dialoge hängen von SupressDialogs ab. Benutzerzuordnung über fnUserId/tblUser. Logging ist nicht mit dem Fachimport atomar; Defaults sind keine Livewerte. ==== 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 | ===== Quellen und Prüfstand ===== Geprüft am02.10.2026 gegen master, Commit ''f1d82a003b62f2658f06eaa943dc685ab219bdf3''. Kein aktueller Installations-/Live-Schema-/DLL-/Jobabgleich. Aprocon bezeichnet die externe Datenbankrolle, keinen bestätigten Schemanamen. Defaults/Computed-Spalten sind gesonderte Schemawirkung. Q02:Installationsgrenze; Q11:offene Motoranalyse; Q13/Q15:Liefer-/Einheiten-/Ersatzverträge. ^ Kürzel ^ Quelldatei am Commit ^ | E | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/ZW/Allgemein.vb|PEP4/ZW/Allgemein.vb]] | | P, LEGACY:P | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cSchnittstellen/Programme/cProgramme.vb|PEP4/cSchnittstellen/Programme/cProgramme.vb]] | | PRJ | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cSchnittstellen/cSchnittstellen.vbproj|PEP4/cSchnittstellen/cSchnittstellen.vbproj]] | | B | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cSchnittstellen/Programme/Schnittstellen/Generic/cSchnittZeitbuchungen.vb|PEP4/cSchnittstellen/Programme/Schnittstellen/Generic/cSchnittZeitbuchungen.vb]] | | F | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cSchnittstellen/allgemein.vb|PEP4/cSchnittstellen/allgemein.vb]] | | U89 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Update/update_0089.sql|Sqlfiles/PEP4Update/update_0089.sql]] | | U90 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Update/update_0090.sql|Sqlfiles/PEP4Update/update_0090.sql]] | | LOG | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/ZW/cFehlerLog.vb|PEP4/ZW/cFehlerLog.vb]] | | U99 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Update/update_0099.sql|Sqlfiles/PEP4Update/update_0099.sql]] | | U404 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Update/update_0404.sql|Sqlfiles/PEP4Update/update_0404.sql]] | | LEGACY:INFO | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cTools/cInfoTools.vb|PEP4/cTools/cInfoTools.vb]] | | LEGACY:INIT | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/ZW/Einstellungen/cSetting.vb|PEP4/ZW/Einstellungen/cSetting.vb]] | | LEGACY:SET | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/ZW/Einstellungen/cEinstellungenZw.vb|PEP4/ZW/Einstellungen/cEinstellungenZw.vb]] | | LEGACY:FN | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/fnUserId.sql|Sqlfiles/PEP4Functions/fnUserId.sql]] | Siehe auch: [[schnittstellen:schnittstellen|Übersicht der Schnittstellen]]. Keine Ausführung oder Fehlerkorrektur.