Kursy wymiany walut są niepoprawnie zaktualizowane po zintegrowaniu programu Microsoft Dynamics CRM z systemu Microsoft Dynamics NAV 2009 R2 przy użyciu Connector dla systemu Microsoft Dynamics

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 2597312 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Ten artykuł dotyczy systemu Microsoft Dynamics NAV dla wszystkich krajów i ustawień regionalnych języka.
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

Symptomy

Założono integracji programu Microsoft Dynamics CRM z systemu Microsoft Dynamics NAV 2009 R2 przy użyciu Connector dla Microsoft Dynamics Feature Pack 5. W niektórych scenariuszach kursy wymiany walut są niepoprawnie zaktualizowane w programie Microsoft Dynamics CRM.
Podczas aktualizowania kursy wymiany walut w Microsoft Dynamics NAV 2009 R2 może zostać wyświetlony następujący komunikat o błędzie:
[Kursy wymiany walut na walutę] napotkał błąd podczas przetwarzania …
TransactionCurrency o identyfikatorze = <guid>nie istnieje.</guid>
W tej sytuacji tylko pierwszy rekord kursy wymiany walut jest synchronizowane z programem Microsoft Dynamics CRM. Gdy system synchronizuje kolejnych rekordów, które są wprowadzane w tabeli Kurs wymiany walut z datami rozpoczęcia później, ten błąd występuje.

Przyczyna

Ten problem występuje, ponieważ ostatni kurs wymiany walut zmienionych, zamiast bieżącego kursu wymiany dla określonej waluty jest synchronizowane z programem Microsoft Dynamics CRM przy użyciu Connector dla systemu Microsoft Dynamics.

Rozwiązanie

Informacje o poprawce

Obsługiwana poprawka jest teraz udostępniana przez firmę Microsoft. Jednakże go jest przeznaczona tylko do rozwiązania problemu opisanego w tym artykule. Stosuje się tylko w systemach, w których występuje ten problem. Ta poprawka może być dodatkowo testowana. Jeżeli dany system nie jest poważnie narażony na ten problem, firma Microsoft zaleca poczekanie na następny dodatek service pack dla systemu Microsoft Dynamics NAV 2009 lub następną wersję systemu Microsoft Dynamics NAV, zawierający tę poprawkę.

Uwaga W szczególnych przypadkach opłaty telefonujący do pomocy technicznej, które mogą być anulowane, jeśli technicznej Professional obsługuje dla systemu Microsoft Dynamics i produktów powiązanych Określa, że określonej aktualizacji problem można rozwiązać. Zwykłe technicznej będą pobierane do dodatkowych pytań i problemów, które nie kwalifikują się do określonej aktualizacji.

Informacje dotyczące instalacji

Firma Microsoft podaje przykłady programowania wyłącznie, bez jakichkolwiek gwarancji wyrażonych wprost lub domyślnie. Obejmuje, ale nie jest ograniczona, ustawowej rękojmi co do przydatności handlowej lub przydatności do określonego celu. W tym artykule założono, że czytelnik zna demonstrowany język programowania oraz narzędzia używane do tworzenia i debugowania procedur. Wykwalifikowani pracownicy pomocy technicznej firmy Microsoft mogą pomóc w wyjaśnieniu jak działa określona procedura, ale nie będą modyfikować tych przykładów ani dodawać żadnej funkcji i konstruować nowych procedur w celu zaspokojenia określonych potrzeb.

Uwaga Przed zainstalowaniem tej poprawki należy zweryfikować, że wszyscy użytkownicy klienta Microsoft Navision są wylogowani systemu. Obejmuje to Microsoft Navision Application Services (NAS) użytkownicy klienta. Powinny być użytkownika klienta tylko, kto jest zalogowany w momencie wdrożyć tę poprawkę.

Aby wdrożyć tę poprawkę, należy uzyskać licencję deweloperską.

Zaleca się, że konto użytkownika w oknie identyfikatorów logowania systemu Windows lub w oknie identyfikatorów logowania bazy danych należy przypisany identyfikator roli "SUPER". Nie można przypisać konta użytkownika Identyfikatora roli "SUPER", należy sprawdzić, czy konto użytkownika ma następujące uprawnienia:
  • Uprawnienie Modyfikacja obiekt, który będzie zmieniany.
  • Uprawnienie Execute do Identyfikator obiektu systemu 5210 obiekt i Identyfikator obiektu systemu 9015 obiekt.


