Tassi di cambio vengono aggiornati in modo non corretto durante l'integrazione di Microsoft Dynamics CRM con Microsoft Dynamics NAV 2009 R2 utilizzando il connettore per Microsoft Dynamics

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 2597312
In questo articolo si applica a Microsoft Dynamics NAV per tutti i paesi e tutte le lingue.
Sintomi
Si supponga di integrazione con Microsoft Dynamics NAV 2009 R2 Microsoft Dynamics CRM utilizzando il connettore per Microsoft Dynamics Feature Pack 5. In alcuni scenari, tassi di cambio vengono aggiornati in modo errato in Microsoft Dynamics CRM.
Quando si aggiornano i tassi di cambio valuta in Microsoft Dynamics NAV 2009 R2, è possibile che venga visualizzato il seguente messaggio di errore:
[Tassi di cambio valuta] si è verificato un errore durante l'elaborazione di …
TransactionCurrency con ID = <guid>non esiste.</guid>
In questo caso, solo il primo record dei tassi di cambio valuta viene sincronizzato con Microsoft Dynamics CRM. Questo errore si verifica quando il sistema consente di sincronizzare i record successivi che vengono immessi nella tabella Tassi di cambio valute con le date di inizio successive.
Cause
Questo problema si verifica perché l'ultimo tasso di cambio valuta modificati, anziché il tasso di cambio corrente per la valuta in particolare, viene sincronizzato con Microsoft Dynamics CRM utilizzando il connettore per Microsoft Dynamics.
Risoluzione

Informazioni sull'aggiornamento rapido

Un hotfix supportato è disponibile da Microsoft. Tuttavia, è destinato esclusivamente alla risoluzione del problema descritto in questo articolo. Applicarlo solo ai sistemi in cui si verificano questo problema specifico. Questo hotfix venga eseguite ulteriori verifiche. Se il problema non causa gravi difficoltà, si consiglia di attendere il prossimo service pack di Microsoft Dynamics NAV 2009 o la prossima versione di Microsoft Dynamics NAV contenente tale hotfix.

Nota In casi particolari, le spese normalmente addebitate per le chiamate potrebbero essere annullate qualora un addetto del supporto tecnico di Microsoft Dynamics e prodotti correlati di supporto determinare che uno specifico aggiornamento risolverà il problema. I costi di supporto usuali verranno applicati per eventuali ulteriori domande e problemi che non dovessero rientrare nello specifico aggiornamento in questione.

Informazioni sull'installazione

Microsoft fornisce esempi di programmazione solo scopo illustrativo e senza alcuna garanzia espressa o implicita. Ciò include, ma non è tra l'altro, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presuppone che l'utente conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug di procedure. Gli esperti Microsoft possono spiegare la funzionalità di una particolare procedura, ma in nessun caso a modificare questi esempi per fornire funzionalità aggiuntive o creare procedure atte a soddisfare specifiche esigenze.

Nota Prima di installare questo hotfix, verificare che tutti gli utenti del client Microsoft Navision siano disconnessi dal sistema. Microsoft Navision Application Services (NAS) sono inclusi gli utenti dei client. Dovrebbe essere il solo utente del client è connesso quando si implementa questa correzione rapida.

Per implementare questo hotfix, è necessario disporre di una licenza di sviluppatore.

È consigliabile che l'account utente nella finestra Login Windows o Login Database assegnare l'ID di ruolo "SUPER". Se l'account utente non può essere assegnato l'ID di ruolo "SUPER", è necessario verificare che l'account utente disponga delle autorizzazioni seguenti:
  • L'autorizzazione alla modifica dell'oggetto che verranno modificati.
  • L'autorizzazione Execute per la ID dell'oggetto sistema 5210 oggetto e per la ID dell'oggetto sistema 9015 oggetto.


Nota Non è necessario disporre dei diritti per gli archivi dati a meno che non è necessario eseguire il ripristino dei dati.

Modifiche del codice

