wieder mal DTAUS Import Problem

 
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 186
Dabei seit: 07 / 2003
Betreff:

wieder mal DTAUS Import Problem

 · 
Gepostet: 19.10.2006 - 00:51 Uhr  ·  #1
Heute mußte ich einen etwas heimtückischen Fehler in Hibiscus feststellen, da mir eine Mahnung ins Haus flatterte. Die Überweisung befand sich in einer DTAUS-Datei, die ohne Fehler eingelesen wurde. Jedoch wurde kommentarlos eine Buchung weggelassen. Ursache war, wie ich 'rausgekriegt habe, ein Pus zwischen den Rechnungsnummern im Verwendungszweck-Feld. Tja, so kostet ein kostenloses Programm dann doch noch Geld. Aber ich baue ja auf die Zukunft.

Hoffentlich gibt's nicht noch mehr solche Fallen...
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Westfalen
Beiträge: 5096
Dabei seit: 05 / 2003
Betreff:

Re: wieder mal DTAUS Import Problem

 · 
Gepostet: 19.10.2006 - 08:44 Uhr  ·  #2
Meinst du mit Pus (warscheinlich Plus) das "+" Symbol?
Wenn ja, glaube ich nicht das es das war, das Plus-Symbol (43) ist in den DTA Spezifikationen nämlich zulässig.
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 186
Dabei seit: 07 / 2003
Betreff:

Re: wieder mal DTAUS Import Problem

 · 
Gepostet: 19.10.2006 - 10:40 Uhr  ·  #3
Zitat geschrieben von Captain FRAG
Meinst du mit Pus (warscheinlich Plus) das "+" Symbol?
Wenn ja, glaube ich nicht das es das war, das Plus-Symbol (43) ist in den DTA Spezifikationen nämlich zulässig.


Ja, ich meinte Plus, sorry. Nach Ersetzen des Plus durch ein Minus wurde der Auftrag normal eingelesen.
j
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 128
Dabei seit: 02 / 2006
Betreff:

Re: wieder mal DTAUS Import Problem

 · 
Gepostet: 19.10.2006 - 19:25 Uhr  ·  #4
Hallo,

ich habe gerade mal eine DTAUS-Datei mit einem enthaltenen +-Zeichen erzeugt und direkt mit OBanToo importiert. Das ist ohne Fehler durchgelaufen. Anschließend habe ich die Datei in Hibiscus importiert. Dabei erschienen folgende Meldungen:
[19.10.2006 19:20:04] Importiere logische Datei Nr. 1
[19.10.2006 19:20:04] Importiere Datensatz CHR. BRETTNER+A
[19.10.2006 19:20:04] Der Text "CHR. BRETTNER+A " wird nach der HBCI-Kodierung zu lang. Entfernen Sie ggf. "+" oder "?"
[19.10.2006 19:20:04] Überspringe Datensatz
[19.10.2006 19:20:04] 0 Datensätze erfolgreich importiert

Die Buchung wird als nicht kommentarlos weggelassen!

Warum diese Fehlermeldung kommt, wird Olaf sicherlich beantworten können.


Heiner

PS: OBanToo ist die Lib, die Hibiscus für den DTAUS-Import nutzt.
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10071
Dabei seit: 03 / 2005
Betreff:

Re: wieder mal DTAUS Import Problem

 · 
