====== Schnittstelle 2015 – Kostenstellen importieren ====== Die Schnittstelle **2015** legt ''KRKostenstellen'' aus einer Datei an oder aktualisiert vorhandene Zeilen. Die Zuordnung zu einer Kostenstellengruppe wird jedoch nur **beim Anlegen** geschrieben. Umsatzdaten werden nicht unmittelbar geändert. Wenn eine vorhandene Kostenstelle in der Datei eine andere Gruppe erhält, bleibt ihre bisherige ''KRKostenstellenGruppe'' unverändert. Prüfe die Gruppenzuordnung nach dem Lauf; eine Erfolgsmeldung beweist keinen Gruppenwechsel. ===== Eingabedatei ===== ''PFAD'' verlangt eine vorhandene Datei. Der Parser liest UTF-8, Semikolon, Rand-Leerraumkürzung und eingeschlossene Anführungszeichen. Es gibt keinen ausdrücklichen Header-Skip; eine nichtnumerische ID wird still ausgelassen. Mindestens drei Felder sind nötig; weitere ab Position 6 werden ignoriert. Die Datei bleibt liegen. ^ Position ^ Zielfeld ^ Verarbeitung ^ | 1 | ''ID'' | Numerische Vorprüfung, dann ''CLng''; Match und INSERT. | | 2 | ''KRKostenstellenGruppe'' | ''CLng''; Pflichtfeld auch für vorhandene ID, aber nur beim INSERT geschrieben. | | 3 | ''Bezeichnung'' | Maximal 50 Zeichen; UPDATE/INSERT. | | 4 | ''AnteilKosten'' | Falls Feld fehlt: 1. Ist es vorhanden, wird ''CDbl'' verwendet; leer ist kein Fallback. | | 5 | ''Kostenträger100'' | Falls Feld fehlt: 0. Ist es vorhanden, wird ''CBool'' verwendet; leer ist kein Fallback. | Datum und Zahlformate sind nicht invariant festgelegt; Konvertierungen hängen von der Laufzeitkultur ab. Neue Gruppen-IDs müssen wegen des Fremdschlüssels in ''KRKostenstellenGruppen'' existieren. ===== Datenfluss und Ergebnis ===== Ein direktes parametriertes ''IF EXISTS/UPDATE/INSERT'' prüft ''KRKostenstellen.ID''. Bei Treffer schreibt es ''Bezeichnung'', ''AnteilKosten'' und ''Kostenträger100''. Bei Neuanlage schreibt es zusätzlich ''ID'' und ''KRKostenstellenGruppe''. Keine fachliche Stored Procedure, kein DELETE und keine unmittelbare ''Umsätze''-Änderung. Jede Zeile wird einzeln verarbeitet. Ohne Gesamttransaktion bleiben frühere Änderungen nach einem späteren Fehler bestehen. Wiederholte IDs können die drei UPDATE-Felder nacheinander ersetzen. Konvertierungs- und SQL-Fehler einer Zeile können protokolliert werden, während weitere Zeilen noch verarbeitet werden; Parserfehler können den Rest stoppen. ===== Einstellungen ===== Keine direkte fachliche ZW-Einstellung; ''SQL_TIMEOUT'' wird nicht ausdrücklich gesetzt. Die gemeinsame Basis verwendet bedingt ''GLOBAL_LOGLEVEL'', ''GLOBAL_LOGLEVELEVLOG'', ''MAIL_SCHNITTSTELLEONSUCCESS'', ''MAIL_SCHNITTSTELLEONERROR'', ''SCHNITT_MELDUNG_SchnittstelleOnSuccess'', ''SCHNITT_MELDUNG_SchnittstelleOnError'' und beim Versand ''MAIL_SCHNITTSTELLETO'', ''MAIL_SMTP_SERVER'', ''MAIL_USER'', ''MAIL_PASS'', ''MAIL_USEDEFAULTCREDENTIALS'', ''MAIL_SSL'', ''MAIL_TESTADRESSE'', ''MAIL_FROM'' und ''MAIL_FROM_NAME''. ''MANUELL'', ''SILENT'' und ''MAILTO'' sind Laufparameter. ===== Technische Referenz ===== ^ Merkmal ^ Wert ^ | Programmkennung | ''2015'' / ''ImpKRKostenstellen'' | | Einstieg | ''cSchnittKRKostenstellen.Import'' | | Fachlicher Ausgang | ''KRKostenstellen'': UPDATE der drei Felder oder INSERT mit Gruppe | | Fachliches SQL | Parametriertes Inline-SQL; keine fachliche SP | ===== Siehe auch ===== * [[schnittstellen:2014|Kostenstellengruppen importieren (2014)]] * [[schnittstellen:schnittstellen|Übersicht der dokumentierten Schnittstellen]] ===== Prüfstand ===== Am 25.09.2026 aus der statischen Analyse des Quellcommits ''f1d82a003b62f2658f06eaa943dc685ab219bdf3'' übernommen. Analyse vom 18.09.2026; kein Importlauf oder produktiver Schemaabgleich bestätigt.