====== Schnittstelle 2051: Kostenrechnungsstatistik neu erstellen ====== Dokumentiert / statisch geprüft: **2026-10-02**. Statisch dokumentiert einschließlich der nachgearbeiteten lokalen Folgeketten; 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 Werteformeln sind im folgenden Nacharbeitsabschnitt aufgelöst. ===== Befunde und Prüfgrenzen ===== ⚠ 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. ===== Nachgearbeiteter Formel- und Eingangsgraph (Q16 geschlossen) ===== Erstellen2 → cKRBerechnung.Laden → cKRDaten.AuswertungLaden, Kosten-/Objekttabellen, BWAFüllen und MengenTabelleFüllen. Es werden nur Ladeadapter und StatistikSpeichern2 ausgeführt; die daneben vorhandenen SpeichernKostenTräger-/Varianten-/Anteile- und alten MengenTabelleFüllenAlt-/StatistikSpeichern-Funktionen sind hier nicht erreichbar. Kosten: KRWerte.Wert/KRDaten.Wochen, multipliziert mit explizitem Kostenstellenanteil/Gesamtsumme oder Gemeinkostenanteil/Gesamtsumme und danach Objektanteil/Objektgesamtsumme. Nenner0 setzt Wert0; Wochen0 hat keinen entsprechenden Schutz. Separate Kostenarten bilden Kosten-/Gewinn-/Zwischensummen. Objekt-BWA liest Wochen-Umsätze und EK; Deckung=extern+intern−Belastung, Ergebnis=Deckung−Kosten. FaktorWarenwert gilt beim externen Objekt-EK, aber NICHT in gleicher Weise bei CG-/Gesamtsummen: deren EK wird ohne Faktor addiert. Daher können Objekt- und Gruppensummen bei Faktor≠1 auseinanderlaufen. Mengen: KRMengenWoche normalisiert auf sieben Tage; KRMengenLaden liefert fehlenden Produkt-/Gruppenkombinationen Ersatzmenge0,0001, verteilt Stammrest(1−Summe Variantenanteile) und Varianten. MengenTabelleFüllen nimmt nur Menge>0. Bei Kostenträger100: Menge×Anteil/Gesamt×AnteilMenge, sonst Menge×Anteil×AnteilMenge. Erster Pass summiert Arbeitsmenge×Baustein.Faktor je Kostenstelle; zweiter Pass verteilt Kosten proportional. CB erhält Bausteinkosten je Mengeneinheit, CG/CD/CE erhalten Gruppen-/Kostenartdetails. CB wird je Row zugewiesen, nicht addiert. CWn=Preis/Einheit, CWe=Preis; Warenwert erhöht Summe, ProduktEinheit×Summe ergibt Einheit. Der #If False-Preisdelta-Pfad ist inaktiv; Laden der Preisquelle ist damit keine belegte aktive Preisdelta-Wirkung. KR_SUMMEN_LADENALLE=False lässt NichtVerteilen-Kostenträger aus der Stammtabelle; True lädt sie. Varianten können fehlende Parent-Zeilen treffen. Export-Filter hängt an PreisKategorie.ApcID>0 und Zuordnung: nur zugeordnete Produkte mit Warenwert und je ausgewählter Gruppe Bausteinwert; nicht zugeordnete Zeilen werden bei CanExport aus TabelleP entfernt. Das Flag wird als Datenart−2 gespeichert, keine Exportdatei aus2051. Speicher: RefArt1 Kostenstelle/5 Objekt mit Menge0; RefArt2 CB und CWn; RefArt4 CE-Detailelemente, CWn oder Export. CE.RefID2=Kostenart, Datenart im aktiven Code jedoch CE-Spaltensuffix (Kostenstelle), nicht pauschal Baustein. Mengensuche verwendet denselben CB/CE-Suffix als KRKostenStellenBaustein-Key; CE ist Kostenstelle und kann daher falsch/gar nicht treffen. Menge dann0, sonst Menge×Anteil/100×AnteilMenge. Varianten werden bei RefArt4 erhalten, RefArt2-Bausteinzeilen setzen VarianteNULL. BWA-Mengen-/Schnittzeilen−10/−11/−20/−21 fließen ebenfalls als Datenart in die Kostenstellenstatistik. KRKRKostenTrägerErweitert liest Kostenträger/Waren-/Kostenträgergruppen und ersetzt Einheit<=0 durch StandardEinheit oder0; keine Schreibwirkung der View. fnVarcharToList splittet Kommalisten und konvertiert auch das letzte/leere Teilstück implizit zu BigInt; keine Validierung/Filterbereinigung. SQL-CTEs sind keine persistenten Tabellen. Statische lokale Feld-/Einstellungsanalyse abgeschlossen; produktive DDL und fachliche Formelerwartung bleiben Nutzerprüfung (Q02). ===== 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; Kosten-/Warenwertformeln siehe Nacharbeit | SET,B,C,WW | ^ Beziehung ^ Schlüssel / Variable ^ Default ^ Einflussweg ^ Wirkung ^ Beleg ^ | 2051-S003 | ''KR_SUMMEN_LADENALLE'' / ''KR_SUMMEN_LADENALLE'' | False | MengenTabelleErstellen→ZeilenErstellenKostenTräger | NichtVerteilen-Kostenträger trotzdem einbeziehen; verändert Produkt-/Statistikbestand | SET,D | 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-Kommaliste, siehe Nacharbeit | W | | 2051-D051 | ''KRDatenQuellen.KRKostenStellenGruppe'' | SELECT | Alternative Mengenquellen-Gruppenliste | fnVarcharToList-Kommaliste, siehe Nacharbeit | 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; Formeln und Zuordnung siehe Nacharbeit | C | | 2051-D059 | ''KRStatWerte.RefID'' | INSERT | Temp/Bulkwerte aus berechneten Kosten-/Produktzeilen | jede berechnete Kategorie; Formeln und Zuordnung siehe Nacharbeit | C | | 2051-D060 | ''KRStatWerte.Datenart'' | INSERT | Temp/Bulkwerte aus berechneten Kosten-/Produktzeilen | jede berechnete Kategorie; Formeln und Zuordnung siehe Nacharbeit | C | | 2051-D061 | ''KRStatWerte.Wert'' | INSERT | Temp/Bulkwerte aus berechneten Kosten-/Produktzeilen | jede berechnete Kategorie; Formeln und Zuordnung siehe Nacharbeit | C | | 2051-D062 | ''KRStatWerte.Menge'' | INSERT | Temp/Bulkwerte aus berechneten Kosten-/Produktzeilen | jede berechnete Kategorie; Formeln und Zuordnung siehe Nacharbeit | C | | 2051-D063 | ''KRStatWerte.Variante'' | INSERT | Temp/Bulkwerte aus berechneten Kosten-/Produktzeilen | jede berechnete Kategorie; Formeln und Zuordnung siehe Nacharbeit | C | | 2051-D064 | ''KRStatWerte.RefArt'' | INSERT | Temp/Bulkwerte aus berechneten Kosten-/Produktzeilen | jede berechnete Kategorie; Formeln und Zuordnung siehe Nacharbeit | C | | 2051-D065 | ''KRStatWerte.RefID2'' | INSERT | Temp/Bulkwerte aus berechneten Kosten-/Produktzeilen | jede berechnete Kategorie; Formeln und Zuordnung siehe Nacharbeit | 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 | ^ Beziehung ^ Tabelle.Feld ^ Operation ^ Datenfluss / Verwendung ^ Bedingung ^ Beleg ^ | 2051-D094 | ''KRKostenstellenBausteine.ID'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D095 | ''KRKostenstellenBausteine.KRKostenStelle'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D096 | ''KRKostenstellenBausteine.Bezeichnung'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D097 | ''KRKostenstellenBausteine.Faktor'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D098 | ''KRKostenTrägerAnteil.KRKostenTräger'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D099 | ''KRKostenTrägerAnteil.KRKostenStellenBaustein'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D100 | ''KRKostenTrägerAnteil.Anteil'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D101 | ''KRKostenTrägerAnteil.Variante'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D102 | ''KRKostenTrägerVarianten.KRKostenTräger'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D103 | ''KRKostenTrägerVarianten.Variante'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D104 | ''KRKostenTrägerVarianten.Bezeichnung'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D105 | ''KRKostenTrägerVarianten.Anteil'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D106 | ''KRKostenArten.ID'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D107 | ''KRKostenArten.Bezeichnung'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D108 | ''KRKostenArten.SeparatAusweisen'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D109 | ''KRKostenstellenObjekte.ID'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D110 | ''KRKostenstellenObjekte.Bezeichnung'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D111 | ''KRKostenstellenObjekte.PepGruppe'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D112 | ''KRKostenstellenObjekte.KRKostenStellenGruppe'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D113 | ''KRKostenstellenGruppen.ID'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D114 | ''KRKostenstellenGruppen.Bezeichnung'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D115 | ''KRKostenKonten.ID'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D116 | ''KRKostenKonten.KRDatenquelle'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D117 | ''KRKostenKonten.KRKostenArt'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D118 | ''KRKostenKontenAnteil.KRKostenKonto'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D119 | ''KRKostenKontenAnteil.KRDatenquelle'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D120 | ''KRKostenKontenAnteil.KRKostenstelle'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D121 | ''KRKostenKontenAnteil.Anteil'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D122 | ''KRKostenstellenObjekteAnteil.KRKostenKonto'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D123 | ''KRKostenstellenObjekteAnteil.KRDatenquelle'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D124 | ''KRKostenstellenObjekteAnteil.KRKostenstellenObjekt'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D125 | ''KRKostenstellenObjekteAnteil.Anteil'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D126 | ''KRKostenTräger.ID'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D127 | ''KRKostenTräger.Bezeichnung'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D128 | ''KRKostenTräger.Einheit'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D129 | ''KRKostenTräger.NichtVerteilen'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D130 | ''KRKostenTräger.KRWarenGruppe'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D131 | ''KRKostenTräger.Skonto'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D132 | ''KRKostenTräger.KRKostenTrägerGruppe'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D133 | ''KRKostenTräger.Rabatt'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D134 | ''KRKostenTräger.KRKostenstellenBaustein'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D135 | ''KRKostenTräger.MatchCode'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D136 | ''KRKostenTräger.Leergut'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D137 | ''KRKostenTräger.Vorlage'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D138 | ''KRKostenTräger.BezeichnungVorlage'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D139 | ''KRKostenTräger.AusVorlage'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D140 | ''KRWarenGruppen.ID'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D141 | ''KRWarenGruppen.Bezeichnung'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D142 | ''KRWarenGruppen.StandardEinheit'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D143 | ''KRWarenGruppen.NichtVerteilen'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D144 | ''KRKostenTrägerGruppen.ID'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | | 2051-D145 | ''KRKostenTrägerGruppen.Bezeichnung'' | SELECT | Ladeadapter / Formel-, Filter- oder Viewmetadaten; keine Stammspeicherung | Erstellen2→Laden→Auswertung/Mengentabelle | D,X,VIEW | ===== 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 BASE ===== 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. ==== Reichweite und Wiederverwendung ==== 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(). ==== 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 | Mail | 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 ===== ^ Kürzel ^ Quelldatei am geprüften Commit ^ | E | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/ZW/Allgemein.vb|PEP4/ZW/Allgemein.vb]] | | 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/Kostenrechnung/cSchnittKRStatistik.vb|PEP4/cSchnittstellen/Programme/Schnittstellen/Kostenrechnung/cSchnittKRStatistik.vb]] | | C | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cKostenrechnung/AnteileWerte/cKRBerechnung.vb|PEP4/cKostenrechnung/AnteileWerte/cKRBerechnung.vb]] | | D | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cKostenrechnung/AnteileWerte/cKRDaten.vb|PEP4/cKostenrechnung/AnteileWerte/cKRDaten.vb]] | | X | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cKostenrechnung/AnteileWerte/dsKRAnteile.xsd|PEP4/cKostenrechnung/AnteileWerte/dsKRAnteile.xsd]] | | K | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/KRKostenLaden.sql|Sqlfiles/PEP4Functions/KRKostenLaden.sql]] | | M | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/KRMengenLaden.sql|Sqlfiles/PEP4Functions/KRMengenLaden.sql]] | | W | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/KRMengenWoche.sql|Sqlfiles/PEP4Functions/KRMengenWoche.sql]] | | WW | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/KRWarenWertLaden.sql|Sqlfiles/PEP4Functions/KRWarenWertLaden.sql]] | | PG | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/PepGruppenWerte.sql|Sqlfiles/PEP4Functions/PepGruppenWerte.sql]] | | SET, BASE:SET | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/ZW/Einstellungen/cEinstellungenZw.vb|PEP4/ZW/Einstellungen/cEinstellungenZw.vb]] | | KPRJ | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cKostenrechnung/cKostenrechnung.vbproj|PEP4/cKostenrechnung/cKostenrechnung.vbproj]] | | U653 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Update/update_0653.sql|Sqlfiles/PEP4Update/update_0653.sql]] | | U698 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Update/update_0698.sql|Sqlfiles/PEP4Update/update_0698.sql]] | | U747 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Update/update_0747.sql|Sqlfiles/PEP4Update/update_0747.sql]] | | U866 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Update/update_0866.sql|Sqlfiles/PEP4Update/update_0866.sql]] | | VIEW | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/KRKRKostenTrägerErweitert.sql|Sqlfiles/PEP4Functions/KRKRKostenTrägerErweitert.sql]] | | LIST | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/fnVarcharToList.sql|Sqlfiles/PEP4Functions/fnVarcharToList.sql]] | | BASE:BASE | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cSchnittstellen/Programme/Schnittstellen/cSchnitt_Basis.vb|PEP4/cSchnittstellen/Programme/Schnittstellen/cSchnitt_Basis.vb]] | | BASE:MAIL | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cKommunikation/cMail.vb|PEP4/cKommunikation/cMail.vb]] | | BASE:API | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cSchnittstellen/cApiCall.vb|PEP4/cSchnittstellen/cApiCall.vb]] | | BASE:LOG | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cTools/cInfoTools.vb|PEP4/cTools/cInfoTools.vb]] | | BASE:INIT | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/ZW/Einstellungen/cSetting.vb|PEP4/ZW/Einstellungen/cSetting.vb]] | | BASE:USER | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/fnUserId.sql|Sqlfiles/PEP4Functions/fnUserId.sql]] | | BASE:DOC | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cHilfsprogramme/cDocument.vb|PEP4/cHilfsprogramme/cDocument.vb]] | Siehe auch: [[schnittstellen:schnittstellen|Übersicht der Schnittstellen]]. Keine Ausführung oder Codekorrektur.