====== Schnittstelle 7022: PCS-Zeitdaten importieren ====== Dokumentiert / statisch geprüft: **2026-10-02**. Statisch dokumentiert; Nutzerprüfung offen. Keine Schnittstelle ausgeführt. ===== Identität und Quellenstand ===== ''eProgramm.PcsZeitdaten = 7022''. Aktive feste Registrierung → ''cSchnittPcs.ImportZeitdaten'' (E,P). Registrierung und erreichbare Quellen geprüft; installierte Binärdateien ungeprüft. Active=True, InAutomatik=true, ManuellerAufruf=true, 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. ===== Parameter und Datei-/DB-Eingang ===== PFAD (FileImport) vorhandene Jet4.0-PCS-Datenbank. Keine CSV als Eingang. SELECT * INTUSCOM_UPLOAD_BOOKINGS; alle Providerfelder werden ohne Header/Quotes/Escaping mit ';' und abschließendem ';' in ApplicationDirectory/BACKUP/yyyyMMdd_HHmmss_PCS_TIME.csv gesichert (StreamWriter StandardUTF8). Reihenfolge unbekannter weiterer Felder hängt am PCS-Schema; ausdrücklich verbraucht werden nur die fünf aufgeführten Felder. BACKUP wird nicht angelegt; gleicher Timestamp kann Sicherung überschreiben. BOOKING_DATE yyyyMMdd und BOOKING_TIME HHmmss über DateSerial/TimeSerial; ungültig→DateTime.MinValue. RECORD_TYPE getrimmt, nur erstes Zeichen als Kennung. Uhren.Art7/CLng(Adresse) muss zu CLng(TERMINAL_ID) passen. Unbekannte Terminals werden nur archiviert, nicht übernommen oder gelöscht. ===== Fach-SP, Quittierung und Ausgänge ===== ZeitbuchungAddTransponder @Transponder,@Datum,@Terminal,@Kennung,NULL,@UseTransponder2. Anders als7031 kein vorgelagerter ZeitereignisseImportiert-Marker. Kennung ist nicht auf K/G eingeschränkt: normale Zeitereignisse/Buffer, '-'→Tuer, 'L'→ZuordnungPnrTransponder_tmp mit NULL-Personalnummer möglich. NULL-Kennzeichen aktiviert gegebenenfalls CALC_ZE_KOSTENSTELLE_EINTRAGEN; TOP1 ITPEP-Fallback hat keinen Personenfilter/ORDER BY. Das kann falsche Hauptgruppen liefern. Nach SQL ohne Exception löscht PCS nach Ausweis/Datum/Uhrzeit, nicht Terminal oder RECORD_TYPE. Dadurch können weitere gleichzeitige Buchungen mitgelöscht werden, auch nicht selbst übernommene Gegenstellenzeilen. Bufferfall gilt ebenfalls als SQL-Erfolg und wird quittiert. Kein gemeinsamer Transaction-/Quittierungsvertrag zwischen beiden DBs. ===== Fehler und Wiederholung ===== PerZeile SQL- und PCS-DELETE-Fehler werden still gefangen; GesamtTrue trotz Fehler. Bei erfolgreichem SQL aber fehlgeschlagener Löschung bleibt Quellbuchung für Retry. Fach-SP-Dedup mit NULL-Kennzeichen ist nicht nullsicher; doppelte Ereignisse/Buffer/Türdaten möglich. Kein fachliches UPDATE von Zeiten, kein Calc-Aufruf. CStatus-Personenfilter tautologisch; normale neue Zeitereignisse markieren sämtliche gültigen aktiven Personen des Tages auf1, nicht ts. Äußere Fehler→False/LEGACY. Kein BASE-Mail/API, keine SQL_TIMEOUT-Zuweisung. ===== Einstellungen und gemeinsame Nebenwirkungen ===== Gemeinsames Profil: LEGACY (interne Referenz). ^ Beziehung ^ Schlüssel / Variable ^ Default ^ Einflussweg ^ Wirkung ^ Beleg ^ | 7022-S001 | ''Terminal_UseTransponder2'' / ''Terminal_UseTransponder2'' | False | Fach-SP sechstes Argument | Zusätzlicher Transponder2-Vergleich | B,PID,ZW | | 7022-S002 | ''CALC_ZE_KOSTENSTELLE_EINTRAGEN'' / ''CALCZEKostenstelleEintragen'' | 0 | SQL GetEinstellungZw bei KennzeichenNULL | TOP1 Hauptgruppe ohne Personenfilter: potentielle fremde Kostenstelle | ADD,GET,ZW | 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 ^ | 7022-D001 | ''Uhren.ID'' | SELECT | Art7/Adresse→TerminalID | VB verwirft Adresskonvertierungs-/Duplikatfehler still | B | | 7022-D002 | ''Uhren.FilialID'' | SELECT | Art7/Adresse→TerminalID | VB verwirft Adresskonvertierungs-/Duplikatfehler still | B | | 7022-D003 | ''Uhren.Adresse'' | SELECT | Art7/Adresse→TerminalID | VB verwirft Adresskonvertierungs-/Duplikatfehler still | B | | 7022-D004 | ''Uhren.Art'' | SELECT | Art7/Adresse→TerminalID | VB verwirft Adresskonvertierungs-/Duplikatfehler still | B | | 7022-D005 | ''PCS:INTUSCOM_UPLOAD_BOOKINGS.TERMINAL_ID'' | SELECT | SELECT * archiviert alle Providerfelder; diese5 fachlich verbraucht | Nur bekannte numerische Terminal_ID für SQL-Import | B | | 7022-D006 | ''PCS:INTUSCOM_UPLOAD_BOOKINGS.TIMEID_NO'' | SELECT | SELECT * archiviert alle Providerfelder; diese5 fachlich verbraucht | Nur bekannte numerische Terminal_ID für SQL-Import | B | | 7022-D007 | ''PCS:INTUSCOM_UPLOAD_BOOKINGS.BOOKING_DATE'' | SELECT | SELECT * archiviert alle Providerfelder; diese5 fachlich verbraucht | Nur bekannte numerische Terminal_ID für SQL-Import | B | | 7022-D008 | ''PCS:INTUSCOM_UPLOAD_BOOKINGS.BOOKING_TIME'' | SELECT | SELECT * archiviert alle Providerfelder; diese5 fachlich verbraucht | Nur bekannte numerische Terminal_ID für SQL-Import | B | | 7022-D009 | ''PCS:INTUSCOM_UPLOAD_BOOKINGS.RECORD_TYPE'' | SELECT | SELECT * archiviert alle Providerfelder; diese5 fachlich verbraucht | Nur bekannte numerische Terminal_ID für SQL-Import | B | | 7022-D010 | ''PCS:INTUSCOM_UPLOAD_BOOKINGS.— Zeilen'' | DELETE | WHERE TIMEID_NO,BOOKING_DATE,BOOKING_TIME | Nach SQL ohne Exception; Terminal/RECORD_TYPE fehlen im Löschschlüssel | B | | 7022-D011 | ''Personen.PersonID'' | SELECT | Transponderauflösung mit Nullenpadding und Schalter2 | Genau eine gültige Joinzeile; DATEFIRST-Bit | PID,TV | | 7022-D012 | ''Personen.Transponder'' | SELECT | Transponderauflösung mit Nullenpadding und Schalter2 | Genau eine gültige Joinzeile; DATEFIRST-Bit | PID,TV | | 7022-D013 | ''Personen.Transponder2'' | SELECT | Transponderauflösung mit Nullenpadding und Schalter2 | Genau eine gültige Joinzeile; DATEFIRST-Bit | PID,TV | | 7022-D014 | ''Personen.ZETage'' | SELECT | Transponderauflösung mit Nullenpadding und Schalter2 | Genau eine gültige Joinzeile; DATEFIRST-Bit | PID,TV | | 7022-D015 | ''Personen.Eintritt'' | SELECT | Transponderauflösung mit Nullenpadding und Schalter2 | Genau eine gültige Joinzeile; DATEFIRST-Bit | PID,TV | | 7022-D016 | ''Personen.Austritt'' | SELECT | Transponderauflösung mit Nullenpadding und Schalter2 | Genau eine gültige Joinzeile; DATEFIRST-Bit | PID,TV | | 7022-D017 | ''Personen.InZw'' | SELECT | Transponderauflösung mit Nullenpadding und Schalter2 | Genau eine gültige Joinzeile; DATEFIRST-Bit | PID,TV | | 7022-D018 | ''Personen.aktiv'' | SELECT | Transponderauflösung mit Nullenpadding und Schalter2 | Genau eine gültige Joinzeile; DATEFIRST-Bit | PID,TV | | 7022-D019 | ''ITORGA.PersonenStammID'' | SELECT | Gültige Personenauflösung | Buchungstag | PID | | 7022-D020 | ''ITORGA.von'' | SELECT | Gültige Personenauflösung | Buchungstag | PID | | 7022-D021 | ''ITORGA.bis2'' | SELECT | Gültige Personenauflösung | Buchungstag | PID | | 7022-D022 | ''Uhren.ID'' | SELECT | Terminalfiliale | Terminal muss existieren | ADD | | 7022-D023 | ''Uhren.FilialID'' | SELECT | Terminalfiliale | Terminal muss existieren | ADD | | 7022-D024 | ''ITUmbuchung.PersonID'' | SELECT | Konkrete/NULL-Altfiliale | Person/Tag | ADD | | 7022-D025 | ''ITUmbuchung.FilialeAlt'' | SELECT | Konkrete/NULL-Altfiliale | Person/Tag | ADD | | 7022-D026 | ''ITUmbuchung.FilialeNeu'' | SELECT | Konkrete/NULL-Altfiliale | Person/Tag | ADD | | 7022-D027 | ''ITUmbuchung.von'' | SELECT | Konkrete/NULL-Altfiliale | Person/Tag | ADD | | 7022-D028 | ''ITUmbuchung.bis2'' | SELECT | Konkrete/NULL-Altfiliale | Person/Tag | ADD | | 7022-D029 | ''Filialen.FilialID'' | SELECT | Aktive Ziel-Filiale | Nach Umbuchung | ADD | | 7022-D030 | ''Filialen.aktiv'' | SELECT | Aktive Ziel-Filiale | Nach Umbuchung | ADD | | 7022-D031 | ''Zeitereignisse.Datum'' | SELECT/INSERT | Dedup über6 Felder, neues Ereignis | Person/Filiale aufgelöst; Kennung nicht '-' | ADD | | 7022-D032 | ''Zeitereignisse.PersonID'' | SELECT/INSERT | Dedup über6 Felder, neues Ereignis | Person/Filiale aufgelöst; Kennung nicht '-' | ADD | | 7022-D033 | ''Zeitereignisse.Terminal'' | SELECT/INSERT | Dedup über6 Felder, neues Ereignis | Person/Filiale aufgelöst; Kennung nicht '-' | ADD | | 7022-D034 | ''Zeitereignisse.Kennzeichen'' | SELECT/INSERT | Dedup über6 Felder, neues Ereignis | Person/Filiale aufgelöst; Kennung nicht '-' | ADD | | 7022-D035 | ''Zeitereignisse.Kennung'' | SELECT/INSERT | Dedup über6 Felder, neues Ereignis | Person/Filiale aufgelöst; Kennung nicht '-' | ADD | | 7022-D036 | ''Zeitereignisse.Filiale'' | SELECT/INSERT | Dedup über6 Felder, neues Ereignis | Person/Filiale aufgelöst; Kennung nicht '-' | ADD | | 7022-D037 | ''Zeitereignisse.ts'' | INSERT | GETDATE | Neues Ereignis | ADD | | 7022-D038 | ''ZeitereignisseBuffer.Datum'' | SELECT/INSERT | Nicht aufgelöst, QuelleT; NULL-Gleichheit nicht sicherer Dedup | Kennung nicht '-' | ADD | | 7022-D039 | ''ZeitereignisseBuffer.Zeitausweis'' | SELECT/INSERT | Nicht aufgelöst, QuelleT; NULL-Gleichheit nicht sicherer Dedup | Kennung nicht '-' | ADD | | 7022-D040 | ''ZeitereignisseBuffer.Terminal'' | SELECT/INSERT | Nicht aufgelöst, QuelleT; NULL-Gleichheit nicht sicherer Dedup | Kennung nicht '-' | ADD | | 7022-D041 | ''ZeitereignisseBuffer.Kennzeichen'' | SELECT/INSERT | Nicht aufgelöst, QuelleT; NULL-Gleichheit nicht sicherer Dedup | Kennung nicht '-' | ADD | | 7022-D042 | ''ZeitereignisseBuffer.Kennung'' | SELECT/INSERT | Nicht aufgelöst, QuelleT; NULL-Gleichheit nicht sicherer Dedup | Kennung nicht '-' | ADD | | 7022-D043 | ''ZeitereignisseBuffer.PersonenStammID'' | SELECT/INSERT | Nicht aufgelöst, QuelleT; NULL-Gleichheit nicht sicherer Dedup | Kennung nicht '-' | ADD | | 7022-D044 | ''ZeitereignisseBuffer.Filiale'' | SELECT/INSERT | Nicht aufgelöst, QuelleT; NULL-Gleichheit nicht sicherer Dedup | Kennung nicht '-' | ADD | | 7022-D045 | ''ZeitereignisseBuffer.Quelle'' | SELECT/INSERT | Nicht aufgelöst, QuelleT; NULL-Gleichheit nicht sicherer Dedup | Kennung nicht '-' | ADD | | 7022-D046 | ''ITZeit.PersonenStammID'' | SELECT | Transponderauflösung | Buchungstag | PID | | 7022-D047 | ''ITZeit.von'' | SELECT | Transponderauflösung | Buchungstag | PID | | 7022-D048 | ''ITZeit.bis2'' | SELECT | Transponderauflösung | Buchungstag | PID | | 7022-D049 | ''ITZeit.IsAktiv'' | SELECT | Transponderauflösung | Buchungstag | PID | | 7022-D050 | ''EinstellungenZw.Einstellung'' | SELECT | Unvalidierter Kostenstellenrohwert | NULL-Kennzeichen | GET,ADD | | 7022-D051 | ''EinstellungenZw.Wert'' | SELECT | Unvalidierter Kostenstellenrohwert | NULL-Kennzeichen | GET,ADD | | 7022-D052 | ''ITPEP.von'' | SELECT | TOP1 gültige Hauptgruppe; Person nicht gefiltert | CALC_ZE_KOSTENSTELLE_EINTRAGEN<>0 | ADD | | 7022-D053 | ''ITPEP.bis'' | SELECT | TOP1 gültige Hauptgruppe; Person nicht gefiltert | CALC_ZE_KOSTENSTELLE_EINTRAGEN<>0 | ADD | | 7022-D054 | ''ITPEP.HauptGruppe'' | SELECT | TOP1 gültige Hauptgruppe; Person nicht gefiltert | CALC_ZE_KOSTENSTELLE_EINTRAGEN<>0 | ADD | | 7022-D055 | ''ITPEP.Pepgruppe'' | SELECT | TOP1 gültige Hauptgruppe; Person nicht gefiltert | CALC_ZE_KOSTENSTELLE_EINTRAGEN<>0 | ADD | | 7022-D056 | ''Tuer.Datum'' | SELECT/INSERT | '-' als Tür, keine Berechnung | NULL in Kennzeichen kann Dedup unwirksam machen | ADD | | 7022-D057 | ''Tuer.Zeitausweis'' | SELECT/INSERT | '-' als Tür, keine Berechnung | NULL in Kennzeichen kann Dedup unwirksam machen | ADD | | 7022-D058 | ''Tuer.Terminal'' | SELECT/INSERT | '-' als Tür, keine Berechnung | NULL in Kennzeichen kann Dedup unwirksam machen | ADD | | 7022-D059 | ''Tuer.Kennzeichen'' | SELECT/INSERT | '-' als Tür, keine Berechnung | NULL in Kennzeichen kann Dedup unwirksam machen | ADD | | 7022-D060 | ''Tuer.Kennung'' | SELECT/INSERT | '-' als Tür, keine Berechnung | NULL in Kennzeichen kann Dedup unwirksam machen | ADD | | 7022-D061 | ''Tuer.Filiale'' | SELECT/INSERT | '-' als Tür, keine Berechnung | NULL in Kennzeichen kann Dedup unwirksam machen | ADD | | 7022-D062 | ''Tuer.PersonenStammID'' | SELECT/INSERT | '-' als Tür, keine Berechnung | NULL in Kennzeichen kann Dedup unwirksam machen | ADD | | 7022-D063 | ''ZuordnungPnrTransponder_tmp.Datum'' | SELECT/INSERT | L-Kennung als Lernzuordnung | Personalnummer=NULL übergeben; Schemagrenze | ADD | | 7022-D064 | ''ZuordnungPnrTransponder_tmp.Personalnummer'' | SELECT/INSERT | L-Kennung als Lernzuordnung | Personalnummer=NULL übergeben; Schemagrenze | ADD | | 7022-D065 | ''ZuordnungPnrTransponder_tmp.Transponder'' | SELECT/INSERT | L-Kennung als Lernzuordnung | Personalnummer=NULL übergeben; Schemagrenze | ADD | | 7022-D066 | ''CStatus.PersonenStammID'' | SELECT | ITZeit-Join und Tagesfilter | SQL enthält @PersonID=@PersonID statt Personen-Spaltenfilter | ADD | | 7022-D067 | ''CStatus.Datum'' | SELECT | ITZeit-Join und Tagesfilter | SQL enthält @PersonID=@PersonID statt Personen-Spaltenfilter | ADD | | 7022-D068 | ''ITZeit.PersonenStammID'' | SELECT | Aktive Statuspersonen des Tages | Markierung kann alle aktiven Personen am Tag betreffen | ADD | | 7022-D069 | ''ITZeit.von'' | SELECT | Aktive Statuspersonen des Tages | Markierung kann alle aktiven Personen am Tag betreffen | ADD | | 7022-D070 | ''ITZeit.bis2'' | SELECT | Aktive Statuspersonen des Tages | Markierung kann alle aktiven Personen am Tag betreffen | ADD | | 7022-D071 | ''ITZeit.IsAktiv'' | SELECT | Aktive Statuspersonen des Tages | Markierung kann alle aktiven Personen am Tag betreffen | ADD | | 7022-D072 | ''CStatus.CStatus'' | UPDATE | 1 | Keine Berechnung; tautologischer Personenfilter | ADD | ===== 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/ 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 | [[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/SchnittstellenToEdit/cSchnittPcs.vb|PEP4/cSchnittstellen/Programme/SchnittstellenToEdit/cSchnittPcs.vb]] | | ADD | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/ZeitbuchungAddTransponder.sql|Sqlfiles/PEP4Functions/ZeitbuchungAddTransponder.sql]] | | PID | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/GetPersonIDFromTransponder.sql|Sqlfiles/PEP4Functions/GetPersonIDFromTransponder.sql]] | | TV | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/TransponderVergleich.sql|Sqlfiles/PEP4Functions/TransponderVergleich.sql]] | | GET | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/GetEinstellungZw.sql|Sqlfiles/PEP4Functions/GetEinstellungZw.sql]] | | ZW, LEGACY:SET | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/ZW/Einstellungen/cEinstellungenZw.vb|PEP4/ZW/Einstellungen/cEinstellungenZw.vb]] | | 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: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 Codekorrektur.