"Μέγ. Το επίπεδο δομής BOM στο 50 είναι πολύ υψηλό. Τρέχον στοιχείο αριθ. [BOM_Number]. Τέλος BOM Header No. [BOM_Number]. Επίπεδο [BOM_level]" μήνυμα λάθους όταν εκτελείτε τη συνάρτηση υπολογισμού κώδικα χαμηλού επιπέδου στο Microsoft Dynamics NAV 2009

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

Αυτό το άρθρο ισχύει για το Microsoft Dynamics NAV για όλες τις χώρες και όλες τις τοπικές ρυθμίσεις γλώσσας.

Συμπτώματα

Εξετάστε το ακόλουθο σενάριο στο Microsoft Dynamics NAV 2009:

  • Το πλαίσιο ελέγχου Dynamic Low Level Code (Κωδικός δυναμικού χαμηλού επιπέδου ) δεν είναι επιλεγμένο στο παράθυρο διαλόγου Manufacturing Setup (Ρύθμιση κατασκευής ).
  • Μπορείτε να δημιουργήσετε μια έκδοση λογαριασμού παραγωγής υλικού (BOM) για ένα συγκεκριμένο BOM παραγωγής.
  • Μπορείτε να ορίσετε το πλαίσιο κατάστασης σε κλειστό για την έκδοση BOM παραγωγής.
  • Μπορείτε να εκτελέσετε τη συνάρτηση Υπολογισμός Low-Level κώδικα .

Σε αυτό το σενάριο, λαμβάνετε το ακόλουθο μήνυμα λάθους:

Σημείωση

Μέγ. Το επίπεδο δομής BOM στο 50 είναι πολύ υψηλό. Τρέχον στοιχείο αριθ. BOM_Number. Τέλος BOM Header No. BOM_Number. Επίπεδο BOM_level.

Ωστόσο, το σύστημα θα πρέπει να εξαιρεί το BOM παραγωγής από έναν υπολογισμό χαμηλού επιπέδου, εάν ορίσετε την κατάσταση της έκδοσής του σε "Κλειστό".
Αυτό το ζήτημα παρουσιάζεται στα ακόλουθα προϊόντα:

  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
  • Microsoft Dynamics NAV 2009

      

Επίλυση

Πληροφορίες επείγουσας επιδιόρθωσης

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

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

          

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

Η Microsoft παρέχει παραδείγματα προγραμματισμού μόνο για απεικόνιση, χωρίς καμία εγγύηση, ρητή ή σιωπηρή. Αυτό περιλαμβάνει, ενδεικτικά, τις σιωπηρές εγγυήσεις εμπορευσιμότητας ή καταλληλότητας για συγκεκριμένο σκοπό. Αυτό το άρθρο προϋποθέτει ότι είστε εξοικειωμένοι με τη γλώσσα προγραμματισμού που επιδεικνύεται και με τα εργαλεία που χρησιμοποιούνται για τη δημιουργία και τον εντοπισμό σφαλμάτων διαδικασιών. Οι μηχανικοί υποστήριξης της Microsoft μπορούν να σας βοηθήσουν να εξηγήσετε τη λειτουργικότητα μιας συγκεκριμένης διαδικασίας. Ωστόσο, δεν θα τροποποιήσουν αυτά τα παραδείγματα για να παρέχουν πρόσθετες λειτουργίες ούτε θα δημιουργήσουν διαδικασίες για να ικανοποιήσουν τις συγκεκριμένες απαιτήσεις σας.

Σημείωση Πριν να εγκαταστήσετε αυτήν την επείγουσα επιδιόρθωση, βεβαιωθείτε ότι όλοι οι χρήστες προγράμματος-πελάτη Microsoft Navision έχουν αποσυνδεθεί από το σύστημα. Αυτό περιλαμβάνει χρήστες προγράμματος-πελάτη Microsoft Navision Application Services (NAS). Θα πρέπει να είστε ο μόνος χρήστης-πελάτης που είναι συνδεδεμένος όταν υλοποιείτε αυτήν την επείγουσα επιδιόρθωση.

