====== Schnittstelle 1210: Personaldatei aus Aprocon ====== Diese technische Referenz beschreibt die Eingänge, Ausgänge und aktiven Codepfade von **Personaldatei aus Aprocon**. Sie ist keine Anleitung zur ungeprüften Ausführung. Stand: **02.10.2026**, Desktop-Commit ''f1d82a003b62f2658f06eaa943dc685ab219bdf3''. Statisch dokumentiert; Nutzerprüfung offen. Kein Import, Datenbank- oder HTTP-Test. Dokumentiert / statisch geprüft: **2026-10-02**. Statisch dokumentiert; Nutzerprüfung offen. Keine Schnittstelle ausgeführt. ===== Identität und Quellenstand ===== ''eProgramm.ImpPersonalApc = 1210''. Aktive feste Registrierung → ''cSchnittPersonalAproconFile.Ausführen''; Projekteinschluss bestätigt (E,P,PRJ). Active=True, InAutomatik=True und ManuellerAufruf=True (Registrierung bzw. Klassendefault); NurAufServer=False (Default bzw. Registrierung). Keine Aussage über eingerichtete Automatik oder produktive Nutzung. ===== Zweck und Dateivertrag ===== PFAD=FileImport, BASE-SetFile prüft Datei. Encoding.Default, Semikolon, Quotes/Trim, **keine Kopfzeilenbehandlung/Feldzahlprüfung**. Positionen ab1:1 PersonID (NzLong),2 Vorname,3 Nachname (NzStr). Leere/nichtnumerische ID wird übersprungen bzw.0. Staging SCHNITT_Namen global TRUNCATE → INSERT → dbo.SCHNITT_ApcPersonen. ===== SQL-Wirkung ===== Nur fehlende Personen anlegen, Nachname/Vorname und ApcID=PersonID. Bestehende Personen aus Staging löschen, deren Namen **nicht aktualisieren**. Neue Personen Eintritt/StartZW auf01.01.2020, ITZeit/ITORGA mit festen Basis-IDs1/von2020 erzeugen. Fehlende Basisstämme1 anlegen; RMCalc/RMPause nur wenn auch RM1 neu ist. Uhren für **alle** Filialen erzeugen, deren FilialID noch keine gleichnamige Uhren.ID besitzt. ===== Betrieb und Befunde ===== Keine fachliche ZW-Einstellung zusätzlich zur Basis. Commands30s, keine SP-Timeoutüberschreibung/Transaktion/Archivierung/Calc. U463 bestätigt Namenstaging, weitere Ergänzungen sind Schemaabhängigkeit. Gefangener Importfehler setzt Fehlerstatus1; Abschluss/Fehlerfrei sind separat von Fachteilstand. **1210-F01:** Die Bezeichnung Personalimport bedeutet nicht Personalaktualisierung; vorhandene Namen/IT-Sätze bleiben unverändert. **1210-F02:** Feste 2020-Beginne/Basis-IDs und breite Uhrenanlage vor Test klären (Q13). Test: doppelte Datei, vorhandene Person mit geändertem Namen, fehlendes RMCalc bei bestehendem RM1, fremde Filialen. ===== Systemeinstellungen und gemeinsame Nebenwirkungen ===== Gemeinsames Profil: BASE (interne Referenz). Keine zusätzliche fachliche ZW-Einstellung im lokalen Importpfad gelesen. Timeoutwerte stehen im Betriebsabschnitt, nicht automatisch SQL_TIMEOUT zuordnen. Nur belegte Profilzuordnung; Fachdaten und Rückmeldung sind nicht atomar. Defaults sind keine Livewerte. ===== Feldbeziehungen ===== Unqualifizierte Fachobjekte in der Anmeldedatenbank; ''Import.dbo'' ausdrücklich Importdatenbank. Dateifelder stehen separat im Dateivertrag. ^ Beziehung ^ Tabelle.Feld ^ Operation ^ Datenfluss / Verwendung ^ Bedingung ^ Beleg ^ | 1210-D001 | ''SCHNITT_Namen.— Zeilen'' | TRUNCATE | Gesamtes Staging | Vor Dateilesen | B | | 1210-D002 | ''SCHNITT_Namen.PersonID'' | INSERT | Pos1/3/2 aus Datei | Aktiver Pfad; kein Laufzeitnachweis | B | | 1210-D003 | ''SCHNITT_Namen.Nachname'' | INSERT | Pos1/3/2 aus Datei | Aktiver Pfad; kein Laufzeitnachweis | B | | 1210-D004 | ''SCHNITT_Namen.Vorname'' | INSERT | Pos1/3/2 aus Datei | Aktiver Pfad; kein Laufzeitnachweis | B | | 1210-D005 | ''SCHNITT_Namen.PersonID'' | SELECT | Nur neue Personen | SP-Pfad | SQL | | 1210-D006 | ''SCHNITT_Namen.Nachname'' | SELECT | Nur neue Personen | SP-Pfad | SQL | | 1210-D007 | ''SCHNITT_Namen.Vorname'' | SELECT | Nur neue Personen | SP-Pfad | SQL | | 1210-D008 | ''SCHNITT_Namen.— Zeilen'' | DELETE | Bereits bestehende PersonIDs aus Staging entfernen | Nach Ausgabe neuer IDs | SQL | | 1210-D009 | ''Personen.PersonID'' | SELECT/INSERT | Datei-ID; Neuanlage bei fehlender Person | SP-Pfad | SQL | | 1210-D010 | ''Personen.Nachname'' | INSERT | Dateinamen und ApcID=PersonID | Nur neue Personen | SQL | | 1210-D011 | ''Personen.Vorname'' | INSERT | Dateinamen und ApcID=PersonID | Nur neue Personen | SQL | | 1210-D012 | ''Personen.ApcID'' | INSERT | Dateinamen und ApcID=PersonID | Nur neue Personen | SQL | | 1210-D013 | ''Personen.Eintritt'' | UPDATE | 01.01.2020 | Nur im Lauf neu angelegte Personen | SQL | | 1210-D014 | ''Personen.StartZW'' | UPDATE | 01.01.2020 | Nur im Lauf neu angelegte Personen | SQL | | 1210-D015 | ''RMZuschlag.ID'' | SELECT/INSERT | 1/BASIS | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D016 | ''RMZuschlag.Bezeichnung'' | SELECT/INSERT | 1/BASIS | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D017 | ''RMRahmen.ID'' | SELECT/INSERT | 1/BASIS | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D018 | ''RMRahmen.Bezeichnung'' | SELECT/INSERT | 1/BASIS | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D019 | ''RM.ID'' | SELECT/INSERT | 1/Standard/getdate | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D020 | ''RM.Bezeichnung'' | SELECT/INSERT | 1/Standard/getdate | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D021 | ''RM.ts'' | SELECT/INSERT | 1/Standard/getdate | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D022 | ''RMCalc.RMID'' | SELECT/INSERT | 1/1.1.2000/1/1 (nur wenn RM1 fehlte) | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D023 | ''RMCalc.von'' | SELECT/INSERT | 1/1.1.2000/1/1 (nur wenn RM1 fehlte) | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D024 | ''RMCalc.RMZuschlagID'' | SELECT/INSERT | 1/1.1.2000/1/1 (nur wenn RM1 fehlte) | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D025 | ''RMCalc.RMRahmenID'' | SELECT/INSERT | 1/1.1.2000/1/1 (nur wenn RM1 fehlte) | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D026 | ''RMPause.RMID'' | SELECT/INSERT | 1/1.1.2000 (nur wenn RM1 fehlte) | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D027 | ''RMPause.von'' | SELECT/INSERT | 1/1.1.2000 (nur wenn RM1 fehlte) | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D028 | ''RMAZPlan.ID'' | SELECT/INSERT | 1/getdate | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D029 | ''RMAZPlan.ts'' | SELECT/INSERT | 1/getdate | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D030 | ''AuszahlungsGruppen.ID'' | SELECT/INSERT | 1/BASIS | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D031 | ''AuszahlungsGruppen.Bezeichnung'' | SELECT/INSERT | 1/BASIS | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D032 | ''Regionen.ID'' | SELECT/INSERT | 1/BASIS | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D033 | ''Regionen.Bezeichnung'' | SELECT/INSERT | 1/BASIS | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D034 | ''Filialen.FilialID'' | SELECT/INSERT | 1/BASIS/1 | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D035 | ''Filialen.Bezeichnung'' | SELECT/INSERT | 1/BASIS/1 | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D036 | ''Filialen.Region'' | SELECT/INSERT | 1/BASIS/1 | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D037 | ''Abteilungen.AbteilungID'' | SELECT/INSERT | 1/BASIS | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D038 | ''Abteilungen.Bezeichnung'' | SELECT/INSERT | 1/BASIS | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D039 | ''Hierarchiestufen.HiID'' | SELECT/INSERT | 1/BASIS | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D040 | ''Hierarchiestufen.HiBezeichnung'' | SELECT/INSERT | 1/BASIS | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D041 | ''Kostenstellen.ID'' | SELECT/INSERT | 1/BASIS | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D042 | ''Kostenstellen.Bezeichnung'' | SELECT/INSERT | 1/BASIS | Fehlende Basis; RMCalc/Pause nur RM-neu | SQL | | 1210-D043 | ''ITZeit.PersonenStammID'' | INSERT | PersonID/1.1.2020/1/1/1 | Nur neue Personen | SQL | | 1210-D044 | ''ITZeit.von'' | INSERT | PersonID/1.1.2020/1/1/1 | Nur neue Personen | SQL | | 1210-D045 | ''ITZeit.RMID'' | INSERT | PersonID/1.1.2020/1/1/1 | Nur neue Personen | SQL | | 1210-D046 | ''ITZeit.RMAZPlanID'' | INSERT | PersonID/1.1.2020/1/1/1 | Nur neue Personen | SQL | | 1210-D047 | ''ITZeit.Auszahlung'' | INSERT | PersonID/1.1.2020/1/1/1 | Nur neue Personen | SQL | | 1210-D048 | ''ITORGA.PersonenStammID'' | INSERT | PersonID/1.1.2020/1/1/1/1 | Nur neue Personen | SQL | | 1210-D049 | ''ITORGA.von'' | INSERT | PersonID/1.1.2020/1/1/1/1 | Nur neue Personen | SQL | | 1210-D050 | ''ITORGA.Filiale'' | INSERT | PersonID/1.1.2020/1/1/1/1 | Nur neue Personen | SQL | | 1210-D051 | ''ITORGA.Abteilung'' | INSERT | PersonID/1.1.2020/1/1/1/1 | Nur neue Personen | SQL | | 1210-D052 | ''ITORGA.Hierarchiestufe'' | INSERT | PersonID/1.1.2020/1/1/1/1 | Nur neue Personen | SQL | | 1210-D053 | ''ITORGA.Kostenstelle'' | INSERT | PersonID/1.1.2020/1/1/1/1 | Nur neue Personen | SQL | | 1210-D054 | ''Filialen.FilialID'' | SELECT | Uhrenanlage für **alle** Filialen | SP-Ende | SQL | | 1210-D055 | ''Filialen.Bezeichnung'' | SELECT | Uhrenanlage für **alle** Filialen | SP-Ende | SQL | | 1210-D056 | ''Uhren.ID'' | SELECT/INSERT | FilialID/Filialbezeichnung/FilialID/0; fehlt Uhren-ID | Alle Filialen, nicht nur Importfiliale | SQL | | 1210-D057 | ''Uhren.Bezeichnung'' | SELECT/INSERT | FilialID/Filialbezeichnung/FilialID/0; fehlt Uhren-ID | Alle Filialen, nicht nur Importfiliale | SQL | | 1210-D058 | ''Uhren.FilialID'' | SELECT/INSERT | FilialID/Filialbezeichnung/FilialID/0; fehlt Uhren-ID | Alle Filialen, nicht nur Importfiliale | SQL | | 1210-D059 | ''Uhren.Art'' | SELECT/INSERT | FilialID/Filialbezeichnung/FilialID/0; fehlt Uhren-ID | Alle Filialen, nicht nur Importfiliale | SQL | ===== Teststatus und Pflege ===== Keine Laufzeit-/Live-Schema-/Lieferformat-Abnahme. Fachbefunde und Grenzen siehe oben und Fragen (interne Referenz); kundenspezifische Trigger/Constraints, DLLs und Jobs bleiben Q02. Nutzerprüfung offen. [[schnittstellen:schnittstellen|Schnittstellenübersicht]] ===== Gemeinsame Rückmeldung ===== Die Basis kann abhängig von MAIL_SCHNITTSTELLEONSUCCESS/ONERROR, MAIL_SCHNITTSTELLETO und SMTP-Einstellungen Mail speichern/versenden (Dokumente/Outbox). SCHNITT_MELDUNG_SchnittstelleOnSuccess/OnError steuert sendmail der Rückmeldungs-API, nicht deren gesamten Aufruf. MANUELL unterdrückt Mail, SILENT beendet den Abschluss früh. GLOBAL_LOGLEVEL/GLOBAL_LOGLEVELEVLOG steuert Logging (Pep3Log/Eventlog). Keine Fachimporttransaktion und kein API-Erfolgsnachweis; Serverwirkung bleibt ungeprüft. ===== Quellen je Datei ===== Repository: seegerstefan/pep4desktop, master, obiger Commit. Je Datei ein Quellenlink; Kürzel in den Tabellen. Private Git-Quellen setzen Zugriffsrechte voraus. ^ 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]] | | SET | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/ZW/Einstellungen/cEinstellungenZw.vb|PEP4/ZW/Einstellungen/cEinstellungenZw.vb]] | | B | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cSchnittstellen/Programme/Schnittstellen/Aprocon/cSchnittPersonalAproconFile.vb|PEP4/cSchnittstellen/Programme/Schnittstellen/Aprocon/cSchnittPersonalAproconFile.vb]] | | SQL | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/SCHNITT_ApcPersonen.sql|Sqlfiles/PEP4Functions/SCHNITT_ApcPersonen.sql]] | | U463 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Update/update_0463.sql|Sqlfiles/PEP4Update/update_0463.sql]] | ===== Offene Abnahme ===== Externe Liefer-/API-Verträge und installierte Migrationen sind nicht bestätigt. Vor einem Test die beschriebenen Datenrisiken in einer isolierten Umgebung klären. Bei1214/1215 sind weitere Calc-/CalcPep-Feldwirkungen ausdrücklich noch nicht vollständig analysiert. [[schnittstellen:schnittstellen|Übersicht aller Schnittstellen]]