Nota Viene sempre codice di test risolto in un ambiente controllato prima di applicare le correzioni per i computer di produzione.
Per risolvere il problema, attenersi alla seguente procedura:
  1. Applicare le modifiche di codice riportato di seguito in Microsoft Dynamics NAV 2009 R2:
    1. Creare un nuovo GetCurrencyFactor il funzionamento della tabella Tassi di cambio valute (330) come segue:
      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. Creare un nuovo SetCurrencyFactor il funzionamento della tabella Tassi di cambio valute (330) come segue:
      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. Aggiungere una nuova variabile globale nel modulo valute (5) e quindi specificare la variabile come indicato di seguito:
      • Nome: CurrencyFactor
      • Il tipo di dati: Decimale
    4. Aggiungere il Fattore valuta campo (46) sotto forma di monete (5).
    5. Aggiungere una nuova variabile locale nel Fattore valuta - OnValidate Attiva sotto forma di monete (5) e quindi la variabile come indicato di seguito:
      • Nome: CurrencyExchangeRate
      • Il tipo di dati: Record
      • Sottotipo: Tasso di cambio valuta
    6. Aggiungere il codice seguente nel Fattore valuta - OnValidate attivare il modulo di valute (5):
      CurrencyExchangeRate.SetCurrentCurrencyFactor(Code,CurrencyFactor);
    7. Aggiungere una nuova variabile locale nel Trigger OnAfterGetRecord Attiva sotto forma di monete (5) e quindi la variabile come indicato di seguito:
      • Nome: CurrencyExchangeRate
      • Il tipo di dati: Record
      • Sottotipo: Tasso di cambio valuta
    8. Aggiungere il codice seguente nel Trigger OnAfterGetRecord attivare il modulo di valute (5):
      CurrencyFactor := CurrencyExchangeRate.GetCurrentCurrencyFactor(Code);
    9. Aggiungere una nuova variabile globale nella pagina delle valute (5) e quindi specificare la variabile come indicato di seguito:
      • Nome: CurrencyFactor
      • Il tipo di dati: Decimale
    10. Aggiungere il Fattore valuta campo nella pagina delle valute (5) e quindi specificare il campo come segue:
      • Nome: CurrencyFactor
      • Didascalia: Fattore valuta
      • Tipo: Campo
      • SourceExpr: CurrencyFactor
    11. Aggiungere una nuova variabile locale nel Fattore valuta - OnValidate attivare nella pagina delle valute (5) e quindi la variabile come indicato di seguito:
      • Nome: CurrencyExchangeRate
      • Il tipo di dati: Record
      • Sottotipo: Tasso di cambio valuta
    12. Aggiungere il codice seguente nel Fattore valuta - OnValidate attivare nella pagina delle valute (5):
      CurrencyExchangeRate.SetCurrentCurrencyFactor(Code,CurrencyFactor);
    13. Aggiungere una nuova variabile locale nel Trigger OnAfterGetRecord attivare nella pagina delle valute (5) e quindi la variabile come indicato di seguito:
      • Nome: CurrencyExchangeRate
      • Il tipo di dati: Record
      • Sottotipo: Tasso di cambio valuta
    14. Aggiungere il codice seguente nel Trigger OnAfterGetRecord attivare nella pagina delle valute (5):
      CurrencyFactor := CurrencyExchangeRate.GetCurrentCurrencyFactor(Code);
    15. Aggiungere una nuova variabile locale nel UpdateParentIntegrationRecord funzionamento della codeunit di gestione dell'integrazione (5150) e quindi la variabile come indicato di seguito:
      • Nome: Valuta
      • Il tipo di dati: Record
      • Sottotipo: Valuta
    16. Modificare il codice del UpdateParentIntegrationRecord il funzionamento della codeunit di gestione dell'integrazione (5150) come segue:
      Codice esistente
      ...  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;
      Codice di sostituzione
      ...   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. Modificare il codice del EnableConnector il funzionamento della codeunit di gestione dell'integrazione (5150) come segue:
      Codice esistente
      ...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");...
      Codice di sostituzione
      ...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. Modificare il codice del SetupIntegrationTable il funzionamento della codeunit di gestione dell'integrazione (5150) come segue:
      Codice esistente
      ...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");...
      Codice di sostituzione
      ...InitializeIntegrationRecords(DATABASE::"Unit of Measure");InitializeIntegrationRecords(DATABASE::"Ship-to Address");InitializeIntegrationRecords(DATABASE::Contact);InitializeIntegrationRecords(DATABASE::"Customer Discount Group");...
    19. Modificare il codice del IsIntergrationRecord il funzionamento della codeunit di gestione dell'integrazione (5150) come segue:
      Codice esistente
      ...DATABASE::"Unit of Measure",DATABASE::"Ship-to Address",DATABASE::Contact,//Delete the following line.DATABASE::"Currency Exchange Rate",DATABASE::"Customer Discount Group",...
      Codice di sostituzione
      ...DATABASE::"Unit of Measure",DATABASE::"Ship-to Address",DATABASE::Contact,DATABASE::"Customer Discount Group",...
    20. Modificare il codice del IsIntegrationRecordChild il funzionamento della codeunit di gestione dell'integrazione (5150) come segue:
      Codice esistente
      ...IF TableID IN  [DATABASE::"Sales Line",   DATABASE::"Sales Invoice Line"]THEN  EXIT(TRUE);EXIT(FALSE);...
      Codice di sostituzione
      ...IF TableID IN  [DATABASE::"Sales Line",   // Add the following line.   DATABASE::"Currency Exchange Rate",   DATABASE::"Sales Invoice Line"]THEN  EXIT(TRUE);EXIT(FALSE);...
  2. Installare il connettore per Microsoft Dynamics Feature Pack 6.
    NotaDopo aver installato il connettore per Microsoft Dynamics Feature Pack 6, deve disattivare la mappa "Tassi di cambio valuta NAV per valuta" nel connettore importare la nuova mappa "NAV valute per valuta", eseguire nuovamente la configurazione della scheda barra di spostamento e quindi attivare la nuova mappa.

Prerequisiti

È necessario disporre di Microsoft Dynamics NAV 2009 R2 per applicare questo hotfix.

Informazioni sulla rimozione

Non è possibile rimuovere questo hotfix.
Status
Microsoft ha confermato che si tratta di un problema con i prodotti elencati nella sezione "Si applica a".
Nota Si tratta di un articolo "FAST pubblica" creato direttamente da all'interno dell'organizzazione di supporto tecnico Microsoft. Le informazioni contenute nel presente documento viene fornite come-è in risposta ai problemi emergenti. Di conseguenza la velocità nel rendendoli disponibili, i materiali possono includere errori di battitura e possono essere modificati in qualsiasi momento senza preavviso. Vedere Termini di utilizzo per altre considerazioni.

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 2597312 - Ultima revisione: 08/30/2011 02:07:00 - Revisione: 3.0

Microsoft Dynamics NAV 2009

  • kbqfe kbmbsmigrate kbmbscodefix kberrmsg kbsurveynew kbmt KB2597312 KbMtit
Feedback