Dokumentiert / statisch geprüft: 2026-10-02. Statisch dokumentiert; Nutzerprüfung offen. Keine Schnittstelle ausgeführt.
eProgramm.IstZeitenAtomisieren = 6050. Aktive feste Registrierung → cSchnittTransfer.IstZeitenAtomisieren (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.
DATVON/DATBIS: Datumsmuster, registriert−100/0. BASE wertet sie aus; SQL-Fenster einschließlich. DATBIS um Mitternacht kann Gehen am Endtag ausschließen. Kein Dateiinput/-output und kein anschließendes Calc/CalcPep. Berechnete Ist-/Planwerte müssen bereits vorliegen.
Art1 TRANS_ATOM_PEP: zuerst globale Korrektur von Pep2.AnteilStempelzeit (InIstzeit1, Minutenanteile), globales TRUNCATE Istzeiten und StundenAtomar-Löschung im Fenster. Puffer aus Angerechnet und gewähltem positiven Anwesenheitswert. Plan-only: Summe(Netto)×24/Faktor aus PepBerechnet. Ohne Istplan erfolgt direkte Verteilung aus ITPEP.Anteil; restliche Puffer werden über alle Pep2-Anteile verteilt, nicht nur InIstzeit1. Danach globale KZNetto0-Korrektur bei Kennzeichen.Netto0, auch außerhalb des Fensters.
Art2 TRANS_ATOM_STEMPEL: Angerechnet>0 und gewählte Nettoquelle>0. Fehlende Arbeitszeit wird nur nach DATUM, nicht Person geprüft: Buchung einer anderen Person kann Direktverteilung blockieren. Netto2-Anteile je Person/Filiale/Tag; bei Gesamtsumme0 wird der volle Tageswert jeder Filiale zugeordnet. Gruppe erhält die Filiale, nicht eine PEP-Gruppen-ID. Plan-only-Person−1/Summe(Pep2.Netto) ohne ×24, anders als Art1.
Art3 TRANS_ATOM_PEP_DECKUNG: Planzeiten auf Datum rebased; Pause zunächst Gruppe−1, dann Nachbargruppe links/rechts zugeordnet, verwaiste Pause und Nullintervalle entfernt. Öffnungsrahmen aus Umsätze oder ganzer Tag, erweitert durch Minutenparameter; erstes/letztes Planintervall erweitert und auf Schnitt begrenzt. Arbeitszeiten.Netto1 wird gegen Rahmen geschnitten. Mehrfachüberschneidungen können mehrfach zählen. Pause ist keine Planzeit, kann aber über Rahmen Istzuordnung erhalten. Atom/AtomStunde unabhängig; Verdichtung Person−1, Faktor1.
Art1/2 liest Arbeitszeiten für Stunden separat, unabhängig von gewählter Nettoquelle: Kommen>=Von und Gehen⇐Bis, kein Geloeschtfilter. Mitternacht ist bei Stunde(Gehen)<Stunde(Kommen) nicht robust. Stundenanteile Minuten/60. Art3 zählt pro überlappender Stunde das ganze Planintervall per DATEDIFF, nicht nur den Stundenschnitt: Überzählungsrisiko.
Art1/2 liest AtomStunde/Verdichten und Art1 Quelle als SQL-Rohwerte; Art3 nutzt geladene VB-Werte. Reload/Validierung kann daher abweichende Stände ergeben. Kein Gesamtrollback/Lock über Puffer, DELETE/INSERT und Anteilsupdates. Parallele Läufe teilen Istzeiten. Deaktivierte Flags lassen Altbestand stehen; Wiederholung ersetzt nur jeweilige Zielbereiche. Nicht unterstützte Art → leere CommandText/Fehler, da CaseElse fehlt. CALC_Atomisieren_Rahmen_InPep wird hier nicht gelesen. Temp-Rahmen/-Resultate sind sitzungsintern.
Gemeinsames Profil: BASE (interne Referenz).
| Beziehung | Schlüssel / Variable | Default | Einflussweg | Wirkung | Beleg |
|---|---|---|---|---|---|
| 6050-S001 | SQL_TIMEOUT / SQLTimeOut | 60 | VB SQLCommand | Ausführungstimeout | B,ZW |
| 6050-S002 | CALC_Atomisieren_Art / tmpLong | 1 | VB SelectCase | 1PEP,2Stempelung,3PEPDeckung; andereWerteleereCommandText→Fehler | B,ZW |
| 6050-S003 | CALC_Atomisieren_Quelle / CALC_Atomisieren_Quelle | 4 | PEP SQLRohwert;Stempelung VBParameter | 1Anwesend,2AnwesendKZNetto,3AnwesendCut,4CutKZNetto,5Bezahlt,sonst0 | P1,P2,ZW |
| 6050-S004 | CALC_Atomisieren_RahmenAuf / CALC_Atomisieren_RahmenAuf | 0 | NurDeckung VBParameter | Minuten-Erweiterung Rahmen/erstesKommen/letztesGehen | B,P3,ZW |
| 6050-S005 | CALC_Atomisieren_RahmenZu / CALC_Atomisieren_RahmenZu | 0 | NurDeckung VBParameter | Minuten-Erweiterung Rahmen/erstesKommen/letztesGehen | B,P3,ZW |
| 6050-S006 | CALC_Atomisieren_RahmenPepAuf / CALC_Atomisieren_RahmenPepAuf | 0 | NurDeckung VBParameter | Minuten-Erweiterung Rahmen/erstesKommen/letztesGehen | B,P3,ZW |
| 6050-S007 | CALC_Atomisieren_RahmenPepZu / CALC_Atomisieren_RahmenPepZu | 0 | NurDeckung VBParameter | Minuten-Erweiterung Rahmen/erstesKommen/letztesGehen | B,P3,ZW |
| 6050-S008 | CALC_Atomisieren_Verdichten / CALC_Atomisieren_Verdichten | False | DeckungVB,PEP/StempelungSQLRohwert | PersonID-1/Faktor1, Dauer*Faktor; beiPEP/StempelungnurStundentabelle | B,P1,P2,P3,ZW |
| 6050-S009 | CALC_Atomisieren_Atom / CALC_Atomisieren_Atom | True | NurDeckung VBParameter | Tagestabelle löschen/neuschreiben; PEP/StempelungTagimmer | B,P3,ZW |
| 6050-S010 | CALC_Atomisieren_AtomStunde / CALC_Atomisieren_AtomStunde | True | DeckungVB,PEP/StempelungSQLRohwert | Stundentabelle löschen/neuschreiben; FalsebehältaltenStand | B,P1,P2,P3,ZW |
Defaults sind keine Livewerte. Melde-/Datei-/DB-Wirkungen sind nicht atomar.
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 |
|---|---|---|---|---|---|
| 6050-D001 | EinstellungenZw.Einstellung | SELECT | SQLGetEinstellungZw | PEPQuelle und1/2Stunde/Verdichten Rohwert, keinVBHashcheck | P1,P2,GET |
| 6050-D002 | EinstellungenZw.Wert | SELECT | SQLGetEinstellungZw | PEPQuelle und1/2Stunde/Verdichten Rohwert, keinVBHashcheck | P1,P2,GET |
| 6050-D003 | BerechneteZeiten.Person | SELECT | Istzeitenpuffer | 1/2Tag,Quelle>0;PEPAngerechnet<>0,Stempel>0 | P1,P2 |
| 6050-D004 | BerechneteZeiten.Datum | SELECT | Istzeitenpuffer | 1/2Tag,Quelle>0;PEPAngerechnet<>0,Stempel>0 | P1,P2 |
| 6050-D005 | BerechneteZeiten.Angerechnet | SELECT | Istzeitenpuffer | 1/2Tag,Quelle>0;PEPAngerechnet<>0,Stempel>0 | P1,P2 |
| 6050-D006 | BerechneteZeiten.Anwesend | SELECT | Istzeitenpuffer | 1/2Tag,Quelle>0;PEPAngerechnet<>0,Stempel>0 | P1,P2 |
| 6050-D007 | BerechneteZeiten.AnwesendKZNetto | SELECT | Istzeitenpuffer | 1/2Tag,Quelle>0;PEPAngerechnet<>0,Stempel>0 | P1,P2 |
| 6050-D008 | BerechneteZeiten.AnwesendCut | SELECT | Istzeitenpuffer | 1/2Tag,Quelle>0;PEPAngerechnet<>0,Stempel>0 | P1,P2 |
| 6050-D009 | BerechneteZeiten.AnwesendCutKZNetto | SELECT | Istzeitenpuffer | 1/2Tag,Quelle>0;PEPAngerechnet<>0,Stempel>0 | P1,P2 |
| 6050-D010 | BerechneteZeiten.AnwesendBezahlt | SELECT | Istzeitenpuffer | 1/2Tag,Quelle>0;PEPAngerechnet<>0,Stempel>0 | P1,P2 |
| 6050-D011 | BerechneteZeiten.NettoFaktor | SELECT | Istzeitenpuffer | 1/2Tag,Quelle>0;PEPAngerechnet<>0,Stempel>0 | P1,P2 |
| 6050-D012 | Istzeiten.— | TRUNCATE | GlobalgemeinsamerPuffer | Nur1/2;keineTaskisolation | P1,P2 |
| 6050-D013 | Istzeiten.Zeilen | TRUNCATE | GlobalgemeinsamerPuffer | Nur1/2;keineTaskisolation | P1,P2 |
| 6050-D014 | Istzeiten.Name | INSERT/SELECT | Angerechnet/gewähltesAnwesend/Faktor | Nur1/2Datumbereich | P1,P2 |
| 6050-D015 | Istzeiten.Datum | INSERT/SELECT | Angerechnet/gewähltesAnwesend/Faktor | Nur1/2Datumbereich | P1,P2 |
| 6050-D016 | Istzeiten.Brutto | INSERT/SELECT | Angerechnet/gewähltesAnwesend/Faktor | Nur1/2Datumbereich | P1,P2 |
| 6050-D017 | Istzeiten.Netto | INSERT/SELECT | Angerechnet/gewähltesAnwesend/Faktor | Nur1/2Datumbereich | P1,P2 |
| 6050-D018 | Istzeiten.Faktor | INSERT/SELECT | Angerechnet/gewähltesAnwesend/Faktor | Nur1/2Datumbereich | P1,P2 |
| 6050-D019 | Istzeiten.— | DELETE | Bereitsdirektverteiltentfernen | 1keinIstPlan,2KEINEArbeitszeitamDatum vonIRGENDEINERPerson | P1,P2 |
| 6050-D020 | Istzeiten.Zeilen | DELETE | Bereitsdirektverteiltentfernen | 1keinIstPlan,2KEINEArbeitszeitamDatum vonIRGENDEINERPerson | P1,P2 |
| 6050-D021 | Pep2.Name | SELECT | Planverteilung/Deckung undAnteile | 1 AnteilkorrekturGLOBAL,2Nettoohne*24,3PlanminutennachDatumrebased | P1,P2,P3,ANTEIL |
| 6050-D022 | Pep2.Datum | SELECT | Planverteilung/Deckung undAnteile | 1 AnteilkorrekturGLOBAL,2Nettoohne*24,3PlanminutennachDatumrebased | P1,P2,P3,ANTEIL |
| 6050-D023 | Pep2.Kommen | SELECT | Planverteilung/Deckung undAnteile | 1 AnteilkorrekturGLOBAL,2Nettoohne*24,3PlanminutennachDatumrebased | P1,P2,P3,ANTEIL |
| 6050-D024 | Pep2.Gehen | SELECT | Planverteilung/Deckung undAnteile | 1 AnteilkorrekturGLOBAL,2Nettoohne*24,3PlanminutennachDatumrebased | P1,P2,P3,ANTEIL |
| 6050-D025 | Pep2.Status | SELECT | Planverteilung/Deckung undAnteile | 1 AnteilkorrekturGLOBAL,2Nettoohne*24,3PlanminutennachDatumrebased | P1,P2,P3,ANTEIL |
| 6050-D026 | Pep2.Bereich | SELECT | Planverteilung/Deckung undAnteile | 1 AnteilkorrekturGLOBAL,2Nettoohne*24,3PlanminutennachDatumrebased | P1,P2,P3,ANTEIL |
| 6050-D027 | Pep2.Netto | SELECT | Planverteilung/Deckung undAnteile | 1 AnteilkorrekturGLOBAL,2Nettoohne*24,3PlanminutennachDatumrebased | P1,P2,P3,ANTEIL |
| 6050-D028 | Pep2.AnteilStempelzeit | SELECT | Planverteilung/Deckung undAnteile | 1 AnteilkorrekturGLOBAL,2Nettoohne*24,3PlanminutennachDatumrebased | P1,P2,P3,ANTEIL |
| 6050-D029 | Pep2.AnteilStempelzeit | UPDATE | Minutenanteil proPersonTag | Nur1GLOBALungefiltertDatum;InIstzeit1,Tagminuten<>0 | ANTEIL |
| 6050-D030 | PepBerechnet.PersonID | SELECT | Plan-only-Faktor | Nur1; bestehenderCachejoin | P1 |
| 6050-D031 | PepBerechnet.Datum | SELECT | Plan-only-Faktor | Nur1; bestehenderCachejoin | P1 |
| 6050-D032 | PepBerechnet.Faktor | SELECT | Plan-only-Faktor | Nur1; bestehenderCachejoin | P1 |
| 6050-D033 | ITPEP.PersonenStammID | SELECT | DirektverteilungohnePlan/Arbeitszeit | 1/2IstzeitenDatumgültig | P1,P2 |
| 6050-D034 | ITPEP.von | SELECT | DirektverteilungohnePlan/Arbeitszeit | 1/2IstzeitenDatumgültig | P1,P2 |
| 6050-D035 | ITPEP.bis2 | SELECT | DirektverteilungohnePlan/Arbeitszeit | 1/2IstzeitenDatumgültig | P1,P2 |
| 6050-D036 | ITPEP.PepGruppe | SELECT | DirektverteilungohnePlan/Arbeitszeit | 1/2IstzeitenDatumgültig | P1,P2 |
| 6050-D037 | ITPEP.Anteil | SELECT | DirektverteilungohnePlan/Arbeitszeit | 1/2IstzeitenDatumgültig | P1,P2 |
| 6050-D038 | ITZeit.PersonenStammID | SELECT | Plan-/Stundenfaktor | 2/3und1StundeGültigkeit;keinAktivfilter | P1,P2,P3 |
| 6050-D039 | ITZeit.von | SELECT | Plan-/Stundenfaktor | 2/3und1StundeGültigkeit;keinAktivfilter | P1,P2,P3 |
| 6050-D040 | ITZeit.bis2 | SELECT | Plan-/Stundenfaktor | 2/3und1StundeGültigkeit;keinAktivfilter | P1,P2,P3 |
| 6050-D041 | ITZeit.NettoFaktor | SELECT | Plan-/Stundenfaktor | 2/3und1StundeGültigkeit;keinAktivfilter | P1,P2,P3 |
| 6050-D042 | Arbeitszeiten.Person | SELECT | Stempelverteilung/Stunden/Deckung | Keingeloeschtfilter inAtom-SPs; 2ExistenzprüfungenurDatum nichtPerson | P1,P2,P3 |
| 6050-D043 | Arbeitszeiten.Filiale | SELECT | Stempelverteilung/Stunden/Deckung | Keingeloeschtfilter inAtom-SPs; 2ExistenzprüfungenurDatum nichtPerson | P1,P2,P3 |
| 6050-D044 | Arbeitszeiten.Kommen | SELECT | Stempelverteilung/Stunden/Deckung | Keingeloeschtfilter inAtom-SPs; 2ExistenzprüfungenurDatum nichtPerson | P1,P2,P3 |
| 6050-D045 | Arbeitszeiten.Gehen | SELECT | Stempelverteilung/Stunden/Deckung | Keingeloeschtfilter inAtom-SPs; 2ExistenzprüfungenurDatum nichtPerson | P1,P2,P3 |
| 6050-D046 | Arbeitszeiten.Kennzeichen | SELECT | Stempelverteilung/Stunden/Deckung | Keingeloeschtfilter inAtom-SPs; 2ExistenzprüfungenurDatum nichtPerson | P1,P2,P3 |
| 6050-D047 | Arbeitszeiten.Netto2 | SELECT | Stempelverteilung/Stunden/Deckung | Keingeloeschtfilter inAtom-SPs; 2ExistenzprüfungenurDatum nichtPerson | P1,P2,P3 |
| 6050-D048 | Kennzeichen.Kennzeichen | SELECT | Plananteile/Nettofilter/Pause | 1InIstzeitanteile,1/2StundenNetto1,3Anwesenheit+NettooderPause | P1,P2,P3,ANTEIL |
| 6050-D049 | Kennzeichen.InIstzeit | SELECT | Plananteile/Nettofilter/Pause | 1InIstzeitanteile,1/2StundenNetto1,3Anwesenheit+NettooderPause | P1,P2,P3,ANTEIL |
| 6050-D050 | Kennzeichen.Netto | SELECT | Plananteile/Nettofilter/Pause | 1InIstzeitanteile,1/2StundenNetto1,3Anwesenheit+NettooderPause | P1,P2,P3,ANTEIL |
| 6050-D051 | Kennzeichen.Anwesenheit | SELECT | Plananteile/Nettofilter/Pause | 1InIstzeitanteile,1/2StundenNetto1,3Anwesenheit+NettooderPause | P1,P2,P3,ANTEIL |
| 6050-D052 | Kennzeichen.IstPause | SELECT | Plananteile/Nettofilter/Pause | 1InIstzeitanteile,1/2StundenNetto1,3Anwesenheit+NettooderPause | P1,P2,P3,ANTEIL |
| 6050-D053 | PepGruppen.PEPGruppenID | SELECT | Plan-/Stunden-/Öffnungszuordnung | FilialGruppe1nur1/2Stunden;3Bereichjoin | P1,P2,P3 |
| 6050-D054 | PepGruppen.Filiale | SELECT | Plan-/Stunden-/Öffnungszuordnung | FilialGruppe1nur1/2Stunden;3Bereichjoin | P1,P2,P3 |
| 6050-D055 | PepGruppen.FilialGruppe | SELECT | Plan-/Stunden-/Öffnungszuordnung | FilialGruppe1nur1/2Stunden;3Bereichjoin | P1,P2,P3 |
| 6050-D056 | PepGruppen.SchnittÖffnung | SELECT | Plan-/Stunden-/Öffnungszuordnung | FilialGruppe1nur1/2Stunden;3Bereichjoin | P1,P2,P3 |
| 6050-D057 | Filialen.FilialID | SELECT | Pausenplanfreigabe | Nur3,NULLPauseStempelAb→2000 | P3 |
| 6050-D058 | Filialen.PauseStempelAb | SELECT | Pausenplanfreigabe | Nur3,NULLPauseStempelAb→2000 | P3 |
| 6050-D059 | Umsätze.GruppenID | SELECT | Deckungsrahmen | Nur3SchnittÖffnung1 sonst0..1440;fehlenderUmsatz→RahmenNULL | P3 |
| 6050-D060 | Umsätze.Datum | SELECT | Deckungsrahmen | Nur3SchnittÖffnung1 sonst0..1440;fehlenderUmsatz→RahmenNULL | P3 |
| 6050-D061 | Umsätze.Auf | SELECT | Deckungsrahmen | Nur3SchnittÖffnung1 sonst0..1440;fehlenderUmsatz→RahmenNULL | P3 |
| 6050-D062 | Umsätze.Zu | SELECT | Deckungsrahmen | Nur3SchnittÖffnung1 sonst0..1440;fehlenderUmsatz→RahmenNULL | P3 |
| 6050-D063 | StundenAtomar.— | DELETE | ZielTageersetzen | 1/2immer;3nurAtomTrue;inklusivDatVonBis | P1,P2,P3 |
| 6050-D064 | StundenAtomar.Zeilen | DELETE | ZielTageersetzen | 1/2immer;3nurAtomTrue;inklusivDatVonBis | P1,P2,P3 |
| 6050-D065 | StundenAtomar.Datum | INSERT | Tagesaggregate | 1PEP/ITPEPAnteile,2Stempelanteile,3Deckung; einigeFelderjeBranchunset | P1,P2,P3 |
| 6050-D066 | StundenAtomar.PersonID | INSERT | Tagesaggregate | 1PEP/ITPEPAnteile,2Stempelanteile,3Deckung; einigeFelderjeBranchunset | P1,P2,P3 |
| 6050-D067 | StundenAtomar.Gruppe | INSERT | Tagesaggregate | 1PEP/ITPEPAnteile,2Stempelanteile,3Deckung; einigeFelderjeBranchunset | P1,P2,P3 |
| 6050-D068 | StundenAtomar.Tätigkeit | INSERT | Tagesaggregate | 1PEP/ITPEPAnteile,2Stempelanteile,3Deckung; einigeFelderjeBranchunset | P1,P2,P3 |
| 6050-D069 | StundenAtomar.StundenPlanNetto | INSERT | Tagesaggregate | 1PEP/ITPEPAnteile,2Stempelanteile,3Deckung; einigeFelderjeBranchunset | P1,P2,P3 |
| 6050-D070 | StundenAtomar.StundenIstNettoKZNetto | INSERT | Tagesaggregate | 1PEP/ITPEPAnteile,2Stempelanteile,3Deckung; einigeFelderjeBranchunset | P1,P2,P3 |
| 6050-D071 | StundenAtomar.StundenIstNetto | INSERT | Tagesaggregate | 1PEP/ITPEPAnteile,2Stempelanteile,3Deckung; einigeFelderjeBranchunset | P1,P2,P3 |
| 6050-D072 | StundenAtomar.StundenBrutto | INSERT | Tagesaggregate | 1PEP/ITPEPAnteile,2Stempelanteile,3Deckung; einigeFelderjeBranchunset | P1,P2,P3 |
| 6050-D073 | StundenAtomar.Faktor | INSERT | Tagesaggregate | 1PEP/ITPEPAnteile,2Stempelanteile,3Deckung; einigeFelderjeBranchunset | P1,P2,P3 |
| 6050-D074 | StundenAtomar.Tätigkeit | SELECT | Kennzeichen.Netto-Prüfung | Nur1 globalUPDATE ohneDatumfilter | P1 |
| 6050-D075 | StundenAtomar.StundenIstNettoKZNetto | UPDATE | Auf0 beiKennzeichen.Netto0 | Nur1GLOBALauchandereTage | P1 |
| 6050-D076 | StundenAtomarStunde.— | DELETE | StundenStandersetzen | NurAtomStundeTrue,inklusivDatumfenster | P1,P2,P3 |
| 6050-D077 | StundenAtomarStunde.Zeilen | DELETE | StundenStandersetzen | NurAtomStundeTrue,inklusivDatumfenster | P1,P2,P3 |
| 6050-D078 | StundenAtomarStunde.Datum | INSERT | Stunden0..23 ausDauern | VerdichtenPerson-1/Faktor1;1/2mitITZeitFilialgruppen | P1,P2,P3 |
| 6050-D079 | StundenAtomarStunde.Stunde | INSERT | Stunden0..23 ausDauern | VerdichtenPerson-1/Faktor1;1/2mitITZeitFilialgruppen | P1,P2,P3 |
| 6050-D080 | StundenAtomarStunde.PersonID | INSERT | Stunden0..23 ausDauern | VerdichtenPerson-1/Faktor1;1/2mitITZeitFilialgruppen | P1,P2,P3 |
| 6050-D081 | StundenAtomarStunde.Gruppe | INSERT | Stunden0..23 ausDauern | VerdichtenPerson-1/Faktor1;1/2mitITZeitFilialgruppen | P1,P2,P3 |
| 6050-D082 | StundenAtomarStunde.StundenIstNettoKzNetto | INSERT | Stunden0..23 ausDauern | VerdichtenPerson-1/Faktor1;1/2mitITZeitFilialgruppen | P1,P2,P3 |
| 6050-D083 | StundenAtomarStunde.Faktor | INSERT | Stunden0..23 ausDauern | VerdichtenPerson-1/Faktor1;1/2mitITZeitFilialgruppen | P1,P2,P3 |
| 6050-D084 | StundenAtomarStunde.StundenPlanNetto | INSERT | Deckungsplan proStunde | Nur3;ganzePlanintervallDauer wirdproerreichteStunde wiederholt stattanteil | P3 |
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.
Block17 ergänzt explizit5314/5315/5316/5317/5318/5319/5323/5324/5325/5326/5327/5328/6000/6006/6007/6008/6009. Alle nutzen BASE-Start/Ende;6001/6002/6003/6004/6005 verwenden LEGACY statt BASE. Fachverträge jeID, keine automatische gemeinsame Kunden-/Dateiwirkung.
Stand: 2026-10-02 · Commit f1d82a003b62f2658f06eaa943dc685ab219bdf3. Gilt ausdrücklich für Block 01: 1012, 1013, 1016, 1017, 1018, 1019, 1079, 1080, 1082, 2016 sowie Block 02: 2011, 2012, 2014, 2015, 2017, 2018, 2019, 2033, 2034, 2041 sowie Block 03: 1057, 1058, 1059, 1060, 2030, 2035, 2040, 2042, 2044 sowie Block 04: 2053, 2054, 1081, 2031, 2052 sowie Block 05: 2045, 2050 sowie Block 06: 3044, Block 08: 1010, 1011, 1015 und Block 10: 1047, 1051 sowie Block 12: 1064. 2024, 1020, 1030, 1048, 1049, 1050, 1052, 1053, 1054, 1061, 1062 und 1063 verwenden diese Basis nicht. 1078 enthält die gleichversionierten Beziehungen weiterhin in seiner Einzelbeschreibung; keine Doppelzählung für 1078. Kein Test-/Deploymentnachweis.
Block 13 ergänzt ausdrücklich 1065,1066,1068,1069,1071,1072,1074: aktive Implementierungen bzw. Hilfsinstanzen erben BASE und rufen Start/Ende auf. Bei 1074 ist AusführungEnde nur bei unbehelligtem Abschluss erreichbar; Ressourcen-/DB-/SP-Fehler können es überspringen. 1067/1070/1073 verwenden direkte LEGACY-Meldungen.
Block14 ergänzt ausdrücklich 1104,1105,1106,1108,1109,1150,1210,1214,1215,1222. Aktive Klassen/Instanzen erben BASE und starten/beenden den Lauf; ungefangene Fehler können das Ende überspringen. Nur gemeinsame Rückmeldung, keine Gesamttransaktion oder erfolgreiche Fachwirkung. 1203 hat keinen BASE-/LEGACY-Pfad.
Block15 ergänzt ausdrücklich 2025/2026/2027/2049 mit erreichbarem Instanz-Start/Ende. Die aktiven Veraltet-Stubs 2028/2029/2032/2046/2047/2048 nutzen trotz Klassenvererbung nur den direkten LEGACY-Meldepfad; keine BASE-Ausführung. 2022 hat keinen Delegate.
Block16 ergänzt ausdrücklich 2051/2055/3043/3512/3513/3520/3521/3522. WebZerf2 nutzt Multi-Start/Ende mit BASE je Teilstufe; IsMultiSchnitt reduziert Dialoge, nicht Mail-/API-Wirkungen. Nach Fehlern können weitere Teilstufen starten. 3011 ohne Delegate;3031/3032/3041/3042/3060/3500 nur LEGACY.
Die ausdrücklich zugeordneten Programmregistrierungen mit ihren Implementierungen erben cSchnitt_Basis und rufen AusführungStart/AusführungEnde auf. Gemeinsam geprüfte Basisklasse/Registrierung; Mail-/Logging-/API-Details aus der dokumentierten Pilotprüfung desselben Commits wiederverwendet. Nicht automatisch auf jede zukünftige Schnittstelle übertragen: Erreichbarkeit, Overrides, Sonderpfade und Quellenstand jeweils prüfen.
Start setzt Status/Protokoll zurück. Fehlerstatus steigt nur (0→1→2). Fehlerfrei() ist True nur bei Status 0. SILENT unterdrückt die Startanzeige und beendet AusführungEnde sofort. MANUELL wird über Schlüsselinzidenz erkannt, unterdrückt direkte Mail und API-sendmail, nicht die API-Meldung selbst. MAILTO leer → MAIL_SCHNITTSTELLETO. Bei nicht lokal gefangener Exception kann der Abschluss ausfallen (besonders 1079/1082); 2016 hat einen getrennten Rückgabe-/Fehlerstatusbefund; 2017 reicht ebenfalls den Instanzstatus nicht als Shared-Rückgabe durch. 1057–1060 besitzen untypisierte Shared-Einstiege ohne Return (Nothing) und übernehmen Modul nicht; Instanz-Abschluss separat betrachten. Die acht Exporte aus Block 02/03 verwenden cSchnittExport mit Start/Ende.
Erfolg: OnSuccess; Fehlerstatus 1: OnSuccess ODER OnError; Stoppstatus 2: OnError. Mail nur nicht MANUELL und nicht SILENT; API wird sonst unabhängig vom sendmail-Schalter aufgerufen. Direkte Mail speichert Body/Outbox in eigener Transaktion (keine Fachimporttransaktion). SendOutbox(5) kann ältere fällige Schnittstellenmails versenden und deren Anhänge lesen; diese Fachpfade erzeugen selbst keine Anhänge. SMTP-Testadresse kann Zieladresse ersetzen. Mail-/API-Ergebnis ist kein verlässlicher Bestandteil von Fehlerfrei().
| Beziehung | Schlüssel / Variable | Default | Einfluss | Wirkung | Beleg |
|---|---|---|---|---|---|
| BASE-S001 | MAIL_SCHNITTSTELLEONSUCCESS / MAIL_SchnittstelleOnSuccess | False | Basis | Direkte Mail bei Result 0 oder1, nicht MANUELL/SILENT | BASE:BASE, BASE:SET |
| BASE-S002 | MAIL_SCHNITTSTELLEONERROR / MAIL_SchnittstelleOnError | False | Basis | Direkte Mail bei Result 1 oder2, nicht MANUELL/SILENT | BASE:BASE, BASE:SET |
| BASE-S003 | SCHNITT_MELDUNG_SchnittstelleOnSuccess / SCHNITT_MELDUNG_SchnittstelleOnSuccess | False | Basis/API | sendmail=1 bei Result 0 oder1, nicht MANUELL/SILENT; API-Meldung sonst weiterhin sendmail=0 | BASE:BASE, BASE:SET |
| BASE-S004 | SCHNITT_MELDUNG_SchnittstelleOnError / SCHNITT_MELDUNG_SchnittstelleOnError | True | Basis/API | sendmail=1 bei Result 1 oder2, nicht MANUELL/SILENT | BASE:BASE, BASE:SET |
| BASE-S005 | MAIL_SCHNITTSTELLETO / MAIL_SchnittstelleTo | leer | Ersatz bei leerem MAILTO; Semikolonliste | BASE:MAIL, BASE:SET | |
| BASE-S006 | MAIL_SMTP_SERVER / MAIL_SMTPServer | leer | SMTP | Server für direkten Versand | BASE:MAIL, BASE:SET |
| BASE-S007 | MAIL_USER / MAIL_User | leer | SMTP | Nichtleer setzt NetworkCredential und überschreibt Defaultcredentials | BASE:MAIL, BASE:SET |
| BASE-S008 | MAIL_PASS / MAIL_Pass | leer; verschlüsselte Einstellung | SMTP | Passwort für explizite Credentials; kein Geheimnis dokumentiert | BASE:MAIL, BASE:SET |
| BASE-S009 | MAIL_USEDEFAULTCREDENTIALS / MAIL_UseDefaultCredentials | False | SMTP | SmtpClient.UseDefaultCredentials; ggf. durch MAIL_USER überschrieben | BASE:MAIL, BASE:SET |
| BASE-S010 | MAIL_SSL / MAIL_SSL | True | SMTP | SmtpClient.EnableSsl | BASE:MAIL, BASE:SET |
| BASE-S011 | MAIL_TESTADRESSE / MAIL_TestAdresse | nichtleere Testadresse im Quellcode (Wert bewusst nicht kopiert) | SMTP | Nichtleer ersetzt tatsächlichen To-Empfänger, auch wenn MAILTO gesetzt | BASE:MAIL, BASE:SET |
| BASE-S012 | MAIL_FROM / MAIL_From | leer | SMTP | Absenderadresse | BASE:MAIL, BASE:SET |
| BASE-S013 | MAIL_FROM_NAME / MAIL_FromName | leer | SMTP | Absendername | BASE:MAIL, BASE:SET |
| BASE-S014 | GLOBAL_LOGLEVEL / GLOBAL_LOGLEVEL | 50 | Logging | Persistenz bei InfoLevel>=Schwelle; Start/Erfolg51, ImportError102 | BASE:INIT, BASE:LOG, BASE:SET |
| BASE-S015 | GLOBAL_LOGLEVELEVLOG / GLOBAL_LOGLEVELEVENTLOG | 0 | Logging | Eventlog bei Level>Schwelle, Schwelle>0 und Level<200 | BASE:INIT, BASE:LOG, BASE:SET |
DB-Rolle Anmeldung; Logging über cInfoTools-Verbindung. Keine Geheimnisse/Livewerte. Indizes verknüpfen jede Mitglieds-ID mit diesen Beziehungen, auch wenn die Details nur einmal stehen.
| Beziehung | Tabelle.Feld | Operation | Datenfluss / Verwendung | Bedingung | Beleg |
|---|---|---|---|---|---|
| BASE-D001 | Dokumente.oFilename | INSERT | MAIL_BODY | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D002 | Dokumente.oFilesize | INSERT | Byteanzahl Body | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D003 | Dokumente.Daten | INSERT | cFn.StringToByteArray(MailBody) | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D004 | Dokumente.UserID | INSERT | dbo.fnUserId() | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D005 | Dokumente.ts | INSERT | getdate() | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D006 | Outbox.mTo | INSERT | MAILTO oder MAIL_SCHNITTSTELLETO; je Semikolonadresse | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D007 | Outbox.mCc | INSERT | leer | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D008 | Outbox.mFrom | INSERT | leer | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D009 | Outbox.mSubject | INSERT | Statusabhängiger Betreff | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D010 | Outbox.mBodyID | INSERT | ID des gespeicherten Bodys | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D011 | Outbox.mBodyHtml | INSERT | False | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D012 | Outbox.mDelayUntil | INSERT | getdate() | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D013 | Outbox.mStatus | INSERT | 1 | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D014 | Outbox.mSize | INSERT | Bodyzeichenanzahl (ohne Anhänge) | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D015 | Outbox.refArt | INSERT | 0 | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D016 | Outbox.RefID | INSERT | 0 | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D017 | Outbox.MailArt | INSERT | 5 (SchnittstellenMeldung) | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D018 | Outbox.UserID | INSERT | fnUserId() | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D019 | Outbox.ts | INSERT | getdate() | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D020 | Outbox.ID | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D021 | Outbox.mFrom | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D022 | Outbox.mTo | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D023 | Outbox.mCc | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D024 | Outbox.mBodyID | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D025 | Outbox.mSubject | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D026 | Outbox.mBodyHtml | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D027 | Outbox.mStatus | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D028 | Outbox.mDelayUntil | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D029 | Outbox.MailArt | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D030 | Outbox.mSent | UPDATE | Erfolg → getdate() | Versandpfad | BASE:MAIL |
| BASE-D031 | Outbox.mStatus | UPDATE | Erfolg → 0; Fehler → +1, bei Status 20 pauschal -1 ohne WHERE | Versandpfad | BASE:MAIL |
| BASE-D032 | Outbox.mDelayUntil | UPDATE | Fehler → Staffel 2/5/10/30 Minuten; ab Status 12 CASE ohne ELSE → NULL | Versandpfad | BASE:MAIL |
| BASE-D033 | Dokumente.ID | SELECT | Body/Anhänge laden | Versandpfad | BASE:MAIL, BASE:DOC |
| BASE-D034 | Dokumente.oFilename | SELECT | Body/Anhänge laden | Versandpfad | BASE:MAIL, BASE:DOC |
| BASE-D035 | Dokumente.Daten | SELECT | Body/Anhänge laden | Versandpfad | BASE:MAIL, BASE:DOC |
| BASE-D036 | OutboxAttachment.OutBoxID | SELECT | Anhangszuordnung; diese Basisaufrufe erstellt selbst keine Anhänge | SendOutbox kann ältere Mailart-5-Einträge versenden | BASE:MAIL |
| BASE-D037 | OutboxAttachment.DokumenteID | SELECT | Anhangszuordnung; diese Basisaufrufe erstellt selbst keine Anhänge | SendOutbox kann ältere Mailart-5-Einträge versenden | BASE:MAIL |
| BASE-D038 | Pep3Log.UserID | INSERT | fnUserId() | InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich | BASE:LOG |
| BASE-D039 | Pep3Log.Datum | INSERT | getdate() | InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich | BASE:LOG |
| BASE-D040 | Pep3Log.Kurz | INSERT | Kurztext max255 | InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich | BASE:LOG |
| BASE-D041 | Pep3Log.LogText | INSERT | Protokoll | InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich | BASE:LOG |
| BASE-D042 | Pep3Log.Modul | INSERT | Modulname max50 | InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich | BASE:LOG |
| BASE-D043 | Pep3Log.InfoLevel | INSERT | Start/Erfolg=51; Importfehler=102; weitere Mail-Meldungen | InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich | BASE:LOG |
| BASE-D044 | tblUser.Name | SELECT | fnUserId: min(UserID) WHERE Name=RIGHT(SUSER_NAME(),25), sonst 0 | Mail-/Logpersistenz | BASE:USER |
| BASE-D045 | tblUser.UserID | SELECT | fnUserId: min(UserID) WHERE Name=RIGHT(SUSER_NAME(),25), sonst 0 | Mail-/Logpersistenz | BASE:USER |
Logdateien unter ApplicationData/PEP/LogFiles; kontextabhängig Windows-Eventlog. Start/Erfolg InfoLevel 51, Importfehler 102; Schwellen beeinflussen Persistenz. SQL-fnUserId liest tblUser anhand RIGHT(SUSER_NAME(),25). API Send(MELDUNG) nutzt Anmeldungskontext und fest codierten Endpoint; dessen Serverimplementierung fehlt in dieser Quellenbasis (Q01).
Bekannte gemeinsame Befunde aus Pilot: Outbox-Retry bei Status 20 setzt mStatus=-1 ohne WHERE; Retry-CASE ab Status 12 ohne ELSE → NULL. Nicht korrigiert. Keine Kundendaten oder Zugangswerte übertragen.
Siehe auch: Übersicht der Schnittstellen. Keine Ausführung oder Codekorrektur.