Можете неправилно да публикувате дневник за спецификация или поръчка за продажба, когато кодът на стойността на размерността на компонента на комплекта се различава от кода на родителския елемент на комплекта в Microsoft Dynamics NAV 2009 SP1

Отнася се за
Dynamics NAV 2009 Service Pack 1

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

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

Симптоми

Да приемем, че кодът на стойността на размерността на елемента на комплекта компонент се различава от кода на родителския елемент на комплекта в Microsoft Dynamics NAV 2009 SP1. Когато публикувате дневник за спецификация или поръчка за продажба, Microsoft Dynamics NAV 2009 SP1 неправилно ви позволява да публикувате дневника на спецификацията или поръчка за продажба без съобщение за грешка. Този проблем възниква, въпреки че кодът за публикуване на стойността на размерността е дефиниран като "един и същ код" както за компонента на комплекта, така и за родителския елемент на комплекта.

Очаквате грешка "Измерение, използвано в ред от дневника на елементите, по подразбиране, 10000, е причинило грешка. Избран код на стойност на измерение [Стойност на измерение code_Number] за кода на измерението [Dimension code_Number] за елемент [Item_Number]", което да се показва, когато публикувате дневника за спецификация или поръчката за продажба в тази ситуация.

Този проблем възниква в продуктите, които имат включена функционалност Комплект за следните страни:

  • Австралия
  • Австрия
  • Франция
  • Индонезия
  • Малайзия
  • Нова Зеландия
  • Северна Америка
  • Филипини
  • Сингапур
  • Тайланд

Решение

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

Поддържа гореща поправка вече се предлага от 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 на системен обект.

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

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

Забележка: Винаги тествайте корекциите на кода в контролирана среда, преди да ги приложите към производствените си компютри.
За да отстраните този проблем, променете кода във функцията Code в кодовата единица BOM Jnl.-Post Line (32), както следва:

Съществуващ код

...
          ELSE
            BuildTotalDisassemblyCost(BOMJnlLine,ItemJnlLine.Amount - "Total Cost");

          TransferDimToItemJnlLine(ItemJnlLine,TempJnlLineDim2,FALSE);

          ReserveBOMJnlLine.TransferBOMJnlToItemJnlLine(BOMJnlLine,ItemJnlLine,"Quantity (Base)");
...

Код за подмяна

...
          ELSE
            BuildTotalDisassemblyCost(BOMJnlLine,ItemJnlLine.Amount - "Total Cost");

// Add the following line.
          TransferDimToItemJnlLine(ItemJnlLine,TempJnlLineDim2);
// End of the added line.

          ReserveBOMJnlLine.TransferBOMJnlToItemJnlLine(BOMJnlLine,ItemJnlLine,"Quantity (Base)");
...

променете кода във функцията PostTempJnlLines в BOM Jnl.-Post Line codeunit(32), както следва:

Съществуващ код

...
             IF TempItemJnlLine.FIND('-') THEN
          REPEAT
            TempItemJnlLine2 := TempItemJnlLine;
            TransferDimToItemJnlLine(TempItemJnlLine,TempJnlLineDim2,TRUE);
            ItemJnlPostLine.RunWithCheck(TempItemJnlLine,TempJnlLineDim2);
            WITH TempItemJnlLine DO BEGIN
              Quantity := TempItemJnlLine2.Quantity;
...

Код за подмяна

...
            IF TempItemJnlLine.FIND('-') THEN
          REPEAT
            TempItemJnlLine2 := TempItemJnlLine;

// Add the following line.
            TransferDimToItemJnlLine(TempItemJnlLine,TempJnlLineDim2);
// End of the added line.

            ItemJnlPostLine.RunWithCheck(TempItemJnlLine,TempJnlLineDim2);
            WITH TempItemJnlLine DO BEGIN
              Quantity := TempItemJnlLine2.Quantity;  
...

                
Променете кода във функцията TransferDimToItemJnlLine в кодовата единица на BOM Jnl.-Post Line (32), както следва:

Съществуващ код

...
            TempJnlLineDim2."Journal Line No." := ItemJnlLine2."Line No.";
            TempJnlLineDim2."Allocation Line No." := 0;
            TempJnlLineDim2."Dimension Code" := TempJnlLineDim."Dimension Code";
            IF Consumption THEN
              IF DefDim.GET(DATABASE::Item,ItemJnlLine2."Item No.",TempJnlLineDim."Dimension Code") THEN BEGIN
                TempJnlLineDim2."Dimension Value Code" := DefDim."Dimension Value Code";
                CASE DefDim."Dimension Code" OF
                  GLSetup."Global Dimension 1 Code":
                    ItemJnlLine2."Shortcut Dimension 1 Code" := DefDim."Dimension Value Code";
                  GLSetup."Global Dimension 2 Code":
                    ItemJnlLine2."Shortcut Dimension 2 Code" := DefDim."Dimension Value Code";
                END;
              END ELSE
                TempJnlLineDim2."Dimension Value Code" := TempJnlLineDim."Dimension Value Code"
            ELSE
              TempJnlLineDim2."Dimension Value Code" := TempJnlLineDim."Dimension Value Code";
            TempJnlLineDim2.INSERT;
          UNTIL TempJnlLineDim.NEXT = 0;
        END;
