[gelöst] USt.-VA bzw. Elster-Übertragung Hinweis/Warnung

11. Februar 2015 14:40

Die USt.-VA bzw. Elster-Übertragung funktioniert derzeit mit Dynamics NAV nur sporadisch. Das liegt daran, dass die im Elster Transfer Handler fest hinterlegten IP-Adressen nur noch teilweise gültig sind.


Von obigen IP-Adressen sind derzeit nur noch die 62.* aktiv, sollen aber zukünftig ebenfalls abgeschaltet werden. Da der Elster Transfer Handler die Adresse jeweils "zufällig" ermittelt, tritt regelmäßig ein Übertragungsfehler auf (2200), wenn einer der letzten Server verwendet werden soll.

Laut Entwicklerforum der Steuerbehörde sollen zukünftig (eigentlich seit Mitte Januar) nur noch die folgenden Server für Übermittlungen verwendet werden:


Dazu muss der Elster Transfer Handler angepasst werden. Das habe ich bereits bei Microsoft eingekippt.

Jetzt sind wir in der Situation, dass dieses "neue Feature" aufgrund des Mainstream-Support-Endes für den Classic Client (2009), möglicherweise nicht mehr implementiert wird. Dazu bekomme ich aber noch ein Feedback, wir werden sehen.

Eine DLL für die Versionen ab 2013 wird sicherlich in nächster Zeit folgen. Sollte sich bewahrheiten, dass Microsoft diese Anpassung nur für aktuell im Mainstream-Support befindliche Versionen durchführt (meiner Meinung nach wahrscheinlich (und korrekt)), dann muss für alte Versionen ein COM-Wrapper entwickelt werden, der vom Dynamics NAV Classic Client aus aufrufbar ist und die Aufrufe durchreicht.

Wen das jetzt schon nervt, oder befürchtet, dass auch die letzten 2 IP-Adressen bald abgeschaltet werden, der kann die neuen Adressen faken (vorsicht, nicht getestet, Bestätigung erwünscht). Code für 2013+, sollte aber mit kleinen Anpassungen auch unter 2009 R2 RTC funktionieren:

Code:
    LOCAL PROCEDURE FakeNewServerList@50002();
    VAR
      ElsterTransferHandlerNavision@50008 : DotNet "'Microsoft.Dynamics.ElsterTransferHandler, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.Microsoft.Dynamics.ElsterTransferHandler.ExternalCommunication" RUNONCLIENT;
      DotNetType@50003 : DotNet "'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Type" RUNONCLIENT;
      BindingFlags@50002 : DotNet "'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Reflection.BindingFlags" RUNONCLIENT;
      FieldInfo@50001 : DotNet "'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Reflection.FieldInfo" RUNONCLIENT;
      ElsterServerArray@50005 : DotNet "'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Array";
    BEGIN
      IF ISNULL(ElsterTransferHandlerNavision) THEN
        ElsterTransferHandlerNavision := ElsterTransferHandlerNavision.ExternalCommunication;

      DotNetType := DotNetType.GetType('System.String', FALSE);

      ElsterServerArray := ElsterServerArray.CreateInstance(DotNetType, 4);
      ElsterServerArray.SetValue('http://datenannahme1.elster.de/Elster2/EMS', 0);
      ElsterServerArray.SetValue('http://datenannahme2.elster.de/Elster2/EMS', 1);
      ElsterServerArray.SetValue('http://datenannahme3.elster.de/Elster2/EMS', 2);
      ElsterServerArray.SetValue('http://datenannahme4.elster.de/Elster2/EMS', 3);

      BindingFlags := 40; // Static | Private
      DotNetType := ElsterTransferHandlerNavision.GetType();
      FieldInfo := DotNetType.GetField('listHTTPSERVER', BindingFlags);
      FieldInfo.SetValue(ElsterTransferHandlerNavision, ElsterServerArray);

      // Send document here…
    END;
Zuletzt geändert von SilverX am 8. April 2015 08:21, insgesamt 1-mal geändert.

Re: USt.-VA bzw. Elster-Übertragung Hinweis/Warnung

11. Februar 2015 15:04

Danke für die Info!
Habs vermerkt im Thema [DE] ELSTER-Fehlermeldungen

