Wechselkurse werden nicht ordnungsgemäß aktualisiert, wenn Sie Microsoft Dynamics CRM mit Microsoft Dynamics NAV 2009 R2 integrieren, mithilfe von Connector für Microsoft Dynamics

Dieser Artikel gilt für Microsoft Dynamics NAV für alle Länder und alle Gebietsschemas.

Problembeschreibung

Angenommen Sie, Sie Microsoft Dynamics CRM mit Microsoft Dynamics NAV 2009 R2 mithilfe von Connector für Microsoft Dynamics Feature Pack 5 integrieren. Wechselkurse werden in bestimmten Szenarien fälschlicherweise in Microsoft Dynamics CRM aktualisiert.
Wenn Sie Wechselkurse in Microsoft Dynamics NAV 2009 R2 aktualisieren, erhalten Sie folgende Fehlermeldung:
[Währungswechselkurse zur Währung]: Fehler beim Verarbeiten...
Transaktionsbetrag mit ID = < GUID > ist nicht vorhanden.
In diesem Fall wird nur der erste Datensatz der Währungswechselkurse zu Microsoft Dynamics CRM synchronisiert. Dieser Fehler tritt beim System nachfolgende Datensätze synchronisieren, die in der Tabelle Währungswechselkurs mit späteren Anfangstermin eingegeben werden.

Ursache

Dieses Problem tritt auf, weil der zuletzt geänderten Währungswechselkurs, anstatt den aktuellen Wechselkurs für die Währung bestimmten mithilfe von Connector für Microsoft Dynamics, Microsoft Dynamics CRM synchronisiert.

Problemlösung

Hotfix-Informationen

Ein unterstützter Hotfix ist inzwischen von Microsoft erhältlich. Allerdings ist es lediglich zur Behebung dieses Problems. Wenden Sie es nur auf Systeme an, bei denen dieses spezielle Problem auftritt. Dieser Hotfix wird möglicherweise noch getestet. Wenn Ihr System durch dieses Problem nicht schwerwiegend beeinträchtigt ist, empfehlen wir, dass Sie warten auf das nächste Servicepack für Microsoft Dynamics NAV 2009 oder die nächste Microsoft Dynamics NAV-Version, die diesen Hotfix enthält.

Hinweis In besonderen Fällen bestimmt Gebühren fallen normalerweise Support aufrufen Wenn Experte Support für Microsoft Dynamics und zugehörige Produkte storniert werden können, dass ein bestimmtes Update Ihr Problem behebt. Die normalen Supportkosten gilt für zusätzliche Supportfragen und Probleme, die nicht für das betreffende Update qualifizieren.

Informationen zur Installation

Microsoft bietet Programmierbeispiele lediglich zur Veranschaulichung, ohne ausdrückliche oder konkludente Gewährleistung. Dies beinhaltet, ist jedoch nicht beschränkt auf, konkludente Gewährleistungen der Tauglichkeit oder Eignung für einen bestimmten Zweck. Dieser Artikel setzt voraus, dass Sie mit der von Beispielen verwendeten Programmiersprache und den Tools, die zum Erstellen und Debuggen von Prozeduren verwendet werden, vertraut sind. Microsoft-Supportmitarbeiter können bei der Erläuterung der Funktionalität bestimmter Prozeduren helfen, sie werden jedoch diese Beispiele nicht verändern um eine erweiterte Funktionalität aufzuzeigen oder Prozeduren entwickeln, die Ihren Anforderungen entsprechen.

Hinweis Bevor Sie diesen Hotfix installieren, stellen Sie sicher, dass alle Microsoft Navision-Clientbenutzer vom System abgemeldet werden. Dies gilt auch für Clientbenutzer der Microsoft Navision Application Services (NAS). Sie sollte nur-Client-Benutzers, der angemeldet ist, wenn Sie diesen Hotfix installieren.