Gepostet: 20.10.2006 - 10:02 Uhr  ·  #5
Jepp, aufgrund von Bug 232 (http://www.willuhn.de/bugzilla/show_bug.cgi?id=232).

Allerdings sollte der Fehler nur auftreten, wenn die Zeichenkette ein "+" oder "?" enthaelt und an die Maximallaenge fuer dieses Feld stoesst. Bsp.: Ein Verwendungszweck darf 27 Zeichen lang sein. Enthaelt er ein "+" oder "?", muss dieses beim Senden via HBCI mit "?" escaped werden. Mit dem Effekt, dass die Zeichenkette danach 28 Zeichen lang ist und damit genau ein Zeichen zu lang. HBCI4Java wird dann eine InvalidArgumentException werfen. Damit ich nicht irgendwann spaeter pruefen muss, ob die Daten alle Bedingungen erfuellen, checke ich das bereits beim Anlegen neuer Objekte in der Hibiscus-Datenbank. Somit ist sichergestellt, dass bereits in der Datenbank nur sauberer Daten stehen (sollten).

Der Fehler tritt aber auch auf, wenn der String - wie in deinem Fall "CHR. BRETTNER+A " 16 Zeichen lang ist? Was hast'n du hier importiert - Ueberweisungen, Lastschriften oder Umsaetze?

Gruss
Olaf
j
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 128
Dabei seit: 02 / 2006
Betreff:

Re: wieder mal DTAUS Import Problem

 · 
Gepostet: 22.10.2006 - 11:14 Uhr  ·  #6
Ich habe Lastschriften importiert. David hat Überweisungen importiert.

Heiner
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 186
Dabei seit: 07 / 2003
Betreff:

Re: wieder mal DTAUS Import Problem

 · 
Gepostet: 25.10.2006 - 17:43 Uhr  ·  #7
Zitat geschrieben von willow
Allerdings sollte der Fehler nur auftreten, wenn die Zeichenkette ein "+" oder "?" enthaelt und an die Maximallaenge fuer dieses Feld stoesst. Bsp.: Ein Verwendungszweck darf 27 Zeichen lang sein. Enthaelt er ein "+" oder "?", muss dieses beim Senden via HBCI mit "?" escaped werden. Mit dem Effekt, dass die Zeichenkette danach 28 Zeichen lang ist und damit genau ein Zeichen zu lang. HBCI4Java wird dann eine InvalidArgumentException werfen.

Ich kenne mich in der Materie nicht sehr aus, aber es erscheint schwer vorstellbar, daß die HBCI-Spezifikation besagt "Länge Verwendungszweck 27 Zeichen abzüglich 1 für jedes enthaltene '+'-Zeichen". Irgendwie keine so schöne Lösung, den Auftrag einfach unter den Tisch fallen zu lassen - ohne eine Dialogbox o.ä. Da muß es doch eine andere Lösung geben?!
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10071
Dabei seit: 03 / 2005
Betreff:

Re: wieder mal DTAUS Import Problem

 · 
Gepostet: 25.10.2006 - 18:08 Uhr  ·  #8
Nein, die Spec sagt lediglich z.Bsp. "Feld darf max. 27 Zeichen lang sein". Und irgendwo anders in der Spec steht: "+ und ? muessen mit "?" escaped werden". Fertig. Dass dann ggf. weniger Zeichen als "Nutzlast" verwendet werden koennen, wenn + oder ? drin vorkommen, ist die logische Konsequenz. Ist halt so. In der XML-Schema-Spec ist das z.Bsp. genauso. Wenn dort die Laenge eines CDATA-Elements begrenzt ist, das Feld jedoch ein "&" enthaelt, welches als "ä" escaped werden muss, dann zaehlt das auch nicht als ein Zeichen sondern als 6 Zeichen.

Und der Auftrag wird ja beim Import keinesfalls unter den Tisch fallen gelassen. Stattdessen erscheint im Fortschrittsfenster eine Fehlermeldung, dass die "Ueberweisung an ..." nicht importiert werden konnte.

OK, diskutieren wir mal die Alternativen:

a) Es erscheint nicht nur eine Fehlermeldung im Protokoll, stattdessen wird ein Dialog angezeigt, den der User mit "OK" wegklicken muss.
Effekt: Ein User will seine Kontoauszuege mit 1000 Datensaetzen importieren. In jedem 3. ist ein Fehler drin. Dann darf er 300 mal das Fenster wegklicken.

b) Der Import bricht komplett ab.
Effekt: Wenn in einer DTAUS-Datei nur ein einziger Datensatz fehlerhaft ist, schlaegt der gesamte Import fehl

c) Die Datensaetze werden trotz Fehler von Hibiscus importiert
Effekt: Will der User dann die Ueberweisung ausfuehren, wird er spaetestens dann einen Fehler von der Bank enthalten.

Ich sehe hier beim besten Willen keine sinnvolle Alternative zur aktuellen Vorgehensweise.

Gruss
Olaf
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10071
Dabei seit: 03 / 2005
Betreff:

Re: wieder mal DTAUS Import Problem

 · 
Gepostet: 25.10.2006 - 18:09 Uhr  ·  #9
Ich meinte natuerlich nicht "ä" sondern "&" ;)
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 186
Dabei seit: 07 / 2003
Betreff:

Re: wieder mal DTAUS Import Problem

 · 
Gepostet: 26.10.2006 - 11:51 Uhr  ·  #10
Zitat geschrieben von willow
Und der Auftrag wird ja beim Import keinesfalls unter den Tisch fallen gelassen. Stattdessen erscheint im Fortschrittsfenster eine Fehlermeldung, dass die "Ueberweisung an ..." nicht importiert werden konnte.