Uwaga Nie ma praw do magazynów danych, chyba że konieczne jest przeprowadzenie napraw danych.

Zmiany kodu

Uwaga Zawsze kod test rozwiązuje w kontrolowanym środowisku przed zastosowaniem poprawki na komputerach produkcyjnych.
Aby rozwiązać ten problem, wykonaj następujące kroki:
  1. Stosuje się następujące zmiany kodu w Microsoft Dynamics NAV 2009 R2:
    1. Tworzenie nowej GetCurrencyFactor działają w tabeli Kurs wymiany walut (330) w następujący sposób:
      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. Tworzenie nowej SetCurrencyFactor działają w tabeli Kurs wymiany walut (330) w następujący sposób:
      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. Dodawanie nowej zmiennej globalnej w formie walut (5), a następnie określ zmienną w następujący sposób:
      • Nazwa: CurrencyFactor
      • Typ danych: Dziesiętna
    4. Dodawanie Współczynnik waluty (46) pola w formularzu walut (5).
    5. Dodawanie nowej zmiennej lokalnej w Współczynnik waluty - OnValidate wyzwalacz w formie walut (5), a następnie określ zmienną w następujący sposób:
      • Nazwa: CurrencyExchangeRate
      • Typ danych: Rekord
      • Podtyp: Kurs wymiany walut
    6. Dodaj poniższy kod w Współczynnik waluty - OnValidate wyzwalacz w formie walut (5):
      CurrencyExchangeRate.SetCurrentCurrencyFactor(Code,CurrencyFactor);
    7. Dodawanie nowej zmiennej lokalnej w OnAfterGetRecord wyzwalacz w formie walut (5), a następnie określ zmienną w następujący sposób:
      • Nazwa: CurrencyExchangeRate
      • Typ danych: Rekord
      • Podtyp: Kurs wymiany walut
    8. Dodaj poniższy kod w OnAfterGetRecord wyzwalacz w formie walut (5):
      CurrencyFactor := CurrencyExchangeRate.GetCurrentCurrencyFactor(Code);
    9. Dodać nową zmienną globalną stronie walut (5), a następnie określ zmienną w następujący sposób:
      • Nazwa: CurrencyFactor
      • Typ danych: Dziesiętna
    10. Dodawanie Współczynnik waluty pole strony walut (5) i określić pola w następujący sposób:
      • Nazwa: CurrencyFactor
      • Podpis: Współczynnik waluty
      • Typ: Pole
      • Wartości SourceExpr.: CurrencyFactor
    11. Dodawanie nowej zmiennej lokalnej w Współczynnik waluty - OnValidate wyzwolić strony walut (5), a następnie określ zmienną w następujący sposób:
      • Nazwa: CurrencyExchangeRate
      • Typ danych: Rekord
      • Podtyp: Kurs wymiany walut
    12. Dodaj poniższy kod w Współczynnik waluty - OnValidate wyzwalacz w stronę walut (5):
      CurrencyExchangeRate.SetCurrentCurrencyFactor(Code,CurrencyFactor);
    13. Dodawanie nowej zmiennej lokalnej w OnAfterGetRecord wyzwolić strony walut (5), a następnie określ zmienną w następujący sposób:
      • Nazwa: CurrencyExchangeRate
      • Typ danych: Rekord
      • Podtyp: Kurs wymiany walut
    14. Dodaj poniższy kod w OnAfterGetRecord wyzwalacz w stronę walut (5):
      CurrencyFactor := CurrencyExchangeRate.GetCurrentCurrencyFactor(Code);
    15. Dodawanie nowej zmiennej lokalnej w UpdateParentIntegrationRecord działać codeunit zarządzanie integracją (5150), a następnie określ zmienną w następujący sposób:
      • Nazwa: Waluta
      • Typ danych: Rekord
      • Podtyp: Waluta
    16. Zmień kod w UpdateParentIntegrationRecord działają w zarządzanie integracją codeunit (5150) w następujący sposób:
      Istniejący kod
      ...
        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;
      Kod zastępczy
      ...
       
        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. Zmień kod w EnableConnector działają w zarządzanie integracją codeunit (5150) w następujący sposób:
      Istniejący kod
      ...
      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");
      ...
      Kod zastępczy
      ...
      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. Zmień kod w SetupIntegrationTable działają w zarządzanie integracją codeunit (5150) w następujący sposób:
      Istniejący kod
      ...
      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");
      ...
      Kod zastępczy
      ...
      InitializeIntegrationRecords(DATABASE::"Unit of Measure");
      InitializeIntegrationRecords(DATABASE::"Ship-to Address");
      InitializeIntegrationRecords(DATABASE::Contact);
      InitializeIntegrationRecords(DATABASE::"Customer Discount Group");
      ...
    19. Zmień kod w IsIntergrationRecord działają w zarządzanie integracją codeunit (5150) w następujący sposób:
      Istniejący kod
      ...
      DATABASE::"Unit of Measure",
      DATABASE::"Ship-to Address",
      DATABASE::Contact,
      
      //Delete the following line.
      DATABASE::"Currency Exchange Rate",
      
      DATABASE::"Customer Discount Group",
      ...
      Kod zastępczy
      ...
      DATABASE::"Unit of Measure",
      DATABASE::"Ship-to Address",
      DATABASE::Contact,
      DATABASE::"Customer Discount Group",
      ...
    20. Zmień kod w IsIntegrationRecordChild działają w codeunit integracji zarządzania (5150) w następujący sposób:
      Istniejący kod
      ...
      IF TableID IN
        [DATABASE::"Sales Line",
         DATABASE::"Sales Invoice Line"]
      THEN
        EXIT(TRUE);
      EXIT(FALSE);
      ...
      Kod zastępczy
      ...
      IF TableID IN
        [DATABASE::"Sales Line",
      
         // Add the following line.
         DATABASE::"Currency Exchange Rate",
      
         DATABASE::"Sales Invoice Line"]
      THEN
        EXIT(TRUE);
      EXIT(FALSE);
      ...
  2. Zainstalować łącznik dla systemu Microsoft Dynamics Feature Pack 6.
    UwagaPo zainstalowaniu łącznika dla Microsoft Dynamics Feature Pack 6 musi dezaktywować mapę "NAV waluty kursów wymiany na waluty" w łącznika i zaimportować nową mapę "NAV waluty do waluty", uruchom konfigurację karty nawigacji i uaktywnić nowej mapy.