Muss eine Entwicklerlizenz verfügen, um diesen Hotfix installieren können.

Es wird empfohlen, das Benutzerkonto im Fenster Windows-Benutzernamen oder im Fenster Datenbank-Anmeldenamen "SUPER" Rollen-ID zugewiesen werden Wenn das Benutzerkonto die Rollen-ID "SUPER" nicht zugeordnet werden kann, müssen Sie sicherstellen, dass das Benutzerkonto die folgenden Berechtigungen verfügt:
  • Änderungsberechtigung für das Objekt, das Sie ändern.
  • Ausführungsberechtigung für System Object ID 5210 und System Object ID 9015 -Objekt.


Hinweis Sie müssen keinen Datenspeicher Rechte nur Daten zu reparieren.

Ändern von Code

Hinweis Testen Sie Programmcodeverbesserungen generell erst in einem Testsytem, bevor Sie sie im Produktionssystem verwenden.
Gehen Sie folgendermaßen vor, um dieses Problem zu beheben:
  1. Übernehmen der folgende Code in Microsoft Dynamics NAV 2009 R2:
    1. Erstellen Sie eine neue GetCurrencyFactor -Funktion in der Tabelle Währungswechselkurs (330) wie folgt:
      PROCEDURE GetCurrentCurrencyFactor@14(CurrencyCode@1000 : Code[10]) : Decimal;    BEGIN
      SETRANGE("Currency Code",CurrencyCode);
      IF FINDLAST THEN
      EXIT("Exchange Rate Amount" / "Relational Exch. Rate Amount")
      END;
    2. Erstellen Sie eine neue SetCurrencyFactor -Funktion in der Tabelle Währungswechselkurs (330) wie folgt:
      PROCEDURE SetCurrentCurrencyFactor@15(CurrencyCode@1000 : Code[10];CurrencyFactor@1001 : Decimal);    VAR
      RateForTodayExists@1002 : Boolean;
      BEGIN
      "Currency Code" := CurrencyCode;
      TESTFIELD("Currency Code");
      RateForTodayExists := GET(CurrencyCode,TODAY);
      "Exchange Rate Amount" := 1;
      "Relational Exch. Rate Amount" := 1 / CurrencyFactor;
      "Adjustment Exch. Rate Amount" := "Exchange Rate Amount";
      "Relational Adjmt Exch Rate Amt" := "Relational Exch. Rate Amount";
      IF RateForTodayExists THEN BEGIN
      "Relational Currency Code" := '';
      MODIFY;
      END ELSE BEGIN
      "Starting Date" := TODAY;
      INSERT;
      END;
      END;
    3. Fügen Sie einer neue globale Variable Währung hinzu (5), und geben Sie die Variable wie folgt:
      • Name: CurrencyFactor
      • Datentyp: Dezimalzahl
    4. Hinzufügen einer Währungsfaktor (46) Währungen (5).
    5. Fügen Sie eine neue lokale Variable Währungsfaktor - OnValidate Trigger im Formular Währungen (5), und geben Sie die Variable wie folgt:
      • Name: CurrencyExchangeRate
      • Datentyp: Datensatz
      • Untertyp: Wechselkurs
    6. Fügen Sie folgenden Code im Trigger Währungsfaktor - OnValidate im Formular Währungen (5):
      CurrencyExchangeRate.SetCurrentCurrencyFactor(Code,CurrencyFactor);
    7. Fügen Sie eine neue lokale Variable im Trigger "OnAfterGetRecord" im Formular Währungen (5), und geben Sie die Variable wie folgt:
      • Name: CurrencyExchangeRate
      • Datentyp: Datensatz
      • Untertyp: Wechselkurs
    8. Fügen Sie folgenden Code im Trigger "OnAfterGetRecord" im Formular Währungen (5):
      CurrencyFactor := CurrencyExchangeRate.GetCurrentCurrencyFactor(Code);
    9. Fügen Sie eine neue globale Variable auf Währung (5), und geben Sie die Variable wie folgt:
      • Name: CurrencyFactor
      • Datentyp: Dezimalzahl
    10. Fügen Sie das Feld Währungsfaktor auf Währung (5), und geben Sie das Feld wie folgt:
      • Name: CurrencyFactor
      • Beschriftung: Währungsfaktor
      • Typ: Feld
      • SourceExpr: CurrencyFactor
    11. Fügen Sie eine neue lokale Variable Währungsfaktor - OnValidate Trigger auf Währung (5), und geben Sie die Variable wie folgt:
      • Name: CurrencyExchangeRate
      • Datentyp: Datensatz
      • Untertyp: Wechselkurs
    12. Fügen Sie folgenden Code im Trigger Währungsfaktor - OnValidate auf Währung (5):
      CurrencyExchangeRate.SetCurrentCurrencyFactor(Code,CurrencyFactor);
    13. Fügen Sie eine neue lokale Variable im Trigger "OnAfterGetRecord" auf Währung (5), und geben Sie die Variable wie folgt:
      • Name: CurrencyExchangeRate
      • Datentyp: Datensatz
      • Untertyp: Wechselkurs
    14. Fügen Sie folgenden Code im Trigger "OnAfterGetRecord" auf Währung (5):
      CurrencyFactor := CurrencyExchangeRate.GetCurrentCurrencyFactor(Code);
    15. Fügen Sie eine neue lokale Variable in der Funktion UpdateParentIntegrationRecord in Integrations-Verwaltung Codeunit (5150), und geben Sie die Variable wie folgt:
      • Name: Währung
      • Datentyp: Datensatz
      • Untertyp: Währung
    16. Ändern Sie den Code in der Funktion UpdateParentIntegrationRecord in Integrations-Verwaltung Codeunit (5150) wie folgt:
      Vorhandener code
      ...  DATABASE::"Ship-to Address":
      BEGIN
      FieldRef1 := RecRef.FIELD(1); // "Customer No."
      IF Customer.GET(FieldRef1.VALUE) THEN BEGIN
      ParentRecRef.GETTABLE(Customer);
      InsertUpdateIntegrationRecord(ParentRecRef,TimeStamp);
      END;
      END;
      END;
      Neuer code
      ... 
      DATABASE::"Ship-to Address":
      BEGIN
      FieldRef1 := RecRef.FIELD(1); // "Customer No."
      IF Customer.GET(FieldRef1.VALUE) THEN BEGIN
      ParentRecRef.GETTABLE(Customer);
      InsertUpdateIntegrationRecord(ParentRecRef,TimeStamp);
      END;
      END;

      // Add the following lines.
      DATABASE::"Currency Exchange Rate":
      BEGIN
      FieldRef1 := RecRef.FIELD(1); // "Currency Code"
      IF Currency.GET(FieldRef1.VALUE) THEN BEGIN
      ParentRecRef.GETTABLE(Currency);
      InsertUpdateIntegrationRecord(ParentRecRef,TimeStamp);
      END;
      END;
      // End of the lines.

      END;
    17. Ändern Sie den Code in der Funktion EnableConnector in Integrations-Verwaltung Codeunit (5150) wie folgt:
      Vorhandener code
      ...SetupWebServicePages(FORM::"Ship-to Address",DATABASE::"Ship-to Address");
      SetupWebServicePages(FORM::"Contact Card",DATABASE::Contact);

      //Delete the following line.
      SetupWebServicePages(FORM::"Currency Exchange Rates",DATABASE::"Currency Exchange Rate");

      SetupWebServicePages(FORM::"Customer Disc. Groups",DATABASE::"Customer Discount Group");
      SetupWebServicePages(FORM::"Item Disc. Groups",DATABASE::"Item Discount Group");
      ...
      Neuer code
      ...SetupWebServicePages(FORM::"Ship-to Address",DATABASE::"Ship-to Address");
      SetupWebServicePages(FORM::"Contact Card",DATABASE::Contact);
      SetupWebServicePages(FORM::"Customer Disc. Groups",DATABASE::"Customer Discount Group");
      SetupWebServicePages(FORM::"Item Disc. Groups",DATABASE::"Item Discount Group");
      ...
    18. Ändern Sie den Code in der Funktion SetupIntegrationTable in Integrations-Verwaltung Codeunit (5150) wie folgt:
      Vorhandener code
      ...InitializeIntegrationRecords(DATABASE::"Unit of Measure");
      InitializeIntegrationRecords(DATABASE::"Ship-to Address");
      InitializeIntegrationRecords(DATABASE::Contact);

      //Delete the following line.
      InitializeIntegrationRecords(DATABASE::"Currency Exchange Rate");

      InitializeIntegrationRecords(DATABASE::"Customer Discount Group");
      ...
      Neuer code
      ...InitializeIntegrationRecords(DATABASE::"Unit of Measure");
      InitializeIntegrationRecords(DATABASE::"Ship-to Address");
      InitializeIntegrationRecords(DATABASE::Contact);
      InitializeIntegrationRecords(DATABASE::"Customer Discount Group");
      ...
    19. Ändern Sie den Code in der Funktion IsIntergrationRecord in Integrations-Verwaltung Codeunit (5150) wie folgt:
      Vorhandener code
      ...DATABASE::"Unit of Measure",
      DATABASE::"Ship-to Address",
      DATABASE::Contact,

      //Delete the following line.
      DATABASE::"Currency Exchange Rate",

      DATABASE::"Customer Discount Group",
      ...
      Neuer code
      ...DATABASE::"Unit of Measure",
      DATABASE::"Ship-to Address",
      DATABASE::Contact,
      DATABASE::"Customer Discount Group",
      ...
    20. Ändern Sie den Code in der Funktion IsIntegrationRecordChild Integration Management-Codeunit (5150) wie folgt:
      Vorhandener code
      ...IF TableID IN
      [DATABASE::"Sales Line",
      DATABASE::"Sales Invoice Line"]
      THEN
      EXIT(TRUE);
      EXIT(FALSE);
      ...
      Neuer code
      ...IF TableID IN
      [DATABASE::"Sales Line",

      // Add the following line.
      DATABASE::"Currency Exchange Rate",

      DATABASE::"Sales Invoice Line"]
      THEN
      EXIT(TRUE);
      EXIT(FALSE);
      ...
  2. Installieren Sie Connector für Microsoft Dynamics Feature Pack 6.
    Hinweis Nach der Installation des Connectors für Microsoft Dynamics Feature Pack 6 müssen Sie deaktivieren "NAV Wechselkurse auf Währung" Karte im Anschluss importieren neue "NAV Währung auf Währung" Karte NAV Adapterkonfiguration erneut, und aktivieren Sie dann das neue Schema.

Voraussetzungen

Sie müssen Microsoft Dynamics NAV 2009 R2 installiert, um diesen Hotfix anwenden.

Informationen zur Deinstallation

Dieser Hotfix kann nicht entfernt werden.

Status

Microsoft hat bestätigt, dass es sich um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Eigenschaften“ aufgeführt sind.
Hinweis Dies ist ein im Schnellverfahren veröffentlichter Artikel, der direkt in der Microsoft Support-Organisation erstellt wurde. Die hierin enthaltenen Informationen werden ohne Mängelgewähr in Reaktion auf neue Probleme bereitgestellt. Aufgrund der schnellen Bereitstellung kann das Material möglicherweise typografische Fehler enthalten und jederzeit ohne vorherige Ankündigung geändert werden. Weitere Hinweise finden Sie unter Geschäftsbedingungen .
Eigenschaften

Artikelnummer: 2597312 – Letzte Überarbeitung: 10.01.2017 – Revision: 1

Feedback