Die Meldung im Fortschrittsfenster übersieht man sehr leicht. Mir ist es 2x so gegangen bis ich an den Mahnungen mitbekommen habe, daß da was nicht stimmt. Und das Verhalten ist auch nicht konsistent, da z.B. bei DOS-Umlauten der Import komplett abbricht. Das ist zwar auch nicht schön, aber m.E. ein sinnvollerer Kompromiß.
Zitat geschrieben von willow
OK, diskutieren wir mal die Alternativen:

Können nicht Verwendungszweck-Felder variabel hinzugefügt werden? Das wäre doch die beste Lösung. Dann steht eben in dem erweiterten Verwendungszweck z.B. nur 1 Zeichen.
Wie macht es denn andere Software? Sollte es diese Einschränkung wirklich geben - das kapiert $Ottonormaluser doch nie. Bist Du (bzw. der Datenaustausch-Programmierer) ganz sicher, daß die "?" bei der Zeichenanzahl mitzählen?
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10071
Dabei seit: 03 / 2005
Betreff:

Re: wieder mal DTAUS Import Problem

 · 
Gepostet: 26.10.2006 - 12:13 Uhr  ·  #11
Zitat
Die Meldung im Fortschrittsfenster übersieht man sehr leicht.


OK, ich kann sie deutlicher hervorheben. Willst du das im Bugzilla unter www.willuhn.de/bugzilla eintragen?

Zitat
Mir ist es 2x so gegangen bis ich an den Mahnungen mitbekommen habe, daß da was nicht stimmt.


Naja, aber man kontrolliert doch eigentlich auch die Liste der Ueberweisungen, oder?

Zitat
Und das Verhalten ist auch nicht konsistent, da z.B. bei DOS-Umlauten der Import komplett abbricht.


Wenn der Import abbricht, dann ist das noch ein Fehler, zu dem wir den exakten Fehlertext (bzw. Java-Stacktrace aus jameica.log) brauchen.

Zitat
Das ist zwar auch nicht schön, aber m.E. ein sinnvollerer Kompromiß.


Finde ich nicht. Wenn ich den Import bei einer fehlerhaften Ueberweisung abbreche, garantiere ich dir, dass sich innerhalb einer Woche ein User meldet, der mich fragt, ob man in so einem Fehlerfall denn nicht wenigstens die anderen sauberen Ueberweisungen haette importieren koennen.

Zitat
Können nicht Verwendungszweck-Felder variabel hinzugefügt werden?


Hibiscus unterstuetzt derzeit leider nur zwei Zeilen Verwendungszweck. Da HBCI aber mehr zulaesst, existiert im Bugzilla auch bereits ein Bug-Report zur Erweiterung.

Zitat
Das wäre doch die beste Lösung. Dann steht eben in dem erweiterten Verwendungszweck z.B. nur 1 Zeichen.


Finde ich nicht. Ich will mich keinesfalls eigenmaechtig an den Daten des Users vergreifen und die Verwendungszwecke automatisch so verteilen, dass sie passen. Wenn die DTAUS-Datei einen "Verwendungszweck 1" enthaelt, dann bleibt der auch dort.

Zitat
Wie macht es denn andere Software?


Das wuesste ich auch gern ;) Hast du noch eine andere Banking-Anwendung, mit der du es mal testen koenntest?

Zitat
Bist Du (bzw. der Datenaustausch-Programmierer) ganz sicher, daß die "?" bei der Zeichenanzahl mitzählen?


Ja. Das steht in der HBCI-Spec. Guckst du hier:
http://www.hbci-zka.de/dokumen…HBCI22.pdf
Seite 24 (Kapitel II.4)

Gruss
Olaf
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Westfalen
Beiträge: 5096
Dabei seit: 05 / 2003
Betreff:

Re: wieder mal DTAUS Import Problem

 · 
Gepostet: 26.10.2006 - 12:14 Uhr  ·  #12
Vielleicht hilft das bei der Klärung:

Ich habe gerade mal testweise eine Überweisung ausgeführt, bei der in den beiden ersten VWZ-Feldern ausschliesslich +-Zeichen standen, jeweils 27 Stück. So sieht das Kind bei der (erfolgreichen) Übertragung via HBCI (EinzelÜW) aus:

HKUEB:3:4+Konto::280:BLZ+Konto::280:BLZ+Name++Betrag:EUR+51++?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+
?+?+?+?+?+?+?+?+:?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+'

Mir scheint, das das +-Zeichen zwar mittels ? escaped wird, das ? aber bei der Berechnung der Stellenanzahl nicht mitgezählt wird. Die 27 Zeichen Beschränkung könnte demnach auch so gemeint sein, das es sich ausschliesslich um die Anzahl der Nutzzeichen handelt...

Möglich?

Das ganze habe ich mit SFirm32 und Übertragung an eine SI-Sparkasse getestet. Im Banksystem wird der VWZ auch korrekt mitverbucht.