...

Код за подмяна

...
            TempJnlLineDim2."Journal Line No." := ItemJnlLine2."Line No.";
            TempJnlLineDim2."Allocation Line No." := 0;
            TempJnlLineDim2."Dimension Code" := TempJnlLineDim."Dimension Code";

// Add the following line.
            TempJnlLineDim2."Dimension Value Code" := TempJnlLineDim."Dimension Value Code";
// End of the added line.
            TempJnlLineDim2.INSERT;
          UNTIL TempJnlLineDim.NEXT = 0;
        END;    
...

променете кода във функцията PostResourceCost в кодовата единица на BOM Jnl.-Post Line (32), както следва:

Съществуващ код

...          
           ItemJnlLine.Kitting := TRUE;
          TotalCost := "Total Cost";
          UnitCost := "Unit Cost";
          TransferDimToItemJnlLine(ItemJnlLine,TempJnlLineDim2,TRUE);
         IF OutputItemLedgEntryNo <> 0 THEN BEGIN
         ItemJnlLine."Item Shpt. Entry No." := OutputItemLedgEntryNo;
...

Код за подмяна

...
          ItemJnlLine.Kitting := TRUE;
          TotalCost := "Total Cost";
          UnitCost := "Unit Cost";

// Add the following line.
          TransferDimToItemJnlLine(ItemJnlLine,TempJnlLineDim2);
// End of the added line.

         IF OutputItemLedgEntryNo <> 0 THEN BEGIN
         ItemJnlLine."Item Shpt. Entry No." := OutputItemLedgEntryNo;
...

Предварителни изисквания

Трябва да имате инсталирана Microsoft Dynamics NAV 2009 SP1, за да приложите тази гореща корекция.

Информация за премахване

Не можете да премахнете тази гореща корекция.

Състояние

Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.

MICROSOFT И/ИЛИ НЕГОВИТЕ ДОСТАВЧИЦИ НЕ ДАВАТ ОБЕЩАНИЯ ИЛИ ГАРАНЦИИ ОТНОСНО ПРИГОДНОСТТА, НАДЕЖДНОСТТА ИЛИ ТОЧНОСТТА НА ИНФОРМАЦИЯТА, КОЯТО СЕ СЪДЪРЖА В ДОКУМЕНТИТЕ И СВЪРЗАНИТЕ ГРАФИКИ, ПУБЛИКУВАНИ НА ТОЗИ УЕБ САЙТ ("МАТЕРИАЛИТЕ"), ЗА КАКВАТО И ДА Е ЦЕЛ.

МАТЕРИАЛИТЕ МОГАТ ДА ВКЛЮЧВАТ ТЕХНИЧЕСКИ НЕТОЧНОСТИ ИЛИ ПЕЧАТНИ ГРЕШКИ И МОГАТ ДА БЪДАТ КОРИГИРАНИ ПО ВСЯКО ВРЕМЕ БЕЗ ПРЕДИЗВЕСТИЕ. ДО МАКСИМАЛНАТА СТЕПЕН, РАЗРЕШЕНА ОТ ПРИЛОЖИМОТО ЗАКОНОДАТЕЛСТВО, MICROSOFT И/ИЛИ НЕЙНИТЕ ДОСТАВЧИЦИ ОТХВЪРЛЯТ И ИЗКЛЮЧВАТ ВСИЧКИ ДЕКЛАРАЦИИ, ГАРАНЦИИ И УСЛОВИЯ, НЕЗАВИСИМО ДАЛИ СА ИЗРИЧНИ, ПОДРАЗБИРАЩИ СЕ, ИЛИ ЗАКОНОВИ, ВКЛЮЧИТЕЛНО, НО НЕ САМО, ДЕКЛАРАЦИИ, ГАРАНЦИИ ИЛИ УСЛОВИЯ ЗА СОБСТВЕНОСТ, НЕНАРУШЕНИЕ, ЗАДОВОЛИТЕЛНО СЪСТОЯНИЕ ИЛИ КАЧЕСТВО, ПРОДАВАЕМОСТ И ПРИГОДНОСТ ЗА ОПРЕДЕЛЕНА ЦЕЛ, ПО ОТНОШЕНИЕ НА МАТЕРИАЛИТЕ.