Bankdefinition DKB
Hallo!
Die DKB hat eine wundervolle CSV-Datei, die beim Import doch massiv Probleme verursacht. Ich spreche hier mal direkt Stefano Kowalke an. Siehst du einen Fehler?
Ich habe auch eine Beispiel CSV angehangen. Er importiert mir trotzdem immer 8 Zeilen, obwohl ich ihm sage, es geht erst ab der 8. los.
Parameter:
Trenner: Semikolon
Trennzeichen: LF (lt. Notepad++)
Zeichensatz: IsoLatin1
Textbegrenzer: "
Download: https://marc-funk.de/files/DKB.csv
' Aktionen nur im ersten Durchlauf ausführen: Variablen deklarieren
if ( NOT HasVariable("zeile") )
dim zeile as number
set zeile to zeile + 8
endif
' Abbrechen, wenn nicht mindestens 11 Felder in Importdatei vorhanden sind
if ( NOT HasVariable("Spalte_011") )
beep
msgBox("Fehler beim Lesen der Exportdatei (Ungültiges Datensatzformat)!")
set Vorlage_Import_OK to FALSE
exit
endif
' Wertstellungsdatum
set Vorlage_Datum to TextToDate(Spalte_002)
' Buchungstext
set Vorlage_Text to Spalte_005
' Betrag
set Vorlage_Betrag to FTextToNumber(Spalte_008)
' Debitoren-/Kreditorenkonto bei gefundenem OP zuweisen
set Vorlage_Konto to GetKontoDebitor(Vorlage_Text, Vorlage_Betrag)
set Vorlage_Konto to IfThen(Vorlage_Konto = "", GetKontoKreditor(Vorlage_Text, Vorlage_Betrag), Vorlage_Konto)
-
Moin Marc Funk,
Edit: falsche Erklärung gelöscht.Schau Dir mal meine Importdefinition an:
https://github.com/Konafets/mo-bank-import-definitions/blob/main/GLS-Gemeinschaftsbank.txt
Um zu steuern, dass Aktionen nur beim ersten Durchlauf ausgeführt werden, habe ich eine selbst definierte Variable genommen.
Zumal habe ich dort alle Spalten einmal in Variablen gespeichert, damit wird das weitere Script etwas übersichtlicher und besser lesbarer. -
Folgende Definition habe ich erstellt - jetzt hab ich nach dem Import nur noch 6 Zeilen...
' ---------------------------------------------------------------------------------
' Importdefinition für DKB-Bank-Umsatzdateien
' Importeinstellungen:
' Quelle : Textdatei (*)
' Trennzeichen für Felder : Semikolon
' Trennzeichen für Datensätze: LF
' Zeichensatz für : IsoLatin1 (Windows)
' Text in Anführungszeichen : Doppelt "
' ---------------------------------------------------------------------------------' Aktionen nur im ersten Durchlauf ausführen: Variablen deklarieren
if ( NOT HasVariable("valid") )
dim valid as boolean
dim zeile as number
dim buchungsdatum as text
dim valuta as text
dim empfaenger as text
dim sender as text
dim buchungstext as text
dim betrag as number
dim iban as text
endif' Die Umsatzdaten beginnen erst ab Zeile 8, die Zeilen davor verwerfen
set zeile to zeile + 7' Zeilen ohne Valuta und ohne Sender werden nicht
if (Spalte_002 = "" AND Spalte_004 = "")
set Vorlage_Zeile_OK to FALSE
exit
endif' Abbrechen, wenn nicht mindestens 11 Felder in Importdatei vorhanden sind
if ( NOT HasVariable("Spalte_011") )
beep
msgBox("Fehler beim Lesen der DKB-Exportdatei (Ungültiges Datensatzformat)!")
set Vorlage_Import_OK to FALSE
exit
endif' ---------------------------------------------------------------------------------
' Die Spalten den Variablen zuordnen
' ---------------------------------------------------------------------------------set buchungsdatum to Spalte_001
set valuta to Spalte_002
set empfaenger to Spalte_004
set sender to Spalte_004
set buchungstext to Spalte_005
set betrag to FTextToNumber(Spalte_008)
set iban to Spalte_006
' ---------------------------------------------------------------------------------
' Importfelder den Datenfeldern zuordnen
' ---------------------------------------------------------------------------------' Datum
set Vorlage_Datum to TextToDate(valuta)' Text
set Vorlage_Text to buchungstext' Betrag (Vorzeichen umwandeln)
set Vorlage_Betrag to betrag' Notizen
set Vorlage_Notizen to sender' Referenz
set Vorlage_Referenz to iban' Nummernkreis
set Vorlage_Nummernkreis to "Standard"' ---------------------------------------------------------------------------------
' Optional: Belegvervollständigung
' ---------------------------------------------------------------------------------' Debitoren-/Kreditorenkonto bei gefundenem OP zuweisen
set Vorlage_Konto to GetKontoDebitor(Vorlage_Text, Vorlage_Betrag)
set Vorlage_Konto to IfThen(Vorlage_Konto = "", GetKontoKreditor(Vorlage_Text, Vorlage_Betrag), Vorlage_Konto) -
Moin Marc Funk,
ich habe gerade diese Importdefinition erstellt:
https://gist.github.com/Konafets/0cda830499f4262b3b2bd8d48e548932