Re: USt.-VA bzw. Elster-Übertragung Hinweis/Warnung

5. März 2015 14:53

Für alle Versionen mit Classic Client, also inkl. 2009 R2, wird es, wie erwartet, keine Aktualisierung geben. Ich werde, sobald die neue DLL für 2013+ erhältlich ist, einen COM-Wrapper für die .NET-DLL schreiben und hier zur Verfügung stellen.

Re: USt.-VA bzw. Elster-Übertragung Hinweis/Warnung

17. März 2015 18:21

Guten Tag, Servus, Hallo :-D

Wie versprochen habe ich für Versionen bis Dynamics NAV 2009 R2 (Classic Client), einen COM-Wrapper geschrieben, der die Nutzung des neuen Elster Transfer Handlers erlaubt, welcher kein COM-Interface mehr zur Verfügung stellt.

Kurz zum Ablauf:
  • Erst einmal müssen die alten Dateien gelöscht werden. Dazu zunächst unter Programme und Features den alten Microsoft Dynamics Elster Transfer Handler deinstallieren oder, je nachdem wie dieser mal installiert wurde, mit den folgenden Befehlen die DLL hart deregistrieren und aus dem GAC (Global Assembly Cache) entfernen:

Code:
regasm.exe /u /tlb:Microsoft.Dynamics.ElsterTransferHandler.tlb Microsoft.Dynamics.ElsterTransferHandler.dll
gacutil.exe /u Microsoft.Dynamics.ElsterTransferHandler

RegAsm.exe und GacUtil.exe findet man auf Entwicklungsrechnern, ggf. bitte eine Internetsuche bemühen.

  • Dann die Datei Microsoft.Dynamics.ElsterTransferHandler.ComWrapper.zip entpacken.
  • Die folgenden Dateien müssen in das Verzeichnis 3rdParty kopiert werden. Es handelt sich dabei um die Dateien, die mit dem alten Elster Transfer Handler (MSXML6) ausgeliefert wurden bzw. mit dem nächsten (nicht dem kommenden) kumulativen Update von Microsoft ausgeliefert warden (ElsterTransferHandler):
    • interop.MSXML6.dll
    • Microsoft.Dynamics.ElsterTransferHandler.dll
  • Dann die Solution mit Visual Studio 2013 öffnen und das Projekt erstellen (idealerweise im Release-Modus).
  • Die resultierende Datei Microsoft.Dynamics.ElsterTransferHandler.ComWrapper.dll muss dann, zusammen mit dem originalen Elster Transfer Handler (Datei Microsoft.Dynamics.ElsterTransferHandler.dll aus Version 2013+), entweder in das Classic-Client-Verzeichnis kopiert oder im Global Assembly Cache bereitgestellt werden.

Ausgehend davon, dass die alte DLL deregistriert und gelöscht ist, wären das folgende Befehle:

Code:
attrib -R *.tlb
gacutil.exe /i interop.MSXML6.dll
gacutil.exe /i Microsoft.Dynamics.ElsterTransferHandler.dll
gacutil.exe /i Microsoft.Dynamics.ElsterTransferHandler.ComWrapper.dll
regasm.exe /tlb:Microsoft.Dynamics.ElsterTransferHandler.ComWrapper.tlb Microsoft.Dynamics.ElsterTransferHandler.ComWrapper.dll


Der Elster Transfer Handler für Versionen 2013+ enthält selbst keine COM-Schnittstelle. Da Dynamics NAV 2009 (CC) und früher aber keine nativen .NET-Variablen unterstützen, brauchen wir diesen kleinen Umweg.

Wer smart ist und sich was traut (oder ggf. nicht auf eine neue DLL warten möchte oder kann, der kann auch die eine zusätzliche Methode nutzen, die diese COM-Wrapper-DLL bereitstellt:

Code:
ElsterTransferHandlerNavision.SetTargetServers(
    'http://datenannahme1.elster.de/Elster2/EMS|' +
    'http://datenannahme2.elster.de/Elster2/EMS|' +
    'http://datenannahme3.elster.de/Elster2/EMS|' +
    'http://datenannahme4.elster.de/Elster2/EMS');


Vielleicht kommen die Server besser aus eine Tabelle 8-)