Για να υλοποιήσετε αυτήν την επείγουσα επιδιόρθωση, πρέπει να έχετε άδεια προγραμματιστή.

Συνιστούμε ο λογαριασμός χρήστη στο παράθυρο Συνδέσεις των Windows ή στο παράθυρο Συνδέσεις βάσης δεδομένων να έχει το αναγνωριστικό ρόλου "SUPER". Εάν δεν είναι δυνατή η εκχώρηση του αναγνωριστικού ρόλου "SUPER" στο λογαριασμό χρήστη, πρέπει να επαληθεύσετε ότι ο λογαριασμός χρήστη έχει τα ακόλουθα δικαιώματα:

  • Το δικαίωμα τροποποίησης για το αντικείμενο που θα αλλάξετε.
  • Το δικαίωμα εκτέλεσης για το αντικείμενο αναγνωριστικού αντικειμένου συστήματος 5210 και για το αντικείμενο αναγνωριστικού αντικειμένου συστήματος 9015.

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

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

Σημείωση Ελέγχετε πάντα τις επιδιορθώσεις κώδικα σε ελεγχόμενο περιβάλλον, πριν να εφαρμόσετε τις ενημερώσεις κώδικα στους υπολογιστές παραγωγής σας.
Για να επιλύσετε αυτό το ζήτημα, αλλάξτε τον κωδικό στη μονάδα κώδικα Υπολογισμός Low-Level (99000793). Για να το κάνετε αυτό, ακολουθήστε τα παρακάτω βήματα:

  1. Αλλάξτε τον κώδικα στη συνάρτηση CalcLevels. Για να το κάνετε αυτό, ακολουθήστε τα παρακάτω βήματα:

    1. Προσθέστε μια νέα τοπική μεταβλητή και, στη συνέχεια, καθορίστε τη μεταβλητή ως εξής:

      • Όνομα: ProductionBOMVersion
      • Τύπος δεδομένων: Εγγραφή 99000779
    2. Προσθέστε μια νέα τοπική μεταβλητή και, στη συνέχεια, καθορίστε τη μεταβλητή ως εξής:

      • Όνομα: CalculateDeeperLevel
      • Τύπος δεδομένων: Δυαδική τιμή
    3. Αλλάξτε τον κωδικό ως εξής:
      Υπάρχων κώδικας

      ...
      50,Item."No.",BomHeaderNo,Level);
      
      
      // Delete the following line.
      IF ProdBOMHeader.Status = ProdBOMHeader.Status::Certified THEN BEGIN
      
      ProdBOMHeader."Low-Level Code" :=
      ...
      

      Κωδικός αντικατάστασης

      ...
      50,Item."No.",BomHeaderNo,Level);
      
      // Add the following lines.
      IF ProdBomComponent."Version Code" <> '' THEN BEGIN 
      ProductionBOMVersion.GET(ProdBomComponent."Production BOM No.",ProdBomComponent."Version Code"); 
      CalculateDeeperLevel := ProductionBOMVersion.Status = ProductionBOMVersion.Status::Certified; 
      END ELSE 
      CalculateDeeperLevel := ProdBOMHeader.Status = ProdBOMHeader.Status::Certified;
      
      IF CalculateDeeperLevel THEN BEGIN 
      // End of the added lines.
      
      ProdBOMHeader."Low-Level Code" :=
      ...
      
  2. Αλλάξτε τον κώδικα στη συνάρτηση RecalcLowerLevels. Για να το κάνετε αυτό, ακολουθήστε τα παρακάτω βήματα:

    1. Προσθέστε μια νέα τοπική μεταβλητή και, στη συνέχεια, καθορίστε τη μεταβλητή ως εξής:

      • Όνομα: ProductionBOMVersion
      • Τύπος δεδομένων: Εγγραφή 99000779
    2. Προσθέστε μια νέα τοπική μεταβλητή και, στη συνέχεια, καθορίστε τη μεταβλητή ως εξής:

      • Όνομα: CalculateDeeperLevel
      • Τύπος δεδομένων: Δυαδική τιμή
    3. Αλλάξτε τον κωδικό ως εξής:
      Υπάρχων κώδικας

      ...
      REPEAT
      // add 2 spaces for alignment to next lines
      CASE ProdBOMLine.Type OF
      ProdBOMLine.Type::Item:
      BEGIN
      EntityPresent := CompItem.GET(ProdBOMLine."No.");
      IF EntityPresent OR (NOT IgnoreMissingItemsOrBOMs) THEN
      SetRecursiveLevelsOnItem(CompItem,LowLevelCode,IgnoreMissingItemsOrBOMs);
      END;
      ProdBOMLine.Type::"Production BOM":
      BEGIN
      EntityPresent := CompBOM.GET(ProdBOMLine."No.");
      IF EntityPresent OR (NOT IgnoreMissingItemsOrBOMs) THEN
      SetRecursiveLevelsOnBOM(CompBOM,LowLevelCode,IgnoreMissingItemsOrBOMs);
      END
      END;
      // end of adding 2 spaces
      UNTIL ProdBOMLine.NEXT = 0;
      ...
      

      Κωδικός αντικατάστασης

      ...
      REPEAT
      
      // Add the following lines.
      IF ProdBOMLine."Version Code" <> '' THEN BEGIN 
      ProductionBOMVersion.GET(ProdBOMLine."Production BOM No.",ProdBOMLine."Version Code"); 
      CalculateDeeperLevel := ProductionBOMVersion.Status <> ProductionBOMVersion.Status::Closed; 
      END ELSE BEGIN 
      CompBOM.GET(ProdBOMLine."Production BOM No."); 
      CalculateDeeperLevel := CompBOM.Status <> CompBOM.Status::Closed; 
      END; 
      
      // closed BOMs are skipped
      IF CalculateDeeperLevel THEN 
      // End of the added lines.
      
      CASE ProdBOMLine.Type OF
      ProdBOMLine.Type::Item:
      BEGIN
      EntityPresent := CompItem.GET(ProdBOMLine."No.");
      IF EntityPresent OR (NOT IgnoreMissingItemsOrBOMs) THEN
      SetRecursiveLevelsOnItem(CompItem,LowLevelCode,IgnoreMissingItemsOrBOMs);
      END;
      ProdBOMLine.Type::"Production BOM":
      BEGIN
      EntityPresent := CompBOM.GET(ProdBOMLine."No.");
      IF EntityPresent OR (NOT IgnoreMissingItemsOrBOMs) THEN
      SetRecursiveLevelsOnBOM(CompBOM,LowLevelCode,IgnoreMissingItemsOrBOMs);
      END
      END;
      UNTIL ProdBOMLine.NEXT = 0;
      ...
      

Προαπαιτούμενα

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

  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 Service Pack 1
  • Microsoft Dynamics NAV 2009

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

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

Κατάσταση

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

Σημείωση Αυτό είναι ένα άρθρο "FAST PUBLISH" που δημιουργήθηκε απευθείας μέσα από τον οργανισμό υποστήριξης της Microsoft. Οι πληροφορίες που περιέχονται στο παρόν παρέχονται ως έχουν ως απάντηση σε αναδυόμενα ζητήματα. Ως αποτέλεσμα της ταχύτητας διάθεσής του, το υλικό μπορεί να περιλαμβάνει τυπογραφικά λάθη και μπορεί να αναθεωρηθεί ανά πάσα στιγμή χωρίς προειδοποίηση. Ανατρέξτε στους Όρους χρήσης για άλλα ζητήματα.