Ισχύει για
Dynamics NAV 2009

Όταν χρησιμοποιείτε νομισματικών μονάδων στο Microsoft Dynamics NAV 2009, ποσό συσχέτισης υπολογίζεται εσφαλμένα στην εφαρμογή πελάτη ή εφαρμογή σελίδων εγγραφές προμηθευτή, εάν εφαρμόζετε μια πληρωμή σε νόμισμα σε τιμολόγια στο τοπικό νόμισμα. Αυτό το ζήτημα παρουσιάζεται στα ακόλουθα προϊόντα:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

Προτεινόμενη αντιμετώπιση

Πληροφορίες άμεσης επιδιόρθωσης

Μια υποστηριζόμενη άμεση επιδιόρθωση είναι τώρα διαθέσιμη από τη Microsoft. Ωστόσο, προορίζεται μόνο για τη διόρθωση του ζητήματος που περιγράφεται σε αυτό το άρθρο. Eφαρμόστε τη μόνο σε συστήματα που αντιμετωπίζουν το συγκεκριμένο ζήτημα. Αυτή η επείγουσα επιδιόρθωση ενδέχεται να υποβληθεί σε πρόσθετο έλεγχο. Επομένως, εάν αυτό το ζήτημα δεν σας επηρεάζει ιδιαίτερα, σας συνιστούμε να περιμένετε έως το επόμενο service pack του Microsoft Dynamics NAV 2009 ή την επόμενη έκδοση του Microsoft Dynamics NAV που περιέχει αυτήν την επείγουσα επιδιόρθωση.Σημείωση Σε ειδικές περιπτώσεις, οι χρεώσεις που υφίστανται κανονικά για κλήσεις υποστήριξης ενδέχεται να να ακυρωθούν, εάν έναν επαγγελματία τεχνικής υποστήριξης για το Microsoft Dynamics και σχετικά προϊόντα προσδιορίζει ότι μια συγκεκριμένη ενημερωμένη έκδοση θα επιλύσει το ζήτημά σας. Οι συνηθισμένες χρεώσεις υποστήριξης θα ισχύει για πρόσθετες ερωτήσεις υποστήριξης και για θέματα που δεν αφορούν τη συγκεκριμένη ενημερωμένη έκδοση.

Πληροφορίες εγκατάστασης

Η Microsoft παρέχει παραδείγματα προγραμματισμού μόνο για επεξήγηση, χωρίς καμία εγγύηση, είτε σιωπηρή είτε ρητή. Αυτό περιλαμβάνει, ενδεικτικά, τις σιωπηρές εγγυήσεις εμπορευσιμότητας ή καταλληλότητας για συγκεκριμένο σκοπό. Αυτό το άρθρο προϋποθέτει ότι είστε εξοικειωμένοι με τη γλώσσα προγραμματισμού που παρουσιάζεται, καθώς και με τα εργαλεία που χρησιμοποιούνται για τη δημιουργία διαδικασιών και τον εντοπισμό σφαλμάτων σε αυτές. Οι μηχανικοί υποστήριξης της Microsoft μπορούν να σας εξηγήσουν τη λειτουργικότητα μιας συγκεκριμένης διαδικασίας. Ωστόσο, δεν θα τροποποιήσουν αυτά τα παραδείγματα για να παράσχουν πρόσθετες λειτουργίες, ούτε θα δημιουργήσουν διαδικασίες για να καλύψουν τις συγκεκριμένες απαιτήσεις σας.Σημείωση Πριν να εγκαταστήσετε αυτήν την επείγουσα επιδιόρθωση, επιβεβαιώστε ότι όλοι οι χρήστες προγράμματος-πελάτη Microsoft Dynamics NAV έχουν αποσυνδεθεί από το σύστημα. Αυτό περιλαμβάνει υπηρεσίες Microsoft Dynamics NAV εφαρμογών διακομιστή (NAS). Θα πρέπει να το πρόγραμμα-πελάτη μόνο χρήστη που είναι συνδεδεμένος κατά την εφαρμογή αυτής της επείγουσας επιδιόρθωσης.Για να εφαρμόσετε αυτήν την επείγουσα επιδιόρθωση, πρέπει να έχετε μια άδεια χρήσης του προγραμματιστή.Συνιστούμε ότι ο λογαριασμός χρήστη στο παράθυρο "Συνδέσεις Windows" ή στο παράθυρο συνδέσεις βάσης δεδομένων να αντιστοιχιστεί το "SUPER" αναγνωριστικό ρόλου. Εάν ο λογαριασμός χρήστη δεν μπορεί να αντιστοιχιστεί το Αναγνωριστικό ρόλου "SUPER", πρέπει να επαληθεύσετε ότι ο λογαριασμός χρήστη έχει τα ακόλουθα δικαιώματα:

  • Το δικαίωμα "Τροποποίηση" για το αντικείμενο που θα αλλάξετε.

  • Τα δικαιώματα εκτέλεσης για το αντικείμενο 5210 Αναγνωριστικό αντικειμένου συστήματος και για την 9015 Αναγνωριστικό αντικειμένου συστήματοςτο αντικείμενο.