Auf jeden Fall werden damit eventuelle neue Adressen gesetzt. Es ist auch wichtig, dass es sich um (mindestens) 4 Adressen handelt, da eine Zufallszahl zwischen 0 und 3 ermittelt wird und es ansonsten einen "Index liegt außerhalb Blabla"-Fehler gibt...

Da der Wrapper die gleichen GUIDs für das Interface bzw. die Klasse benutzt wie der Originale (alte, COM) Elster Transfer Handler, ist (eigentlich) keine Änderung an der Codeunit 11001 notwendig.

Happy Elstering!
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: USt.-VA bzw. Elster-Übertragung Hinweis/Warnung

17. März 2015 22:42

Herzlichen Dank, Carsten. Coole Sache 8-)

Re: USt.-VA bzw. Elster-Übertragung Hinweis/Warnung

17. März 2015 23:14

Hallo Carsten

*BIG THUMP UP!*

Viele Grüße,
Janosch

Re: USt.-VA bzw. Elster-Übertragung Hinweis/Warnung

23. März 2015 17:54

Für alle Benutzer ab NAV 2013 (und höher) steht bald ein Update an, mit welchem die IP-Adressen von NAV aus einstellbar sind:

Edit: Siehe auch German NAV Developers Blog: Elster Transferhandler - Änderungen bei den IP Adressen

@Carsten
Das Thema dürfte damit gelöst sein, oder?

Re: USt.-VA bzw. Elster-Übertragung Hinweis/Warnung

24. März 2015 07:05

Natalie hat geschrieben:@Carsten
Das Thema dürfte damit gelöst sein, oder?
Noch nicht ganz. Ich werde den Wrapper wahrscheinlich noch anpassen müssen, wenn die neue DLL verfügbar ist. Dann setze ich den Thread auf gelöst.

Re: USt.-VA bzw. Elster-Übertragung Hinweis/Warnung

8. April 2015 08:20

Mit Auslieferung der neuen DLL hat sich auch die Serverauswahl geändert, so dass diese nun in Dynamics NAV stattfindet und der zu nutzende Server in der DLL per SetHttpServer() gesetzt wird.
Die alte von mir bereitgestellte COM Wrapper DLL funktioniert nicht mit der neuen Version, da kein Array der HTTP Server mehr in dieser existiert.

Für die neue, hier angehängte Version gilt prinzipiell das vorher geschriebene. Zusätzlich wird eine Methode SetHttpServer() veröffentlicht. Um die Funktion auch in alten Applikationen zu gewährleisten, wird aus der Liste der derzeit aktuellen Server beim Erstellen mit CREATE() automatisch einer ausgewählt. Dieser kann aber per SetHttpServer() überschrieben werden.

Microsoft.Dynamics.ElsterTransferHandler.ComWrapper2.zip


P.S.: Die neue Version erfordert das .NET Framework 4.5, da die angesprochene DLL ebenfalls für diese Framework-Version kompiliert wurde.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: [gelöst] USt.-VA bzw. Elster-Übertragung Hinweis/Warnung

15. April 2015 16:13

Der Einfachheit halber habe ich die kompilierte DLL auch einmal bereitgestellt:

ComWrapperDLL.zip
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: [gelöst] USt.-VA bzw. Elster-Übertragung Hinweis/Warnung

11. Juni 2015 13:46

Hallo,

eine kurze Frage reingeschoben zu dieser kompilierten .DLL. Muss ich diese registrieren, um diese in NAV 2009 R2 verwenden zu können?

Das Modul Microsoft.Dynamics.ElsterTransferHandler.dll wurde geladen, aber der DllRegisterServer-Eingangspunkt wurde nicht gefunden.
Stellen Sie sicher, dass Microsoft.Dynamics.ElsterTransferhandler.dll eine gültige .DLL- oder .OCX-Datei ist, und wiederholen Sie den Vorgang.


Vielen Dank für eure Mühe
Mit freundlichen Grüßen

Re: [gelöst] USt.-VA bzw. Elster-Übertragung Hinweis/Warnung

11. Juni 2015 13:49

Hallo,

ja, muss sie, wie im Beitrag beschrieben mit regasm.exe. Idealerweise sollte die DLL auch im GAC liegen, ist ebenfalls dem Beitrag zu entnehmen.