Taux de change sont correctement mis à jour lorsque vous intégrez Microsoft Dynamics CRM avec Microsoft Dynamics NAV 2009 R2 en utilisant le connecteur pour Microsoft Dynamics

Traductions disponibles Traductions disponibles
Numéro d'article: 2597312 - Voir les produits auxquels s'applique cet article
Cet article s'applique à Microsoft Dynamics NAV pour tous les pays et tous les paramètres régionaux de langue.
Agrandir tout | Réduire tout

Sommaire

Symptômes

Supposons qu'intégrer Microsoft Dynamics CRM avec Microsoft Dynamics NAV 2009 R2 en utilisant le connecteur pour Microsoft Dynamics fonctionnalité Pack 5. Dans certains scénarios, taux de change sont mis à jour incorrectement dans Microsoft Dynamics CRM.
Lorsque vous mettez à jour des taux de change devise dans Microsoft Dynamics NAV 2009 R2, le message d'erreur suivant s'affiche :
[Taux de change devise] a rencontré une erreur lors du traitement de ?
TransactionCurrency avec l'ID = <guid>n'existe pas.</guid>
Dans ce cas, seul le premier enregistrement des taux de change devise est synchronisé avec Microsoft Dynamics CRM. Lorsque le système synchronise les enregistrements suivants sont entrés dans la table de taux de change avec les dates de début ultérieure, cette erreur se produit.

Cause

Ce problème se produit parce que le dernier taux de change devise modifiés, au lieu du taux de change de la monnaie déterminée, est synchronisé avec Microsoft Dynamics CRM en utilisant le connecteur pour Microsoft Dynamics.

Résolution

Informations sur le correctif

Un correctif est désormais disponible auprès de Microsoft. Toutefois, il est conçu uniquement pour corriger le problème décrit dans cet article. Appliquez-le uniquement sur les systèmes qui rencontrent ce problème spécifique. Ce correctif peut subir des tests supplémentaires. Par conséquent, si vous n'êtes pas sérieusement concerné par ce problème, nous vous recommandons d'attendre le prochain service pack de Microsoft Dynamics NAV 2009 ou la prochaine version de Microsoft Dynamics NAV qui comprendra ce correctif.

Remarque Dans certains cas, aucuns frais de prise en charge des appels peuvent être annulées si un technicien du Support technique pour Microsoft Dynamics et produits associés détermine qu'une mise à jour spécifique peut résoudre votre problème. Les coûts habituels du support technique s'appliqueront aux autres questions et problèmes qui ne relèvent pas de la mise à jour en question.

Informations sur l'installation

Microsoft fournit des exemples de programmation à titre d'illustration, sans garantie expresse ou implicite. Cela inclut, mais n'est pas limité à, les garanties implicites de qualité marchande ou d'adéquation à un usage particulier. Cet article suppose que vous êtes familiarisé avec le langage de programmation présenté et les outils utilisés pour créer et déboguer des procédures. Ingénieurs du support technique Microsoft peuvent aider à expliquer la fonctionnalité d'une procédure particulière, mais ils ne modifieront pas ces exemples pour fournir des fonctionnalités supplémentaires ou de procédures de construction pour satisfaire vos besoins spécifiques.

Remarque Avant d'installer ce correctif, vérifiez que tous les utilisateurs du client Microsoft Navision sont déconnectés du système. Cela inclut Microsoft Navision Application Services (NAS) les utilisateurs du client. Vous devez être le seul utilisateur client qui est connecté lorsque vous implémentez ce correctif.

Pour implémenter ce correctif, vous devez disposer d'une licence de développeur.

Nous recommandons que le compte d'utilisateur dans la fenêtre Logins Windows ou dans la fenêtre Logins base de données est affecté à l'ID du rôle « SUPER ». Si le compte d'utilisateur ne peut pas être assigné à l'ID du rôle « SUPER », vous devez vérifier que le compte d'utilisateur possède les autorisations suivantes :
  • L'autorisation de modification pour l'objet qui vous seront modifiés.
  • L'autorisation d'exécution pour le ID d'objet système 5210 objet et pour le ID d'objet Système 9015 objet.


Remarque Il est inutile de disposer de droits pour les banques de données, sauf si vous devez effectuer les réparations de données.

Modifications du code