edit:

Ich glaube das ist die Lösung:

II.4.5 Datenstruktur-Längenangaben
Die Zahlen in der Tabellenspalte "Länge" geben jeweils die Datenstruktur-Länge in
Byte an. Die Angabe bezieht sich auf die Darstellung vor Entwertung (vgl. Kap.
II.4.1)
, d.h. in entwerteter Darstellung kann die Zeichenkette evtl. eine größere Länge
aufweisen.
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10071
Dabei seit: 03 / 2005
Betreff:

Re: wieder mal DTAUS Import Problem

 · 
Gepostet: 26.10.2006 - 12:45 Uhr  ·  #13
Dann waere es meiner Meinung nach ein Bug in HBCI4Java, der entweder:

- noch existiert
- oder inzwischen behoben wurde, ich ihn aber in Hibiscus nach wie vor "umschiffe" ;)

Das laesst sich eigentlich recht leicht herausfinden, indem man die Datei
~/.jameica/cfg/de.willuhn.jameica.hbci.HBCIProperties.properties in
einem Texteditor oeffnet und dort folgende Paramater definiert:

hbci.transfer.usage.maxlength=60
hbci.transfer.name.maxlength=60

Standardmaessig sind diese auf 27 Zeichen begrenzt. Mit der Erhoehung des Wertes testweise auf 60 Zeichen sollten sich die Ueberweisungen importieren lassen, da die Felder - selbst wenn man die "?" mitzaehlt - nicht laenger als 60 Zeichen werden.

Wenn sich die Ueberweisung nun an die Bank schicken laesst, ist der Fehler in HBCI4Java behoben und ich muss die Pruefung aus Hibiscus entfernen. Falls es beim Senden an die Bank zu einem Fehler kommt, sollten wir mal Stefan konsultieren.

Gruss
Olaf
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Westfalen
Beiträge: 5096
Dabei seit: 05 / 2003
Betreff:

Re: wieder mal DTAUS Import Problem

 · 
Gepostet: 26.10.2006 - 13:02 Uhr  ·  #14
Import einwandfrei nach Änderung der Längenangaben auf 60 Byte, aber:

[26.10.2006 13:00:30] Fehler beim Ausführen der HBCI-Aufträge org.kapott.hbci.exceptions.HBCI_Exception: Fehler beim Hinzufügen des Auftrages Ueb4 zum aktuellen Dialog
[26.10.2006 13:00:30] Ungültiger Parameter: Stringlänge von "?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+?+" ist 54 - muss für dieses org.kapott.hbci.datatypes.SyntaxDTAUS im Bereich (1,27) liegen
[26.10.2006 13:00:30] Beende HBCI-Übertragung
[26.10.2006 13:00:30] HBCI-Übertragung mit Fehlern beendet


Vermutlich HBCI4Java, richtig?
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10071
Dabei seit: 03 / 2005
Betreff:

Re: wieder mal DTAUS Import Problem

 · 
Gepostet: 26.10.2006 - 13:48 Uhr  ·  #15
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Westfalen
Beiträge: 5096
Dabei seit: 05 / 2003
Betreff:

Re: wieder mal DTAUS Import Problem

 · 
Gepostet: 26.10.2006 - 14:19 Uhr  ·  #16
Zitat geschrieben von willow
Bsp.: Ein Verwendungszweck darf 27 Zeichen lang sein. Enthaelt er ein "+" oder "?", muss dieses beim Senden via HBCI mit "?" escaped werden.


Kleinigkeit noch:

Ein Fragezeichen wird nicht mit einem Fragezeichen escaped werden müssen, da das Fragezeichen gar nicht in den erlaubten Zeichen auf DTA-Ebene enthalten ist :)
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10071
Dabei seit: 03 / 2005
Betreff:

Re: wieder mal DTAUS Import Problem

 · 
Gepostet: 26.10.2006 - 14:25 Uhr  ·  #17
Korrekt. Behandle ich in DTAUS auch richtig ;)
Die Liste der erlaubten Zeichen kann uebrigens auch in der properties-Datei definiert werden:

hbci.dtaus.validchars=<Liste der Zeichen>

Standardmaessig sind das in Hibiscus: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ,.&-+*%/$üöäÜÖÄß

In HBCI wiederrum ist "?" aber wohl erlaubt ;)

Gruss
Olaf
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10071
Dabei seit: 03 / 2005
Betreff:

Re: wieder mal DTAUS Import Problem

 · 
Gepostet: 26.10.2006 - 14:27 Uhr  ·  #18
Gewählte Zitate für Mehrfachzitierung:   0