Směnné kurzy jsou aktualizovány správně při integraci aplikace Microsoft Dynamics CRM s Microsoft Dynamics NAV 2009 R2 pomocí konektoru Microsoft Dynamics

Tento článek se týká aplikace Microsoft Dynamics NAV ve všech zemích a všechna národní prostředí jazyka.

Příznaky

Předpokládá integraci aplikace Microsoft Dynamics CRM s Microsoft Dynamics NAV 2009 R2 pomocí konektoru Microsoft Dynamics funkce aktualizací Service Pack 5. V některých scénářích směnné kurzy aktualizovány nesprávně v aplikaci Microsoft Dynamics CRM.
Můžete aktualizovat směnné kurzy v aplikaci Microsoft Dynamics NAV 2009 R2, zobrazí se následující chybová zpráva:
[Směnné kurzy pro měnu] došlo k chybě při zpracování...
Měnu transakce s ID = < GUID > neexistuje.
V této situaci pouze první záznam směnné kurzy měn se synchronizuje s Microsoft Dynamics CRM. K této chybě dochází při synchronizaci následující záznamy, které jsou zadány v tabulce Směnný kurz s novější data zahájení systému.

Příčina

K tomuto problému dochází, protože poslední změny směnného kurzu, namísto aktuálního směnného kurzu pro konkrétní měnu se synchronizuje s aplikací Microsoft Dynamics CRM pomocí konektor pro aplikaci Microsoft Dynamics.

Řešení

Informace o opravě hotfix

Podporovaná oprava hotfix je nyní k dispozici od společnosti Microsoft. Však je určena pouze k odstranění problému popsaného v tomto článku. Použijte ji pouze u systémů, ve kterých dochází k tomuto konkrétnímu problému. Tato oprava hotfix může být dále testována. Proto pokud jste závažně tento problém, doporučujeme počkat na další aktualizaci service pack produktu Microsoft Dynamics NAV 2009 nebo další verze produktu Microsoft Dynamics NAV, která obsahuje tuto opravu hotfix.

Poznámka: Ve zvláštních případech poplatky, které jsou třeba obvykle zaplatit za telefonní hovory mohou být stornovány, jestliže pracovník technické podpory společnosti Microsoft Dynamics a souvisejících produktů Určuje, že konkrétní aktualizace odstraní váš problém. Výdaje na technickou podporu použije dalších otázek a problémů, které nelze vyřešit konkrétní aktualizací.

Informace o instalaci

Společnost Microsoft poskytuje ukázky programování pouze pro ilustraci bez žádné záruky výslovně uvedené nebo odvozené. To zahrnuje, ale není omezen pouze na předpokládané záruky obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá, že jste obeznámeni s programovacím jazykem, který je předmětem ukázky a s nástroji, které slouží k vytvoření a ladění skriptu. Pracovníci podpory společnosti Microsoft mohou pomoci vysvětlit funkce určitého postupu, nemohou však následující příklady rozšířit o další funkce nebo vytvářet postupy podle vašich konkrétních požadavků.

Poznámka: Před instalací této opravy hotfix ověřte, že všichni uživatelé klienta Microsoft Navision odhlášeni systému. To zahrnuje uživatele klienta Microsoft Navision Application Services (NAS). Je třeba klienta pouze uživatel přihlášený při implementaci opravy hotfix.

Chcete-li implementovat tuto opravu hotfix, musí mít licenci vývojáře.

Doporučujeme, aby uživatelský účet v okně přihlášení systému Windows nebo v okně přihlášení databáze přidělí "SUPER" ID role. Pokud uživatelský účet nelze přiřadit ID role "SUPER", musíte ověřit, že uživatelský účet má následující oprávnění:
  • Změnit oprávnění pro objekt, který budete měnit.
  • Oprávnění ke spuštění pro System Object ID 5210 objekt a System Object ID 9015 objekt.


Poznámka: Nemáte práva k úložištím dat. Pokud nebudete provádět opravu dat.

Změny kódu