Remarque Toujours code de test résout dans un environnement contrôlé avant d'appliquer les correctifs pour ordinateurs de votre production.
Pour résoudre ce problème, procédez comme suit :
  1. Appliquer les modifications de code suivantes dans Microsoft Dynamics NAV 2009 R2 :
    1. Créer un nouveau GetCurrencyFactor la fonction de la table de taux de change (330) comme suit :
      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. Créer un nouveau SetCurrencyFactor la fonction de la table de taux de change (330) comme suit :
      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. Ajouter une nouvelle variable globale sous la forme de devises (5) et spécifiez la variable comme suit :
      • Nom: CurrencyFactor
      • Type de données: Décimal
    4. Ajouter le Facteur de devise champ (46) sous la forme de devises (5).
    5. Ajouter une nouvelle variable locale dans le Facteur devise - OnValidate déclencher sous la forme de devises (5) et spécifiez la variable comme suit :
      • Nom: CurrencyExchangeRate
      • Type de données: Enregistrement
      • Sous-type: Taux de change
    6. Ajoutez le code suivant dans le Facteur devise - OnValidate déclencher sous la forme de devises (5) :
      CurrencyExchangeRate.SetCurrentCurrencyFactor(Code,CurrencyFactor);
    7. Ajouter une nouvelle variable locale dans le OnAfterGetRecord déclencher sous la forme de devises (5) et spécifiez la variable comme suit :
      • Nom: CurrencyExchangeRate
      • Type de données: Enregistrement
      • Sous-type: Taux de change
    8. Ajoutez le code suivant dans le OnAfterGetRecord déclencher sous la forme de devises (5) :
      CurrencyFactor := CurrencyExchangeRate.GetCurrentCurrencyFactor(Code);
    9. Ajouter une nouvelle variable globale dans la Page de devises (5) et spécifiez la variable comme suit :
      • Nom: CurrencyFactor
      • Type de données: Décimal
    10. Ajouter le Facteur de devise champ de la page de devises (5), et puis spécifiez le champ comme suit :
      • Nom: CurrencyFactor
      • Légende: Facteur de devise
      • Type: Champ
      • SourceExpr: CurrencyFactor
    11. Ajouter une nouvelle variable locale dans le Facteur devise - OnValidate déclencheur dans la page de devises (5) et spécifiez la variable comme suit :
      • Nom: CurrencyExchangeRate
      • Type de données: Enregistrement
      • Sous-type: Taux de change
    12. Ajoutez le code suivant dans le Facteur devise - OnValidate déclencheur dans la page de devises (5) :
      CurrencyExchangeRate.SetCurrentCurrencyFactor(Code,CurrencyFactor);
    13. Ajouter une nouvelle variable locale dans le OnAfterGetRecord déclencheur dans la page de devises (5) et spécifiez la variable comme suit :
      • Nom: CurrencyExchangeRate
      • Type de données: Enregistrement
      • Sous-type: Taux de change
    14. Ajoutez le code suivant dans le OnAfterGetRecord déclencheur dans la page de devises (5) :
      CurrencyFactor := CurrencyExchangeRate.GetCurrentCurrencyFactor(Code);
    15. Ajouter une nouvelle variable locale dans le UpdateParentIntegrationRecord fonction dans le codeunit Gestion de l'intégration (5150) et spécifiez la variable comme suit :
      • Nom: Devise
      • Type de données: Enregistrement
      • Sous-type: Devise
    16. Modifiez le code dans le UpdateParentIntegrationRecord fonctionnent dans le codeunit Gestion de l'intégration (5150) comme suit :
      Code existant
      ...
        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;
      Code de remplacement
      ...
       
        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. Modifiez le code dans le EnableConnector fonctionnent dans le codeunit Gestion de l'intégration (5150) comme suit :
      Code existant
      ...
      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");
      ...
      Code de remplacement
      ...
      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. Modifiez le code dans le SetupIntegrationTable fonctionnent dans le codeunit Gestion de l'intégration (5150) comme suit :
      Code existant
      ...
      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");
      ...
      Code de remplacement
      ...
      InitializeIntegrationRecords(DATABASE::"Unit of Measure");
      InitializeIntegrationRecords(DATABASE::"Ship-to Address");
      InitializeIntegrationRecords(DATABASE::Contact);
      InitializeIntegrationRecords(DATABASE::"Customer Discount Group");
      ...
    19. Modifiez le code dans le IsIntergrationRecord fonctionnent dans le codeunit Gestion de l'intégration (5150) comme suit :
      Code existant
      ...
      DATABASE::"Unit of Measure",
      DATABASE::"Ship-to Address",
      DATABASE::Contact,
      
      //Delete the following line.
      DATABASE::"Currency Exchange Rate",
      
      DATABASE::"Customer Discount Group",
      ...
      Code de remplacement
      ...
      DATABASE::"Unit of Measure",
      DATABASE::"Ship-to Address",
      DATABASE::Contact,
      DATABASE::"Customer Discount Group",
      ...
    20. Modifiez le code dans le IsIntegrationRecordChild fonctionnent dans le codeunit Gestion de l'intégration (5150) comme suit :
      Code existant
      ...
      IF TableID IN
        [DATABASE::"Sales Line",
         DATABASE::"Sales Invoice Line"]
      THEN
        EXIT(TRUE);
      EXIT(FALSE);
      ...
      Code de remplacement
      ...
      IF TableID IN
        [DATABASE::"Sales Line",
      
         // Add the following line.
         DATABASE::"Currency Exchange Rate",
      
         DATABASE::"Sales Invoice Line"]
      THEN
        EXIT(TRUE);
      EXIT(FALSE);
      ...
  2. Installez le connecteur pour Microsoft Dynamics Feature Pack 6.
    RemarqueAprès avoir installé le connecteur pour Microsoft Dynamics fonctionnalité Pack 6, vous devez désactiver le mappage « Taux de change de devise NAV pour devise » dans le connecteur et importer le nouveau mappage « NAV devises à monnaie », exécutez à nouveau la configuration de la carte NAV et ensuite activer le nouveau mappage.

Conditions préalables

Vous devez disposer de Microsoft Dynamics NAV 2009 R2 pour appliquer ce correctif.

Informations sur la suppression

Vous ne pouvez pas supprimer ce correctif.

Statut

Microsoft a confirmé qu'il s'agit d'un problème dans les produits Microsoft répertoriés dans la section « S'applique à ».
Remarque Il s'agit d'un article de « FAST publier » créé directement à partir de l'organisation de support technique Microsoft. Les informations contenues dans ce document sont fournies en tant que-est en réponse à des questions nouvelles. En raison de la vitesse de mise à disposition, les matériaux peuvent inclure des erreurs typographiques et peuvent être révisées à tout moment sans préavis. Voir Conditions d'utilisation par d'autres considérations.

Propriétés

Numéro d'article: 2597312 - Dernière mise à jour: mardi 30 août 2011 - Version: 3.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Dynamics NAV 2009
Mots-clés : 
kbqfe kbmbsmigrate kbmbscodefix kberrmsg kbsurveynew kbmt KB2597312 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 2597312
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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