Wymagania wstępne

Musisz zainstalować tę poprawkę systemu Microsoft Dynamics NAV 2009 R2.

Informacje dotyczące usuwania

Nie można usunąć tę poprawkę.

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "Dotyczy".
Uwaga Jest to artykuł "Szybkie PUBLIKUJ" tworzona bezpośrednio z organizacji pomocy technicznej firmy Microsoft. Informacje zawarte w niniejszym dokumencie są dostarczane jako-w odpowiedzi na pojawiające się problemy. Z prędkości dokonując dostępnych materiałów może zawierać błędy typograficzne i może zostać zmieniona w dowolnym czasie bez uprzedzenia. Zobacz Warunki użytkowania dla innych względów.

Właściwości

Numer ID artykułu: 2597312 - Ostatnia weryfikacja: 30 sierpnia 2011 - Weryfikacja: 3.0
Informacje zawarte w tym artykule dotyczą:
  • Microsoft Dynamics NAV 2009
Słowa kluczowe: 
kbqfe kbmbsmigrate kbmbscodefix kberrmsg kbsurveynew kbmt KB2597312 KbMtpl
Przetłumaczone maszynowo
WAŻNE: Ten artykuł nie został przetłumaczony przez człowieka, tylko przez oprogramowanie do tłumaczenia maszynowego firmy Microsoft. Firma Microsoft oferuje zarówno artykuły tłumaczone przez ludzi, jak i artykuły tłumaczone maszynowo, dzięki czemu każdy użytkownik może uzyskać dostęp do całej zawartości bazy wiedzy Knowledge Base we własnym języku. Prosimy jednak pamiętać, że artykuły przetłumaczone maszynowo nie zawsze są doskonałe. Mogą zawierać błędy słownictwa, składni i gramatyki, przypominające błędy robione przez osoby, dla których język użytkownika nie jest językiem ojczystym. Firma Microsoft nie odpowiada za wszelkie nieścisłości, błędy lub szkody spowodowane nieprawidłowym tłumaczeniem zawartości oraz za wykorzystanie tej zawartości przez klientów. Oprogramowanie do tłumaczenia maszynowego jest często aktualizowane przez firmę Microsoft.
Anglojęzyczna wersja tego artykułu to:2597312

Przekaż opinię

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com