Poznámka: Vždy otestujte opravy kódu v kontrolovaném prostředí před instalací opravy v provozních počítačích.
Chcete-li vyřešit tento problém, postupujte takto:
  1. Použijte následující kód změní v aplikaci Microsoft Dynamics NAV 2009 R2:
    1. Vytvořte novou funkci GetCurrencyFactor v tabulce Směnný kurz (330) takto:
      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. Vytvořte novou funkci SetCurrencyFactor v tabulce Směnný kurz (330) takto:
      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. Přidat novou globální proměnnou ve formě měn (5) a potom zadejte proměnné takto:
      • Název: CurrencyFactor
      • Datový typ: desetinné číslo
    4. Přidáte Faktor měny pole (46) ve formě měn (5).
    5. Přidat novou místní proměnnou v Faktor měny - OnValidate aktivační událost v podobě měny (5) a potom zadejte proměnné takto:
      • Název: CurrencyExchangeRate
      • Datový typ: záznam
      • Podtyp: Směnný kurz
    6. V Faktor měny - OnValidate aktivační událost v podobě měny (5) přidejte následující kód:
      CurrencyExchangeRate.SetCurrentCurrencyFactor(Code,CurrencyFactor);
    7. Přidat novou místní proměnnou v aktivační událost OnAfterGetRecord ve formě měn (5) a potom zadejte proměnné takto:
      • Název: CurrencyExchangeRate
      • Datový typ: záznam
      • Podtyp: Směnný kurz
    8. Přidejte následující kód v aktivační událost OnAfterGetRecord ve formě měn (5):
      CurrencyFactor := CurrencyExchangeRate.GetCurrentCurrencyFactor(Code);
    9. Přidat novou globální proměnnou na stránce měn (5) a potom zadejte proměnné takto:
      • Název: CurrencyFactor
      • Datový typ: desetinné číslo
    10. Přidat Faktor měny pole na stránce měn (5) a potom zadejte do pole takto:
      • Název: CurrencyFactor
      • Titulek: Faktor měny
      • Typ: pole
      • SourceExpr: CurrencyFactor
    11. Přidat novou místní proměnnou v Faktor měny - OnValidate aktivační události na stránce měn (5) a potom zadejte proměnné takto:
      • Název: CurrencyExchangeRate
      • Datový typ: záznam
      • Podtyp: Směnný kurz
    12. V Faktor měny - OnValidate aktivační události na stránce měn (5) přidejte následující kód:
      CurrencyExchangeRate.SetCurrentCurrencyFactor(Code,CurrencyFactor);
    13. Přidat novou místní proměnnou v aktivační událost OnAfterGetRecord na stránce měn (5) a potom zadejte proměnné takto:
      • Název: CurrencyExchangeRate
      • Datový typ: záznam
      • Podtyp: Směnný kurz
    14. Přidejte následující kód v aktivační událost OnAfterGetRecord na stránce měn (5):
      CurrencyFactor := CurrencyExchangeRate.GetCurrentCurrencyFactor(Code);
    15. Přidat novou místní proměnnou ve funkci UpdateParentIntegrationRecord v integraci správy procedura (5150) a potom zadejte proměnné takto:
      • Název: Měna
      • Datový typ: záznam
      • Podtyp: Měna
    16. Změňte kód ve funkci UpdateParentIntegrationRecord v integraci správy procedura (5150) takto:
      Existující kód
      ...  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;
      Změněný kód
      ... 
      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. Změňte kód ve funkci EnableConnector v integraci správy procedura (5150) takto:
      Existující kód
      ...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");
      ...
      Změněný kód
      ...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. Změňte kód ve funkci SetupIntegrationTable v integraci správy procedura (5150) takto:
      Existující kód
      ...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");
      ...
      Změněný kód
      ...InitializeIntegrationRecords(DATABASE::"Unit of Measure");
      InitializeIntegrationRecords(DATABASE::"Ship-to Address");
      InitializeIntegrationRecords(DATABASE::Contact);
      InitializeIntegrationRecords(DATABASE::"Customer Discount Group");
      ...
    19. Změňte kód ve funkci IsIntergrationRecord v integraci správy procedura (5150) takto:
      Existující kód
      ...DATABASE::"Unit of Measure",
      DATABASE::"Ship-to Address",
      DATABASE::Contact,

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

      DATABASE::"Customer Discount Group",
      ...
      Změněný kód
      ...DATABASE::"Unit of Measure",
      DATABASE::"Ship-to Address",
      DATABASE::Contact,
      DATABASE::"Customer Discount Group",
      ...
    20. Změňte kód ve funkci IsIntegrationRecordChild v integraci řídícího procedura (5150) takto:
      Existující kód
      ...IF TableID IN
      [DATABASE::"Sales Line",
      DATABASE::"Sales Invoice Line"]
      THEN
      EXIT(TRUE);
      EXIT(FALSE);
      ...
      Změněný kód
      ...IF TableID IN
      [DATABASE::"Sales Line",

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

      DATABASE::"Sales Invoice Line"]
      THEN
      EXIT(TRUE);
      EXIT(FALSE);
      ...
  2. Instalace konektoru Microsoft Dynamics Feature Pack 6.
    Poznámka: Po instalaci konektoru Microsoft Dynamics funkce aktualizací Service Pack 6, musí deaktivovat "NAV měny směnné kurzy pro měnu" Mapa v konektoru a importovat novou mapu "NAV měny na měnu", znovu konfiguraci adaptéru NAV a pak aktivovat nové mapování.

Předpoklady

Microsoft Dynamics NAV 2009 R2 nainstalovali tuto opravu hotfix, musí mít.

Informace o odinstalaci

Tato oprava hotfix nelze odebrat.

Stav

Společnost Microsoft potvrdila, že se jedná o problém v produktech společnosti Microsoft, které jsou uvedeny v části "Platí pro".
Poznámka: Toto je článek "Rychlé publikování" vytvářen přímo v rámci odborné pomoci společnosti Microsoft. Informace obsažené v tomto dokumentu jsou poskytovány tak, jak je v reakci na vznikající problémy. V důsledku rychlosti v jeho zpřístupnění materiály, mohou obsahovat typografické chyby a mohou být upraveny kdykoli bez předchozího upozornění. Viz Podmínky použití pro další aspekty.
Vlastnosti

ID článku: 2597312 - Poslední kontrola: 10. 1. 2017 - Revize: 1

Váš názor