Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Schnittstelle 2051: Kostenrechnungsstatistik neu erstellen
Dokumentation ins Wiki übernommen am 02.10.2026. Das ist keine Laufzeitabnahme.
Diese technische Referenz beschreibt die Eingänge, Datenwirkung und Ausgänge dieser Kennung im statisch geprüften Desktop-Quellenstand. Nutzerprüfung offen.
Dokumentiert / statisch geprüft: 2026-10-02. Teilweise dokumentiert: direkter Statistikersatz und Adapter-/SQL-Eingänge belegt; vollständiger Formel-/View-/UDF-Folgegraph offen (Q16); Nutzerprüfung offen. Keine Schnittstelle ausgeführt.
Identität und Quellenstand
eProgramm.CalcStatistik = 2051. Aktive feste Registrierung → cSchnittKRStatistik.Statistik_Erstellen (E,P). Projekteinschluss der genannten VB-Quellen geprüft (PRJ). 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.
Zweck und tatsächlicher Einstieg
Statistikberechnung, kein Dateiimport/-export. Statistik_Erstellen ruft immer Erstellen2 auf; auskommentierte DEBUG_KRSTATVERSION-Auswahl gehört nicht zum aktiven Pfad. DATVON/DATBIS/DATWARENWERT sind Datum-Requests ohne echte Defaults. Beschreibung „mo.w-13.j / so.w-1.j /0“ ist nur Vorschlag. BASE.SetDatum/cDatumMuster wertet alle drei aus, nicht short-circuit And.
Init lädt KRDatenQuellen/KRDaten, Kostenstellengruppen/Preiskategorien in den Arbeitsspeicher. Danach DELETE aller KRStatWerte mit KRStatDaten>0, unabhängig vom angefragten Zeitraum. Alle KRPreisKategorie werden berechnet. KostenElemente enthält Semikolonlisten: KG… für Kostenstellengruppen, DQ… für ausgeschlossene Quellen. Quellenart KO/MS/PR wählt je KRDatenQuelle MAX(ID) aus KRDaten, nicht explizit jüngstes Datum. cKRBerechnung.Laden lädt Kosten-/Mengen-/Preis-/Warenwert-/Umsatzquellen; StatistikSpeichern2 schreibt Statistik.
Gesicherte SQL-Eingänge und Ausgänge
Kein direkter EXEC einer Fach-SP. TableAdapter-SELECTs (X/D) rufen die UDFs KRKostenLaden, KRMengenLaden→KRMengenWoche, KRWarenWertLaden und PepGruppenWerte auf. KRPreise liest positive KRWerte.Wert, MAX je RefID/Variante für ausgewählte Daten. KRWarenWertLaden nutzt maximalen gültigen KRWarenwert.Preis * FaktorWarenwert; Einheit aus Kostenträger, sonst WarenGruppen.StandardEinheit. PepGruppenWerte normalisiert IstNetto/IstNettoIntern/EKPreis/EKPreisIntern auf eine Sieben-Tage-Woche für aktive InFilialUmsatz-Gruppen. 2051 liest damit Umsätze, schreibt dort aber im belegten Pfad nicht.
StatistikSpeichern2: temp #KRStatWerte (ID→Ziel.KRStatDaten) → SqlBulkCopy (ordinal, keine Mappings) → INSERT KRStatWerte(KRStatDaten,RefID,Datenart,Wert,Menge,Variante,RefArt,RefID2). Kopf KRStatDaten mit ID=Preiskategorie wird danach angelegt/aktualisiert (UmsatzVon/UmsatzBis,Beschreibung=AUTO,ts,UserID=0). RefArt1=Kostenstelle,5=Objekt; bei RefArt2/4 ist RefID der Kostenträger, CB/CE verwenden DatenArt=Baustein und CE.RefID2=Kostenart; CWn/Export-Zeilen verwenden Datenart−1/−2. Mengenzuordnung und vollständige Werteformeln sind noch nicht abschließend analysiert; kein vollständiger Feld-/Einstellungsausschluss aus diesem Teilindex.
Befunde und Teilanalysegrenze
⚠ Globaler positiver Statistikreset ohne Transaktion; Fehler können alte Werte löschen und nur einige Kategorien ersetzen. Bulk-Flush prüft dt.Columns.Count>75000 statt Rows.Count (Tabelle hat8 Spalten); erwartete Zwischenflushes fehlen. Int32-Arbeitsschlüssel gegenüber BigInt-SQL können überlaufen. Haupt-/Speicherkommandos und BulkCopy nutzen ungesetzte Providerdefault-Timeouts, TableAdapter SQL_TIMEOUT. Kopf erst nach Wertinsert. Update0653 enthielt einen Kopf-FK, Update0866 entfernt ihn ausdrücklich; kein zwingender FK-Fehler gegen vollständig migrierten Stand. Installationsstand Q02.
Q16: vorhandener cKRDaten-Formelmotor, View KRKRKostenTrägerErweitert und fnVarcharToList-Folgekette noch vollständig auflösen/indizieren. Kein fehlender Statistik-Einstiegscode. Direkte/benannte UDF-Eingänge und alle direkten Fachausgänge unten gesichert; weitere unindizierte Motorfelder bleiben unbekannt.
Einstellungen und gemeinsame Nebenwirkungen
Gemeinsames Profil: BASE (interne Referenz).
| Beziehung | Schlüssel / Variable | Default | Einflussweg | Wirkung | Beleg |
|---|---|---|---|---|---|
| 2051-S001 | SQL_TIMEOUT / SQLTimeOut | 60 | ZW → SQL/adapter | TableAdapter-Kommando-Timeout; direkte Haupt-/Speicherkommandos dagegen ohne ZW-Timeout | SET,D |
| 2051-S002 | KR_SUMMEN_FAKTORWARENWERT / KR_SUMMEN_FAKTORWARENWERT | 1 | ZW → Laden → KRWarenWertLaden(@Faktor) | Multiplikator des gültigen Warenwertpreises; Formelweiterverwendung Q16 | SET,B,C,WW |
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 |
|---|---|---|---|---|---|
| 2051-D001 | KRStatWerte.KRStatDaten | SELECT | Globaler Löschbereich KRStatDaten>0 | vor allen Kategorien | B |
| 2051-D002 | KRStatWerte.— Zeilen | DELETE | Alle Statistikwerte mit positivem Kopf, ohne Datumsgrenze | globaler Neulauf | B |
| 2051-D003 | KRPreisKategorie.ID | SELECT | Alle Kategorien, KG-Auswahl und DQ-Ausschlüsse | unbegrenzt | B |
| 2051-D004 | KRPreisKategorie.KostenElemente | SELECT | Alle Kategorien, KG-Auswahl und DQ-Ausschlüsse | unbegrenzt | B |
| 2051-D005 | KRPreisKategorie.ApcID | SELECT | CanExport bei ApcID>0; exportbezogene Formelspalten | Kategoriecache | C |
| 2051-D006 | KRPreisKategorieZuordnung.KRPreisKategorie | SELECT | Optionale Exportproduktzuordnung | gewählte Kategorie | C |
| 2051-D007 | KRPreisKategorieZuordnung.KRKostenTräger | SELECT | Optionale Exportproduktzuordnung | gewählte Kategorie | C |
| 2051-D008 | KRDatenQuellen.ID | SELECT | KO/MS/PR-Typ und DQ-Ausschluss | eingeschlossene Quellen | B |
| 2051-D009 | KRDatenQuellen.Art | SELECT | KO/MS/PR-Typ und DQ-Ausschluss | eingeschlossene Quellen | B |
| 2051-D010 | KRDaten.ID | SELECT | MAX(ID) je Quelle, Listen fürs Laden | alle Datenköpfe | B |
| 2051-D011 | KRDaten.KRDatenQuelle | SELECT | MAX(ID) je Quelle, Listen fürs Laden | alle Datenköpfe | B |
| 2051-D012 | KRWerte.RefID | SELECT | Positive Preise MAX je RefID/Variante | ausgewählte Datenliste | X |
| 2051-D013 | KRWerte.Wert | SELECT | Positive Preise MAX je RefID/Variante | ausgewählte Datenliste | X |
| 2051-D014 | KRWerte.Variante | SELECT | Positive Preise MAX je RefID/Variante | ausgewählte Datenliste | X |
| 2051-D015 | KRWerte.KRDaten | SELECT | Positive Preise MAX je RefID/Variante | ausgewählte Datenliste | X |
| 2051-D016 | Umsätze.GruppenID | SELECT | PepGruppenWerte: Sieben-Tage-Wochenwerte | DATVON…DATBIS | PG |
| 2051-D017 | Umsätze.Datum | SELECT | PepGruppenWerte: Sieben-Tage-Wochenwerte | DATVON…DATBIS | PG |
| 2051-D018 | Umsätze.IstNetto | SELECT | PepGruppenWerte: Sieben-Tage-Wochenwerte | DATVON…DATBIS | PG |
| 2051-D019 | Umsätze.IstNettoIntern | SELECT | PepGruppenWerte: Sieben-Tage-Wochenwerte | DATVON…DATBIS | PG |
| 2051-D020 | Umsätze.EKPreis | SELECT | PepGruppenWerte: Sieben-Tage-Wochenwerte | DATVON…DATBIS | PG |
| 2051-D021 | Umsätze.EKPreisIntern | SELECT | PepGruppenWerte: Sieben-Tage-Wochenwerte | DATVON…DATBIS | PG |
| 2051-D022 | PepGruppen.PEPGruppenID | SELECT | Umsatzgruppenfilter | aktiv1,InFilialUmsatz1 | PG |
| 2051-D023 | PepGruppen.InFilialUmsatz | SELECT | Umsatzgruppenfilter | aktiv1,InFilialUmsatz1 | PG |
| 2051-D024 | PepGruppen.aktiv | SELECT | Umsatzgruppenfilter | aktiv1,InFilialUmsatz1 | PG |
| 2051-D025 | KRWarenwert.KRKostenTräger | SELECT | MAX gültiger Preis | DATWARENWERT | WW |
| 2051-D026 | KRWarenwert.Preis | SELECT | MAX gültiger Preis | DATWARENWERT | WW |
| 2051-D027 | KRWarenwert.von | SELECT | MAX gültiger Preis | DATWARENWERT | WW |
| 2051-D028 | KRWarenwert.bis2 | SELECT | MAX gültiger Preis | DATWARENWERT | WW |
| 2051-D029 | KRKostenTräger.ID | SELECT | Warenwert-Einheit/Warengruppenfallback | Produktjoin | WW |
| 2051-D030 | KRKostenTräger.Einheit | SELECT | Warenwert-Einheit/Warengruppenfallback | Produktjoin | WW |
| 2051-D031 | KRKostenTräger.KRWarenGruppe | SELECT | Warenwert-Einheit/Warengruppenfallback | Produktjoin | WW |
| 2051-D032 | KRWarenGruppen.ID | SELECT | Einheitfallback wenn Kostenträger.Einheit⇐0 | gültiger Warenwert | WW |
| 2051-D033 | KRWarenGruppen.StandardEinheit | SELECT | Einheitfallback wenn Kostenträger.Einheit⇐0 | gültiger Warenwert | WW |
| 2051-D034 | KRKostenstellen.ID | SELECT | Adapter Grundbestand aller Kostenstellen | AuswertungLaden(-1) | X,D |
| 2051-D035 | KRKostenstellen.Bezeichnung | SELECT | Adapter Grundbestand aller Kostenstellen | AuswertungLaden(-1) | X,D |
| 2051-D036 | KRKostenstellen.AnteilKosten | SELECT | Adapter Grundbestand aller Kostenstellen | AuswertungLaden(-1) | X,D |
| 2051-D037 | KRKostenstellen.Kostenträger100 | SELECT | Adapter Grundbestand aller Kostenstellen | AuswertungLaden(-1) | X,D |
| 2051-D038 | KRKostenstellen.KRKostenstellenGruppe | SELECT | Adapter Grundbestand aller Kostenstellen | AuswertungLaden(-1) | X,D |
| 2051-D039 | KRKostenstellenObjekte.PepGruppe | SELECT | Objektzuordnung → PepGruppen.SRC | Adapter | X |
| 2051-D040 | PepGruppen.PEPGruppenID | SELECT | Objekt-SRC | Adapter | X |
| 2051-D041 | PepGruppen.SRC | SELECT | Objekt-SRC | Adapter | X |
| 2051-D042 | KRMengen.KRKostenTräger | SELECT | Wochenmenge sum(Menge)*7/Zeitraumtage | DATVON…DATBIS | W |
| 2051-D043 | KRMengen.PepGruppe | SELECT | Wochenmenge sum(Menge)*7/Zeitraumtage | DATVON…DATBIS | W |
| 2051-D044 | KRMengen.Datum | SELECT | Wochenmenge sum(Menge)*7/Zeitraumtage | DATVON…DATBIS | W |
| 2051-D045 | KRMengen.Menge | SELECT | Wochenmenge sum(Menge)*7/Zeitraumtage | DATVON…DATBIS | W |
| 2051-D046 | KRKostenstellenObjekte.PepGruppe | SELECT | Mengenzuordnung Gruppe | KRMengenWoche | W |
| 2051-D047 | KRKostenstellenObjekte.KRKostenStellenGruppe | SELECT | Mengenzuordnung Gruppe | KRMengenWoche | W |
| 2051-D048 | KRKostenstellenGruppen.ID | SELECT | Wochenmengen-Gruppenparameter | KRMengenWoche | W |
| 2051-D049 | KRKostenstellenGruppen.MengeGesamt | SELECT | Wochenmengen-Gruppenparameter | KRMengenWoche | W |
| 2051-D050 | KRDatenQuellen.ID | SELECT | Alternative Mengenquellen-Gruppenliste | fnVarcharToList weiter Q16 | W |
| 2051-D051 | KRDatenQuellen.KRKostenStellenGruppe | SELECT | Alternative Mengenquellen-Gruppenliste | fnVarcharToList weiter Q16 | W |
| 2051-D052 | KRDaten.ID | SELECT | Wert/Wochen als Menge | ausgewählte Mengenliste | W |
| 2051-D053 | KRDaten.KRDatenQuelle | SELECT | Wert/Wochen als Menge | ausgewählte Mengenliste | W |
| 2051-D054 | KRDaten.Wochen | SELECT | Wert/Wochen als Menge | ausgewählte Mengenliste | W |
| 2051-D055 | KRWerte.KRDaten | SELECT | Alternative Menge | ausgewählte Mengenliste | W |
| 2051-D056 | KRWerte.RefID | SELECT | Alternative Menge | ausgewählte Mengenliste | W |
| 2051-D057 | KRWerte.Wert | SELECT | Alternative Menge | ausgewählte Mengenliste | W |
| 2051-D058 | KRStatWerte.KRStatDaten | INSERT | Temp/Bulkwerte aus berechneten Kosten-/Produktzeilen | jede berechnete Kategorie; Formelvollständigkeit Q16 | C |
| 2051-D059 | KRStatWerte.RefID | INSERT | Temp/Bulkwerte aus berechneten Kosten-/Produktzeilen | jede berechnete Kategorie; Formelvollständigkeit Q16 | C |
| 2051-D060 | KRStatWerte.Datenart | INSERT | Temp/Bulkwerte aus berechneten Kosten-/Produktzeilen | jede berechnete Kategorie; Formelvollständigkeit Q16 | C |
| 2051-D061 | KRStatWerte.Wert | INSERT | Temp/Bulkwerte aus berechneten Kosten-/Produktzeilen | jede berechnete Kategorie; Formelvollständigkeit Q16 | C |
| 2051-D062 | KRStatWerte.Menge | INSERT | Temp/Bulkwerte aus berechneten Kosten-/Produktzeilen | jede berechnete Kategorie; Formelvollständigkeit Q16 | C |
| 2051-D063 | KRStatWerte.Variante | INSERT | Temp/Bulkwerte aus berechneten Kosten-/Produktzeilen | jede berechnete Kategorie; Formelvollständigkeit Q16 | C |
| 2051-D064 | KRStatWerte.RefArt | INSERT | Temp/Bulkwerte aus berechneten Kosten-/Produktzeilen | jede berechnete Kategorie; Formelvollständigkeit Q16 | C |
| 2051-D065 | KRStatWerte.RefID2 | INSERT | Temp/Bulkwerte aus berechneten Kosten-/Produktzeilen | jede berechnete Kategorie; Formelvollständigkeit Q16 | C |
| 2051-D066 | KRStatDaten.ID | SELECT | Vorhandener Statistik-Kopf | ID=Preiskategorie | C |
| 2051-D067 | KRStatDaten.ID | INSERT | KategorieID,DATVON,DATBIS,AUTO,jetzt,0 | Kopf fehlt; nach Werteinsert | C |
| 2051-D068 | KRStatDaten.UmsatzVon | INSERT | KategorieID,DATVON,DATBIS,AUTO,jetzt,0 | Kopf fehlt; nach Werteinsert | C |
| 2051-D069 | KRStatDaten.UmsatzBis | INSERT | KategorieID,DATVON,DATBIS,AUTO,jetzt,0 | Kopf fehlt; nach Werteinsert | C |
| 2051-D070 | KRStatDaten.Beschreibung | INSERT | KategorieID,DATVON,DATBIS,AUTO,jetzt,0 | Kopf fehlt; nach Werteinsert | C |
| 2051-D071 | KRStatDaten.ts | INSERT | KategorieID,DATVON,DATBIS,AUTO,jetzt,0 | Kopf fehlt; nach Werteinsert | C |
| 2051-D072 | KRStatDaten.UserID | INSERT | KategorieID,DATVON,DATBIS,AUTO,jetzt,0 | Kopf fehlt; nach Werteinsert | C |
| 2051-D073 | KRStatDaten.UmsatzVon | UPDATE | DATVON,DATBIS,AUTO,jetzt,0 | Kopf vorhanden; nach Werteinsert | C |
| 2051-D074 | KRStatDaten.UmsatzBis | UPDATE | DATVON,DATBIS,AUTO,jetzt,0 | Kopf vorhanden; nach Werteinsert | C |
| 2051-D075 | KRStatDaten.Beschreibung | UPDATE | DATVON,DATBIS,AUTO,jetzt,0 | Kopf vorhanden; nach Werteinsert | C |
| 2051-D076 | KRStatDaten.ts | UPDATE | DATVON,DATBIS,AUTO,jetzt,0 | Kopf vorhanden; nach Werteinsert | C |
| 2051-D077 | KRStatDaten.UserID | UPDATE | DATVON,DATBIS,AUTO,jetzt,0 | Kopf vorhanden; nach Werteinsert | C |
| 2051-D078 | #KRStatWerte.ID | INSERT | Ordinaler SqlBulkCopy aus Arbeitstabelle; ID wird Ziel-KRStatDaten | StatistikSpeichern2 | C |
| 2051-D079 | #KRStatWerte.RefID | INSERT | Ordinaler SqlBulkCopy aus Arbeitstabelle; ID wird Ziel-KRStatDaten | StatistikSpeichern2 | C |
| 2051-D080 | #KRStatWerte.Datenart | INSERT | Ordinaler SqlBulkCopy aus Arbeitstabelle; ID wird Ziel-KRStatDaten | StatistikSpeichern2 | C |
| 2051-D081 | #KRStatWerte.Wert | INSERT | Ordinaler SqlBulkCopy aus Arbeitstabelle; ID wird Ziel-KRStatDaten | StatistikSpeichern2 | C |
| 2051-D082 | #KRStatWerte.Menge | INSERT | Ordinaler SqlBulkCopy aus Arbeitstabelle; ID wird Ziel-KRStatDaten | StatistikSpeichern2 | C |
| 2051-D083 | #KRStatWerte.Variante | INSERT | Ordinaler SqlBulkCopy aus Arbeitstabelle; ID wird Ziel-KRStatDaten | StatistikSpeichern2 | C |
| 2051-D084 | #KRStatWerte.RefArt | INSERT | Ordinaler SqlBulkCopy aus Arbeitstabelle; ID wird Ziel-KRStatDaten | StatistikSpeichern2 | C |
| 2051-D085 | #KRStatWerte.RefID2 | INSERT | Ordinaler SqlBulkCopy aus Arbeitstabelle; ID wird Ziel-KRStatDaten | StatistikSpeichern2 | C |
| 2051-D086 | #KRStatWerte.ID | SELECT | INSERT in persistente KRStatWerte | jede Kategorie | C |
| 2051-D087 | #KRStatWerte.RefID | SELECT | INSERT in persistente KRStatWerte | jede Kategorie | C |
| 2051-D088 | #KRStatWerte.Datenart | SELECT | INSERT in persistente KRStatWerte | jede Kategorie | C |
| 2051-D089 | #KRStatWerte.Wert | SELECT | INSERT in persistente KRStatWerte | jede Kategorie | C |
| 2051-D090 | #KRStatWerte.Menge | SELECT | INSERT in persistente KRStatWerte | jede Kategorie | C |
| 2051-D091 | #KRStatWerte.Variante | SELECT | INSERT in persistente KRStatWerte | jede Kategorie | C |
| 2051-D092 | #KRStatWerte.RefArt | SELECT | INSERT in persistente KRStatWerte | jede Kategorie | C |
| 2051-D093 | #KRStatWerte.RefID2 | SELECT | INSERT in persistente KRStatWerte | jede Kategorie | C |
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). Nicht indizierte Folgefelder einer Teilanalyse sind unbekannt, nicht wirkungslos.
Gemeinsame Nebenwirkungen BASE
Einstellungen
| 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 |
Datenbeziehungen
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 |
Weitere Ausgänge und Grenzen
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.
Quellenverzeichnis
Siehe auch: Übersicht der Schnittstellen. Keine Ausführung oder Codekorrektur.