Meine Erklärung von oben habe ich gelöscht, da sie fehlerhaft war.
Man muss sich das Skript als Automaten vorstellen, welcher zeilen-basiert operiert. Er kann jedoch nicht von alleine die Zeilen durchlaufen, sondern man muss ihm mittels `set zeile to zeile + 1` mitteilen, dass auf der nächsten Zeile operieren soll.Das von Dir genannte Snippet mit der 14 bzw. in meinem Gist mit der 8 sorgt dafür, dass der Import erst ab der gewünschten Zeile beginnt.
set zeile to zeile + 1 ' Springe in die nächste Zeile
if ( zeile < 8 ) ' Überprüfe ob die Zeile kleiner 8 ist
set Vorlage_Zeile_OK to FALSE ' Verwerfe die aktuelle Zeile
exit ' Starte das Skript neu
endif -
Hallo Stefano Kowalke!
Danke für die Definition. Ich habe nur noch den Buchungstext angepasst, da dieser in einer anderen Zeile steht. Kannst du bei Github die Definition mit einfügen? Hier der komplett fertige Code:
' ---------------------------------------------------------------------------------
' Importdefinition für DKB-Umsatzdateien
' Importeinstellungen:
' Quelle : Textdatei (*)
' Trennzeichen für Felder : Semikolon
' Trennzeichen für Datensätze: LF
' Zeichensatz für : UTF8
' Text in Anführungszeichen : "
' ---------------------------------------------------------------------------------' Aktionen nur im ersten Durchlauf ausführen: Variablen deklarieren
if ( NOT HasVariable("zeile") )
dim zeile as number
dim buchungsdatum as text
dim valuta as text
dim empfaenger as text
dim sender as text
dim buchungstext as text
dim verwendungszweck as text
dim betrag as number
dim iban as text
dim blz as text
dim kundenref as text
endif' Die Umsatzdaten beginnen erst ab Zeile 6, die Zeile davor verwerfen
set zeile to zeile + 1
if ( zeile < 8 )
set Vorlage_Zeile_OK to FALSE
exit
endif' Abbrechen, wenn nicht mindestens 11 Felder in Importdatei vorhanden sind
if ( NOT HasVariable("Spalte_011") )
beep
msgBox("Fehler beim Lesen der DKB-Exportatei (Ungültiges Datensatzformat)!")
set Vorlage_Import_OK to FALSE
exit
endif' ---------------------------------------------------------------------------------
' Die Spalten den Variablen zuordnen
' ---------------------------------------------------------------------------------
set buchungsdatum to Spalte_001
set valuta to Spalte_002
set buchungstext to Spalte_005
set empfaenger to Spalte_004
set verwendungszweck to Spalte_005
set iban to Spalte_006
set blz to Spalte_007
set betrag to FTextToNumber(Spalte_008)
set kundenref to Spalte_011
' Datum (Wertstellungdatum verwenden)
set Vorlage_Datum to TextToDate(valuta)' Text
if ( buchungstext <> "" )
set Vorlage_Text to buchungstext
endif' Text
if ( kundenref <> "" )
set Vorlage_Referenz to kundenref
endifif ( empfaenger <> "" )
set Vorlage_Notizen to empfaenger + " " + verwendungszweck
endif' Betrag
set Vorlage_Betrag to betrag' Nummernkreis
set Vorlage_Nummernkreis to "Standard"' ---------------------------------------------------------------------------------
' Optional: Belegvervollständigung
' ---------------------------------------------------------------------------------' Debitoren-/Kreditorenkonto bei gefundenem OP zuweisen
set Vorlage_Konto to GetKontoDebitor(Vorlage_Text, Vorlage_Betrag)
set Vorlage_Konto to IfThen(Vorlage_Konto = "", GetKontoKreditor(Vorlage_Text, Vorlage_Betrag), Vorlage_Konto)
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.
Kommentare
6 Kommentare