— Макс. Нивото на структурата на спецификация на 50 е твърде високо. Текущ артикул No [BOM_Number]. Край на заглавка на спецификация No. [BOM_Number]. Level [BOM_level]" при изпълнение на функцията "Изчисляване на код за ниско ниво" в Microsoft Dynamics NAV 2009

Отнася се за
Dynamics NAV 2009

Тази статия се отнася за Microsoft Dynamics NAV за всички страни и всички езикови променливи.

Симптоми

Разгледайте следния сценарий в Microsoft Dynamics NAV 2009:

  • Квадратчето за отметка Динамичен код за ниско ниво не е избрано в диалоговия прозорец за производствена настройка .
  • Създавате версия на производствената композиция за конкретен производствен BOM.
  • Задавате полето за състояние на "Затворено" за производствената версия на спецификацията.
  • Изпълнявате функцията Calculate Low-Level Code .

В този случай получавате следното съобщение за грешка:

Забележка

Макс. Нивото на структурата на спецификация на 50 е твърде високо. Текущ артикул No BOM_Number. Край на заглавка на спецификация No. BOM_Number. Ниво BOM_level.

Въпреки това системата трябва да изключи производствената спецификация на спецификация от изчисление на ниско ниво, ако сте задали състоянието й на версия на "Затворена".
Този проблем възниква в следните продукти:

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

      

Решение

Информация за горещи поправки

Поддържа гореща поправка вече се предлага от Microsoft. Целта му е обаче само да коригира проблема, който е описан в тази статия. Прилагайте го само към системи, които срещат този конкретен проблем. Тази гореща корекция може да бъде подложена на допълнително тестване. Ето защо, ако не сте сериозно засегнати от този проблем, ви препоръчваме да изчакате следващия сервизен пакет за Microsoft Dynamics NAV 2009 или следващата версия на Microsoft Dynamics NAV, която съдържа тази гореща корекция.

Забележка: При специални случаи таксите, които обикновено се начисляват за свързани с поддръжката разговори, могат да бъдат отменени, ако специалист по техническа поддръжка за Microsoft Dynamics и свързаните продукти реши, че проблемът може да бъде решен със специфична актуализация. Стандартните такси за поддръжката ще важат за допълнителни въпроси, свързани с нея, както и за проблеми, които не спадат към съответната актуализация.

          

Информация за инсталиране

Microsoft предоставя примери за програмиране само за илюстрация, без гаранция, нито изрична, или подразбираща се. Това включва, но не се ограничава до, подразбиращите се гаранции за продаваемост или годност за определена цел. В тази статия се предполага, че сте запознати с езика за програмиране, който се демонстрира, и с инструментите, които се използват за създаване и за процедури за отстраняване на грешки. Инженерите по поддръжката на Microsoft могат да ви помогнат да обяснят функционалността на дадена процедура. Те обаче няма да променят тези примери, за да предоставят допълнителна функционалност или да конструират процедури, които да отговарят на вашите конкретни изисквания.

Забележка Преди да инсталирате тази гореща корекция, уверете се, че всички потребители на клиента на Microsoft Navision са излезли от системата. Това включва потребители на клиенти на Microsoft Navision Application Services (NAS). Когато внедрявате тази гореща корекция, трябва да сте единственият клиентски потребител е влязъл.

За да приложите тази гореща корекция, трябва да имате лиценз за разработчик.

Препоръчваме на потребителския акаунт в прозореца за влизане в Windows или в прозореца за влизане в база данни да бъде присвоен ИД на роля "SUPER". Ако на потребителския акаунт не може да бъде присвоен ИД на роля "SUPER", трябва да се уверите, че този потребителски акаунт има следните разрешения:

  • Разрешението за промяна за обекта, който ще променяте.
  • Разрешението за изпълнение за обекта 5210 на системен обект с ИД 5210 и за обекта 9015 на системен обект.

Забележка: Не е необходимо да имате права за хранилищата за данни, освен ако не трябва да извършите поправка на данни.

Промени в кода

Забележка: Винаги тествайте корекциите на кода в контролирана среда, преди да ги приложите към производствените си компютри.
За да отстраните този проблем, променете кода в кодовата единица за изчисляване на Low-Level (99000793). За да направите това, изпълнете следните стъпки:

  1. Променете кода във функцията CalcLevels. За да направите това, изпълнете следните стъпки:

    1. Добавете нова локална променлива и след това задайте променливата, както следва:

      • Име: ПроизводствоBOMVersion
      • DataType: Record 99000779
    2. Добавете нова локална променлива и след това задайте променливата, както следва:

      • Име: CalculateDeeperLevel
      • DataType: Boolean
    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. Добавете нова локална променлива и след това задайте променливата, както следва:

      • Име: ПроизводствоBOMVersion
      • DataType: Record 99000779
    2. Добавете нова локална променлива и след това задайте променливата, както следва:

      • Име: CalculateDeeperLevel
      • DataType: Boolean
    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. Информацията, съдържаща се тук, е предоставена както е в отговор на възникващи проблеми. В резултат на бързината на предоставянето им, материалите могат да включват печатни грешки и могат да бъдат коригирани по всяко време без предизвестие. Вижте условията на използване за други съображения.