Αυτό το άρθρο ισχύει για το Microsoft Dynamics NAV για όλες τις χώρες και για όλες τις τοπικές ρυθμίσεις γλώσσας.
Συμπτώματα
Όταν εκτελείτε τη λειτουργία Αντιγραφή καταχωρημένων γραμμών παραστατικού για αντιλογισμό για μια παραγγελία στη σελίδα Επιστροφή πώλησης στο 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 Αναγνωριστικό αντικειμένου συστήματος
το αντικείμενο.
Σημείωση Δεν πρέπει να έχετε δικαιώματα για τους χώρους αποθήκευσης δεδομένων, εκτός και αν έχετε να εκτελέσετε επιδιόρθωση δεδομένων.
Αλλαγές κώδικα
Σημείωση Πάντα δοκιμή κώδικα διορθώνει σε ελεγχόμενο περιβάλλον πριν να εφαρμόσετε τις ενημερώσεις κώδικα στους υπολογιστές παραγωγής.
Για να επιλύσετε αυτό το ζήτημα, ακολουθήστε τα εξής βήματα:
-
Για να αλλάξετε τον κωδικό στη συνάρτηση IsFirstDocLine στο πεδίο Αγορές-Λογ. Παραλαβή φόρμα γραμμές (5806) ως εξής:
Υπάρχοντα κώδικα...FILTERGROUP(2);
PurchRcptLine.COPYFILTERS(Rec);
FILTERGROUP(0);
PurchRcptLine.SETRANGE("Document No.","Document No.");
// Delete the following line.
PurchRcptLine.FIND('-');
// End of the deleted line.
TempPurchRcptLine := PurchRcptLine;
TempPurchRcptLine.INSERT;
END;
IF "Line No." = TempPurchRcptLine."Line No." THEN
...Αντικατάσταση κώδικα
...FILTERGROUP(2);
PurchRcptLine.COPYFILTERS(Rec);
FILTERGROUP(0);
PurchRcptLine.SETRANGE("Document No.","Document No.");
// Add the following lines.
IF NOT PurchRcptLine.FINDFIRST THEN
EXIT(FALSE);
// End of the added lines.
TempPurchRcptLine := PurchRcptLine;
TempPurchRcptLine.INSERT;
END;
IF "Line No." = TempPurchRcptLine."Line No." THEN
... -
Αλλάξτε τον κωδικό στη συνάρτηση IsFirstDocLine στη λήψη Αντιγρ.Παραστ.Καταχ.-Γραμ.Παραλ.Επιστρ δευτερεύουσα φόρμα (5853) ως εξής:
Υπάρχοντα κώδικα...TempReturnRcptLine.SETRANGE("Document No.","Document No.");
IF NOT TempReturnRcptLine.FINDFIRST THEN BEGIN
ReturnRcptLine.COPYFILTERS(Rec);
ReturnRcptLine.SETRANGE("Document No.","Document No.");
// Delete the following line.
ReturnRcptLine.FINDSET;
// End of the deleted line.
TempReturnRcptLine := ReturnRcptLine;
TempReturnRcptLine.INSERT;
END;
...Αντικατάσταση κώδικα
...TempReturnRcptLine.SETRANGE("Document No.","Document No.");
IF NOT TempReturnRcptLine.FINDFIRST THEN BEGIN
ReturnRcptLine.COPYFILTERS(Rec);
ReturnRcptLine.SETRANGE("Document No.","Document No.");
// Add the following lines.
IF NOT ReturnRcptLine.FINDSET THEN
EXIT(FALSE);
// End of the added lines.
TempReturnRcptLine := ReturnRcptLine;
TempReturnRcptLine.INSERT;
END;
... -
Αλλάξτε τον κωδικό στη συνάρτηση IsFirstDocLine στη λήψη Αντιγρ.Παραστ.Καταχ.-Υποφόρμα Γραμ.Πιστ.Τιμολ.Πωλ Γραμ.Παραλ.αγορών φόρμα (5854) ως εξής:
Υπάρχοντα κώδικα...TempSalesCrMemoLine.SETRANGE("Document No.","Document No.");
IF NOT TempSalesCrMemoLine.FINDFIRST THEN BEGIN
SalesCrMemoLine.COPYFILTERS(Rec);
SalesCrMemoLine.SETRANGE("Document No.","Document No.");
// Delete the following line.
SalesCrMemoLine.FIND('-');
// End of the deleted line.
TempSalesCrMemoLine := SalesCrMemoLine;
TempSalesCrMemoLine.INSERT;
END;
...Αντικατάσταση κώδικα
...TempSalesCrMemoLine.SETRANGE("Document No.","Document No.");
IF NOT TempSalesCrMemoLine.FINDFIRST THEN BEGIN
SalesCrMemoLine.COPYFILTERS(Rec);
SalesCrMemoLine.SETRANGE("Document No.","Document No.");
// Add the following lines.
IF NOT SalesCrMemoLine.FINDFIRST THEN
EXIT(FALSE);
// End of the added lines.
TempSalesCrMemoLine := SalesCrMemoLine;
TempSalesCrMemoLine.INSERT;
END;
... -
Αλλάξτε τον κωδικό στη συνάρτηση IsFirstDocLine στη λήψη Αντιγρ.Παραστ.Καταχ.-Γραμ.Αποστ.Επιστρ δευτερεύουσα φόρμα (5858) ως εξής:
Υπάρχοντα κώδικα...TempReturnShptLine.SETRANGE("Document No.","Document No.");
IF NOT TempReturnShptLine.FINDFIRST THEN BEGIN
ReturnShptLine.COPYFILTERS(Rec);
ReturnShptLine.SETRANGE("Document No.","Document No.");
// Delete the following line.
ReturnShptLine.FINDSET;
// End of the deleted line.
TempReturnShptLine := ReturnShptLine;
TempReturnShptLine.INSERT;
END;
...Αντικατάσταση κώδικα
...TempReturnShptLine.SETRANGE("Document No.","Document No.");
IF NOT TempReturnShptLine.FINDFIRST THEN BEGIN
ReturnShptLine.COPYFILTERS(Rec);
ReturnShptLine.SETRANGE("Document No.","Document No.");
// Add the following lines.
IF NOT ReturnShptLine.FINDSET THEN
EXIT(FALSE);
// End of the added lines.
TempReturnShptLine := ReturnShptLine;
TempReturnShptLine.INSERT;
END;
... -
Αλλάξτε τον κωδικό στη συνάρτηση IsFirstDocLine στη λήψη Αντιγρ.Παραστ.Καταχ.-Υποφόρμα Γραμ.Παραλ.αγορών φόρμα (5859) ως εξής:
Υπάρχοντα κώδικα...TempPurchCrMemoLine.SETRANGE("Document No.","Document No.");
IF NOT TempPurchCrMemoLine.FINDFIRST THEN BEGIN
PurchCrMemoLine.COPYFILTERS(Rec);
PurchCrMemoLine.SETRANGE("Document No.","Document No.");
// Delete the following line.
PurchCrMemoLine.FINDSET;
// End of the deleted line.
TempPurchCrMemoLine := PurchCrMemoLine;
TempPurchCrMemoLine.INSERT;
END;
...Αντικατάσταση κώδικα
...TempPurchCrMemoLine.SETRANGE("Document No.","Document No.");
IF NOT TempPurchCrMemoLine.FINDFIRST THEN BEGIN
PurchCrMemoLine.COPYFILTERS(Rec);
PurchCrMemoLine.SETRANGE("Document No.","Document No.");
// Add the following lines.
IF NOT PurchCrMemoLine.FINDSET THEN
EXIT(FALSE);
// End of the added lines.
TempPurchCrMemoLine := PurchCrMemoLine;
TempPurchCrMemoLine.INSERT;
END;
... -
Αλλάξτε τον κωδικό στη συνάρτηση IsFirstDocLine στη λήψη υπηρεσία αποστολής φόρμα γραμμές (5994) ως εξής:
Υπάρχοντα κώδικα...TempServiceShptLine.SETRANGE("Document No.","Document No.");
IF NOT TempServiceShptLine.FIND('-') THEN BEGIN
ServiceShptLine.COPYFILTERS(Rec);
ServiceShptLine.SETRANGE("Document No.","Document No.");
// Delete the following line.
ServiceShptLine.FIND('-');
// End of the deleted line.
TempServiceShptLine := ServiceShptLine;
TempServiceShptLine.INSERT;
END;
IF "Line No." = TempServiceShptLine."Line No." THEN
...Αντικατάσταση κώδικα
...TempServiceShptLine.SETRANGE("Document No.","Document No.");
IF NOT TempServiceShptLine.FIND('-') THEN BEGIN
ServiceShptLine.COPYFILTERS(Rec);
ServiceShptLine.SETRANGE("Document No.","Document No.");
// Add the following lines.
IF NOT ServiceShptLine.FINDFIRST THEN
EXIT(FALSE);
// End of the added lines.
TempServiceShptLine := ServiceShptLine;
TempServiceShptLine.INSERT;
END;
IF "Line No." = TempServiceShptLine."Line No." THEN
... -
Αλλάξτε τον κωδικό στη συνάρτηση IsFirstDocLine στη δευτερεύουσα φόρμα γραμμές τ / υ (6036) ως εξής:
Υπάρχοντα κώδικα...IF NOT TempServLine.FIND('-') THEN BEGIN
ServLine.COPYFILTERS(Rec);
ServLine.SETRANGE("Document Type","Document Type");
ServLine.SETRANGE("Document No.","Document No.");
// Delete the following line.
ServLine.FIND('-');
// End of the deleted line.
TempServLine := ServLine;
TempServLine.INSERT;
END;
IF "Line No." = TempServLine."Line No." THEN
...Αντικατάσταση κώδικα
...IF NOT TempServLine.FIND('-') THEN BEGIN
ServLine.COPYFILTERS(Rec);
ServLine.SETRANGE("Document Type","Document Type");
ServLine.SETRANGE("Document No.","Document No.");
// Add the following lines.
IF NOT ServLine.FINDFIRST THEN
EXIT(FALSE);
// End of the added lines.
TempServLine := ServLine;
TempServLine.INSERT;
END;
IF "Line No." = TempServLine."Line No." THEN
... -
Αλλάξτε τον κωδικό στη συνάρτηση IsFirstDocLine στη φόρμα δευτερεύουσα φόρμα γραμμές της υπηρεσίας αποστολής (6037) ως εξής:
Υπάρχοντα κώδικα...TempServShptLine.SETRANGE("Document No.","Document No.");
IF NOT TempServShptLine.FIND('-') THEN BEGIN
ServShptLine.COPYFILTERS(Rec);
ServShptLine.SETRANGE("Document No.","Document No.");
// Delete the following line.
ServShptLine.FIND('-');
// End of the deleted line.
TempServShptLine := ServShptLine;
TempServShptLine.INSERT;
END;
IF "Line No." = TempServShptLine."Line No." THEN
...Αντικατάσταση κώδικα
...TempServShptLine.SETRANGE("Document No.","Document No.");
IF NOT TempServShptLine.FIND('-') THEN BEGIN
ServShptLine.COPYFILTERS(Rec);
ServShptLine.SETRANGE("Document No.","Document No.");
// Add the following lines.
IF NOT ServShptLine.FINDFIRST THEN
EXIT(FALSE);
// End of the added lines.
TempServShptLine := ServShptLine;
TempServShptLine.INSERT;
END;
IF "Line No." = TempServShptLine."Line No." THEN
... -
Αλλάξτε τον κωδικό στη συνάρτηση IsFirstDocLine στη φόρμα δευτερεύουσα φόρμα γραμμές η υπηρεσία τιμολογίου (6038) ως εξής:
Υπάρχοντα κώδικα...TempServInvLine.SETRANGE("Document No.","Document No.");
IF NOT TempServInvLine.FIND('-') THEN BEGIN
ServInvLine.COPYFILTERS(Rec);
ServInvLine.SETRANGE("Document No.","Document No.");
// Delete the following line.
ServInvLine.FIND('-');
// End of the deleted line.
TempServInvLine := ServInvLine;
TempServInvLine.INSERT;
END;
EXIT("Line No." = TempServInvLine."Line No.");
...Αντικατάσταση κώδικα
...TempServInvLine.SETRANGE("Document No.","Document No.");
IF NOT TempServInvLine.FIND('-') THEN BEGIN
ServInvLine.COPYFILTERS(Rec);
ServInvLine.SETRANGE("Document No.","Document No.");
// Add the following lines.
IF NOT ServInvLine.FINDFIRST THEN
EXIT(FALSE);
// End of the added lines.
TempServInvLine := ServInvLine;
TempServInvLine.INSERT;
END;
EXIT("Line No." = TempServInvLine."Line No.");
... -
Αλλάξτε τον κωδικό στη συνάρτηση IsFirstDocLine στη υπηρεσία πιστωτικό τιμολόγιο δευτερεύουσας φόρμας φόρμα γραμμές (6039) ως εξής:
Υπάρχοντα κώδικα...TempServCrMemoLine.SETRANGE("Document No.","Document No.");
IF NOT TempServCrMemoLine.FIND('-') THEN BEGIN
ServCrMemoLine.COPYFILTERS(Rec);
ServCrMemoLine.SETRANGE("Document No.","Document No.");
// Delete the following line.
ServCrMemoLine.FIND('-');
// End of the deleted line.
TempServCrMemoLine := ServCrMemoLine;
TempServCrMemoLine.INSERT;
END;
EXIT("Line No." = TempServCrMemoLine."Line No.");
...Αντικατάσταση κώδικα
...TempServCrMemoLine.SETRANGE("Document No.","Document No.");
IF NOT TempServCrMemoLine.FIND('-') THEN BEGIN
ServCrMemoLine.COPYFILTERS(Rec);
ServCrMemoLine.SETRANGE("Document No.","Document No.");
// Add the following lines.
IF NOT ServCrMemoLine.FINDFIRST THEN
EXIT(FALSE);
// End of the added lines.
TempServCrMemoLine := ServCrMemoLine;
TempServCrMemoLine.INSERT;
END;
EXIT("Line No." = TempServCrMemoLine."Line No.");
... -
Αλλάξτε τον κωδικό στη συνάρτηση IsFirstDocLine στη λήψη επιστροφή παραλαβής φόρμα γραμμές (6638) ως εξής:
Υπάρχοντα κώδικα...TempReturnRcptLine.SETRANGE("Document No.","Document No.");
IF NOT TempReturnRcptLine.FIND('-') THEN BEGIN
ReturnRcptLine.COPYFILTERS(Rec);
ReturnRcptLine.SETRANGE("Document No.","Document No.");
// Delete the following line.
ReturnRcptLine.FIND('-');
// End of the deleted line.
TempReturnRcptLine := ReturnRcptLine;
TempReturnRcptLine.INSERT;
END;
IF "Line No." = TempReturnRcptLine."Line No." THEN
...Αντικατάσταση κώδικα
...TempReturnRcptLine.SETRANGE("Document No.","Document No.");
IF NOT TempReturnRcptLine.FIND('-') THEN BEGIN
ReturnRcptLine.COPYFILTERS(Rec);
ReturnRcptLine.SETRANGE("Document No.","Document No.");
// Add the following lines.
IF NOT ReturnRcptLine.FINDFIRST THEN
EXIT(FALSE);
// End of the added lines.
TempReturnRcptLine := ReturnRcptLine;
TempReturnRcptLine.INSERT;
END;
IF "Line No." = TempReturnRcptLine."Line No." THEN
... -
Αλλάξτε τον κωδικό στη συνάρτηση IsFirstDocLine στη λήψη επιστροφή αποστολής φόρμα γραμμές (6648) ως εξής:
Υπάρχοντα κώδικα...TempReturnShptLine.SETRANGE("Document No.","Document No.");
IF NOT TempReturnShptLine.FIND('-') THEN BEGIN
ReturnShptLine.COPYFILTERS(Rec);
ReturnShptLine.SETRANGE("Document No.","Document No.");
// Delete the following line.
ReturnShptLine.FIND('-');
// End of the deleted line.
TempReturnShptLine := ReturnShptLine;
TempReturnShptLine.INSERT;
END;
IF "Line No." = TempReturnShptLine."Line No." THEN
...Αντικατάσταση κώδικα
...TempReturnShptLine.SETRANGE("Document No.","Document No.");
IF NOT TempReturnShptLine.FIND('-') THEN BEGIN
ReturnShptLine.COPYFILTERS(Rec);
ReturnShptLine.SETRANGE("Document No.","Document No.");
// Add the following lines.
IF NOT ReturnShptLine.FINDFIRST THEN
EXIT(FALSE);
// End of the added lines.
TempReturnShptLine := ReturnShptLine;
TempReturnShptLine.INSERT;
END;
IF "Line No." = TempReturnShptLine."Line No." THEN
...
Προϋποθέσεις
Πρέπει να έχετε ένα από τα ακόλουθα προϊόντα, για να εφαρμόσετε αυτήν την επείγουσα επιδιόρθωση:
-
Microsoft Dynamics NAV 2009 R2
-
Microsoft Dynamics NAV 2009 SP1
Πληροφορίες κατάργησης
Δεν μπορείτε να καταργήσετε αυτήν την επείγουσα επιδιόρθωση.
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα ζήτημα των προϊόντων της Microsoft που παρατίθενται στην ενότητα "Ισχύει για".
Σημείωση Αυτό είναι ένα άρθρο "ΤΑΧΕΙΑΣ ΔΗΜΟΣΙΕΥΣΗΣ" που έχει δημιουργηθεί απευθείας από την εταιρεία υποστήριξης της Microsoft. Οι πληροφορίες που περιέχονται στο παρόν έγγραφο παρέχονται ως έχουν, ως απάντηση σε ζητήματα που προέκυψαν. Ως αποτέλεσμα της ταχύτητας διαθεσιμότητάς του, το υλικό ενδέχεται να περιλαμβάνει τυπογραφικά λάθη και μπορεί να αναθεωρηθεί οποιαδήποτε στιγμή, χωρίς προειδοποίηση. Για άλλα θέματα, ανατρέξτε στην ενότητα " Όροι χρήσης".