Σημείωση Δεν πρέπει να έχετε δικαιώματα για τους χώρους αποθήκευσης δεδομένων, εκτός και αν έχετε να εκτελέσετε επιδιόρθωση δεδομένων.

Αλλαγές κώδικα

Σημείωση πάντα δοκιμή κώδικα διορθώνει σε ελεγχόμενο περιβάλλον πριν να εφαρμόσετε τις ενημερώσεις κώδικα στους υπολογιστές παραγωγής. Πριν από την εφαρμογή της αλλαγής, εισαγάγετε όλες τις ενημερωμένες εκδόσεις SEPA.Για να επιλύσετε αυτό το ζήτημα, ακολουθήστε τα εξής βήματα:

  1. Αλλάξτε τον κωδικό στις ιδιότητες της φόρμας Συσχέτιση Εγγρ. πελατών (232) ως εξής:Υπάρχοντα κώδικα

    ...OnModifyRecord=BEGIN                     CODEUNIT.RUN(CODEUNIT::"Cust. Entry-Edit",Rec);                     EXIT(FALSE);                   END;...

    Αντικατάσταση κώδικα

    ...OnModifyRecord=BEGIN                     CODEUNIT.RUN(CODEUNIT::"Cust. Entry-Edit",Rec);                     IF "Applies-to ID" <> xRec."Applies-to ID" THEN                       CalcApplnAmount;                     EXIT(FALSE);                   END;...
  2. Αλλάξτε τον κωδικό στη συνάρτηση HandlChosenEntries στη φόρμα Συσχέτιση Εγγρ. πελατών (232) ως εξής:Υπάρχοντα κωδικό 1

    ...IF NOT FromZeroGenJnl THEN          AppliedCustLedgEntryTemp.SETRANGE(Positive,CurrentAmount < 0);        IF AppliedCustLedgEntryTemp.FINDFIRST THEN BEGIN          AppliedCustLedgEntryTemp.CALCFIELDS("Remaining Amount");          IF Type = Type::Direct THEN            CalculateCurrency := ApplyingCustLedgEntry."Entry No." <> 0          ELSE            CalculateCurrency := TRUE;          IF (CurrencyCode <> AppliedCustLedgEntryTemp."Currency Code") AND CalculateCurrency THEN BEGIN            AppliedCustLedgEntryTemp."Remaining Amount" :=              GenJnlPostLine.ExchAmount(                AppliedCustLedgEntryTemp."Remaining Amount",                AppliedCustLedgEntryTemp."Currency Code",                CurrencyCode,"Posting Date");            AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible" :=              GenJnlPostLine.ExchAmount(                AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible",                AppliedCustLedgEntryTemp."Currency Code",                CurrencyCode,"Posting Date");            AppliedCustLedgEntryTemp."Amount to Apply" :=              GenJnlPostLine.ExchAmount(                AppliedCustLedgEntryTemp."Amount to Apply",                AppliedCustLedgEntryTemp."Currency Code",                CurrencyCode,"Posting Date");          END;          CASE Type OF            Type::Direct:...

    Αντικατάσταση κώδικα 1

    ...IF NOT FromZeroGenJnl THEN          AppliedCustLedgEntryTemp.SETRANGE(Positive,CurrentAmount < 0);        IF AppliedCustLedgEntryTemp.FINDFIRST THEN BEGIN          ExchangeAmountsOnLedgerEntry(Type,CurrencyCode,AppliedCustLedgEntryTemp);          CASE Type OF            Type::Direct:...

    Υπάρχοντα κώδικα 2

    ...END ELSE BEGIN          AppliedCustLedgEntryTemp.SETRANGE(Positive);          AppliedCustLedgEntryTemp.FINDFIRST;        END;        IF (OldPmtDisc <> PmtDiscAmount) THEN...

    Αντικατάσταση κώδικα 2

    ...END ELSE BEGIN          AppliedCustLedgEntryTemp.SETRANGE(Positive);          AppliedCustLedgEntryTemp.FINDFIRST;          ExchangeAmountsOnLedgerEntry(Type,CurrencyCode,AppliedCustLedgEntryTemp);        END;        IF (OldPmtDisc <> PmtDiscAmount) THEN...
  3. Αλλάξτε τον κωδικό στη συνάρτηση ExchangeAmountsOnLedgerEntry στη φόρμα Συσχέτιση Εγγρ. πελατών (232) ως εξής:Υπάρχοντα κώδικα

    ...CheckRounding;    END;    BEGIN    END.  }...

    Αντικατάσταση κώδικα

    ...CheckRounding;    END;    LOCAL PROCEDURE ExchangeAmountsOnLedgerEntry@20(Type@1003 : 'Direct,GenJnlLine,SalesHeader';CurrencyCode@1000 : Code[10];VAR AppliedCustLedgEntryTemp@1001 : Record 21);    VAR      CalculateCurrency@1002 : Boolean;    BEGIN      AppliedCustLedgEntryTemp.CALCFIELDS("Remaining Amount");      IF Type = Type::Direct THEN        CalculateCurrency := ApplyingCustLedgEntry."Entry No." <> 0      ELSE        CalculateCurrency := TRUE;      IF (CurrencyCode <> AppliedCustLedgEntryTemp."Currency Code") AND CalculateCurrency THEN BEGIN        AppliedCustLedgEntryTemp."Remaining Amount" :=          GenJnlPostLine.ExchAmount(            AppliedCustLedgEntryTemp."Remaining Amount",            AppliedCustLedgEntryTemp."Currency Code",            CurrencyCode,"Posting Date");        AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible" :=          GenJnlPostLine.ExchAmount(            AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible",            AppliedCustLedgEntryTemp."Currency Code",            CurrencyCode,"Posting Date");        AppliedCustLedgEntryTemp."Amount to Apply" :=          GenJnlPostLine.ExchAmount(            AppliedCustLedgEntryTemp."Amount to Apply",            AppliedCustLedgEntryTemp."Currency Code",            CurrencyCode,"Posting Date");      END;    END;    BEGIN    END.  }...
  4. Αλλάξτε τον κωδικό στις ιδιότητες της φόρμας συσχέτιση εγγραφών προμηθευτών (233) ως εξής:Υπάρχοντα κώδικα

    ...OnModifyRecord=BEGIN                     CODEUNIT.RUN(CODEUNIT::"Vend. Entry-Edit",Rec);                     EXIT(FALSE);                   END;...

    Αντικατάσταση κώδικα

    ...OnModifyRecord=BEGIN                     CODEUNIT.RUN(CODEUNIT::"Vend. Entry-Edit",Rec);                     IF "Applies-to ID" <> xRec."Applies-to ID" THEN                       CalcApplnAmount;                     EXIT(FALSE);                   END;...
  5. Αλλάξτε τον κωδικό στη συνάρτηση HandlChosenEntries στη φόρμα συσχέτιση εγγραφών προμηθευτών (233) ως εξής:Υπάρχοντα κωδικό 1

    ...IF NOT FromZeroGenJnl THEN          AppliedVendLedgEntryTemp.SETRANGE(Positive,CurrentAmount < 0);        IF AppliedVendLedgEntryTemp.FINDFIRST THEN BEGIN          AppliedVendLedgEntryTemp.CALCFIELDS("Remaining Amount");          IF Type = Type::Direct THEN            CalculateCurrency := ApplyingVendLedgEntry."Entry No." <> 0          ELSE            CalculateCurrency := TRUE;          IF (CurrencyCode <> AppliedVendLedgEntryTemp."Currency Code") AND CalculateCurrency THEN BEGIN            AppliedVendLedgEntryTemp."Remaining Amount" :=              GenJnlPostLine.ExchAmount(                AppliedVendLedgEntryTemp."Remaining Amount",                AppliedVendLedgEntryTemp."Currency Code",                CurrencyCode,"Posting Date");            AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible" :=              GenJnlPostLine.ExchAmount(                AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible",                AppliedVendLedgEntryTemp."Currency Code",                CurrencyCode,"Posting Date");            AppliedVendLedgEntryTemp."Amount to Apply" :=              GenJnlPostLine.ExchAmount(                AppliedVendLedgEntryTemp."Amount to Apply",                AppliedVendLedgEntryTemp."Currency Code",                CurrencyCode,"Posting Date");          END;          CASE Type OF            Type::Direct:...

    Αντικατάσταση κώδικα 1

    ...IF NOT FromZeroGenJnl THEN          AppliedVendLedgEntryTemp.SETRANGE(Positive,CurrentAmount < 0);        IF AppliedVendLedgEntryTemp.FINDFIRST THEN BEGIN          ExchangeAmountsOnLedgerEntry(Type,CurrencyCode,AppliedVendLedgEntryTemp);          CASE Type OF            Type::Direct:...

    Υπάρχοντα κώδικα 2

    ...END ELSE BEGIN          AppliedVendLedgEntryTemp.SETRANGE(Positive);          AppliedVendLedgEntryTemp.FINDFIRST;        END;        IF (OldPmtdisc <> PmtDiscAmount) THEN...

    Αντικατάσταση κώδικα 2

    ...END ELSE BEGIN          AppliedVendLedgEntryTemp.SETRANGE(Positive);          AppliedVendLedgEntryTemp.FINDFIRST;          ExchangeAmountsOnLedgerEntry(Type,CurrencyCode,AppliedVendLedgEntryTemp);        END;        IF (OldPmtdisc <> PmtDiscAmount) THEN...
  6. Αλλάξτε τον κωδικό στη συνάρτηση ExchangeAmountsOnLedgerEntry στη φόρμα συσχέτιση εγγραφών προμηθευτών (233) ως εξής:Υπάρχοντα κώδικα

    ...AppliesToID := AppliesToID2;    END;    BEGIN    END.  }...

    Αντικατάσταση κώδικα

    ...AppliesToID := AppliesToID2;    END;    PROCEDURE ExchangeAmountsOnLedgerEntry@14(Type@1000 : 'Direct,GenJnlLine,PurchHeader';CurrencyCode@1001 : Code[10];VAR AppliedVendLedgEntryTemp@1002 : Record 25);    VAR      CalculateCurrency@1003 : Boolean;    BEGIN      AppliedVendLedgEntryTemp.CALCFIELDS("Remaining Amount");      IF Type = Type::Direct THEN        CalculateCurrency := ApplyingVendLedgEntry."Entry No." <> 0      ELSE        CalculateCurrency := TRUE;      IF (CurrencyCode <> AppliedVendLedgEntryTemp."Currency Code") AND CalculateCurrency THEN BEGIN        AppliedVendLedgEntryTemp."Remaining Amount" :=          GenJnlPostLine.ExchAmount(            AppliedVendLedgEntryTemp."Remaining Amount",            AppliedVendLedgEntryTemp."Currency Code",            CurrencyCode,"Posting Date");        AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible" :=          GenJnlPostLine.ExchAmount(            AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible",            AppliedVendLedgEntryTemp."Currency Code",            CurrencyCode,"Posting Date");        AppliedVendLedgEntryTemp."Amount to Apply" :=          GenJnlPostLine.ExchAmount(            AppliedVendLedgEntryTemp."Amount to Apply",            AppliedVendLedgEntryTemp."Currency Code",            CurrencyCode,"Posting Date");      END;    END;    BEGIN    END.  }...

Προϋποθέσεις

Πρέπει να έχετε ένα από τα ακόλουθα προϊόντα, για να εφαρμόσετε αυτήν την επείγουσα επιδιόρθωση:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 SP1

Πληροφορίες κατάργησης

Δεν μπορείτε να καταργήσετε αυτήν την επείγουσα επιδιόρθωση.

Κατάσταση

Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα ζήτημα των προϊόντων της Microsoft που παρατίθενται στην ενότητα "Ισχύει για".

Σημείωση Αυτό είναι ένα άρθρο "ΤΑΧΕΙΑΣ ΔΗΜΟΣΙΕΥΣΗΣ" που έχει δημιουργηθεί απευθείας από την εταιρεία υποστήριξης της Microsoft. Οι πληροφορίες που περιέχονται στο παρόν έγγραφο παρέχονται ως έχουν, ως απάντηση σε ζητήματα που προέκυψαν. Ως αποτέλεσμα της ταχύτητας διαθεσιμότητάς του, το υλικό ενδέχεται να περιλαμβάνει τυπογραφικά λάθη και μπορεί να αναθεωρηθεί οποιαδήποτε στιγμή, χωρίς προειδοποίηση. Για άλλα θέματα, ανατρέξτε στην ενότητα " Όροι χρήσης".

Χρειάζεστε περισσότερη βοήθεια;

Θέλετε περισσότερες επιλογές;

Εξερευνήστε τα πλεονεκτήματα της συνδρομής, περιηγηθείτε σε εκπαιδευτικά σεμινάρια, μάθετε πώς μπορείτε να προστατεύσετε τη συσκευή σας και πολλά άλλα.