"Відвантаження продажів [Shipment_No], рядок no. [Line_No] не копіюється, оскільки повна кількість у рядку опублікованого документа вже застосовується вручну" повідомлення про помилку під час запуску функції копіювання документа на частковий продаж повернення в Microsoft Dynamics NAV

Застосовується до
Dynamics NAV 2009

Ця стаття стосується Microsoft Dynamics NAV для всіх країн і всіх мов.

Ознаки

Припустімо, що параметр точний вартість розвороту в продажу & дебіторська обробка настроювання діалогове вікно Microsoft Dynamics NAV. У цій ситуації під вільний час запуску копіювання документа функції частковий продажів повернення, з'являється таке повідомлення про помилку:

Примітка.

Відвантаження продажів Shipment_No, рядок no. Line_No не копіюється, оскільки повну кількість у рядку опублікованого документа вже застосовано вручну.

Ця проблема виникає в таких продуктах:

  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 із пакетом оновлень 1

Спосіб усунення проблеми

Відомості про виправлення

Від корпорації Майкрософт доступне виправлення, що підтримується. Однак вона призначена лише для виправлення проблеми, описаної в цій статті. Застосуйте її лише до систем, у яких виникла ця проблема. Це виправлення може отримати додаткове тестування. Таким чином, якщо ви не серйозно постраждали від цієї проблеми, ми радимо дочекатися наступного Microsoft Dynamics NAV 2009 пакет оновлень або наступної версії Microsoft Dynamics NAV, яка містить це виправлення.

Примітка У особливих випадках стягнення плати, які зазвичай понесені для викликів підтримки, може бути скасовано, якщо спеціаліст служби технічної підтримки Microsoft Dynamics і пов'язані продукти визначать, що конкретне оновлення вирішить вашу проблему. Звичайні витрати на підтримку застосовуватимуться до додаткових запитань і питань підтримки, які не відповідають вимогам для конкретного оновлення, про яке йде мова.

          

Відомості про інсталяцію

Корпорація Майкрософт надає приклади програмування лише для ілюстрації без жодних гарантій, явних або неявних. Це стосується зокрема неявних гарантій щодо придатності до продажу чи придатності для певної мети. У цій статті припускається, що ви знайомі з мовою програмування, яка демонструється, і з інструментами, які використовуються для створення і налагодження процедур. Спеціалісти служби підтримки Microsoft можуть пояснити вам функціональні можливості певної процедури. Однак вони не змінюватимуть ці приклади, щоб надавати додаткові функції або конструювати процедури відповідно до ваших конкретних вимог.

Примітка. Перш ніж інсталювати це виправлення, переконайтеся, що всі користувачі клієнта Microsoft Navision, вийти із системи. Це стосується користувачів клієнтських служб Microsoft Navision (NAS). Ви повинні бути єдиним клієнтом користувача, який ввійшов, коли ви впроваджуєте це виправлення.

Щоб реалізувати це виправлення, потрібно мати ліцензію розробника.

Радимо призначити обліковому запису користувача у вікні "Вхід у Windows" або у вікні "Вхід до бази даних" ідентифікатор ролі "SUPER". Якщо обліковому запису користувача не вдалося призначити ідентифікатор ролі SUPER, переконайтеся, що обліковий запис має такі дозволи:

  • Дозвіл на змінення об'єкта, який буде змінюватися.
  • Дозвіл Execute для об'єкта System Object ID 5210 і для об'єкта System Object ID 9015.

                
Примітка. Ви не повинні мати права на зберігання даних, якщо не потрібно відновлювати дані.

Зміни коду

Примітка. Завжди перевіряйте виправлення коду в контрольованому середовищі, перш ніж застосовувати виправлення до робочих комп'ютерів.
Щоб вирішити цю проблему, виконайте такі дії:

  1. Видаліть такі глобальні змінні в copy Document Mgt. codeunit (6620):

    Text030@1025 : TextConst 'ENU=%1 %2, line no. %3 is not copied because the full quantity on the posted document line is already manually applied.';
    Text031@1038 : TextConst 'ENU=Return document line contains only the original document line quantity, that is not already manually applied.';
    SomeAreFixed@1045 : Boolean;
    CopyDimensions@1050 : Boolean;
    
    
  2. Додайте такі глобальні змінні в copy Document Mgt. codeunit (6620):

    Text030@1025 : TextConst 'ENU=One or more return document lines were not copied. This is because quantities on the posted document line are already fully or partially applied and therefore the Exact Cost Reversing Link could not be created.';
    Text031@1038 : TextConst 'ENU=Return document line contains only the original document line quantity, that is not already manually applied.';
     SomeAreFixed@1045 : Boolean;
    CopyDimensions@1050 : Boolean;
    WarningDone@1051 : Boolean;
    LinesApplied@1052 : Boolean;
    
    
  3. Змініть код у функції SplitPstdSalesLinesPerILE у вікні Copy Document Mgt. codeunit (6620), як це зробити:
    Наявний код 1

    ...
                IF "Shipped Qty. Not Returned" = 0 THEN
    
    // Delete the following lines.
                 ERROR(Text030,"Document Type","Document No.","Document Line No.");
               FromSalesLineBuf := FromSalesLine; 
               IF -"Shipped Qty. Not Returned" < ABS(FromSalesLine."Quantity (Base)") THEN BEGIN
                 IF FromSalesLine."Quantity (Base)" > 0 THEN
                   FromSalesLineBuf."Quantity (Base)" := -"Shipped Qty. Not Returned"
                 ELSE
                   FromSalesLineBuf."Quantity (Base)" := "Shipped Qty. Not Returned";
                 IF FromSalesLineBuf."Qty. per Unit of Measure" = 0 THEN
                   FromSalesLineBuf.Quantity := FromSalesLineBuf."Quantity (Base)"
                 ELSE
                   FromSalesLineBuf.Quantity :=
                     ROUND(FromSalesLineBuf."Quantity (Base)" / FromSalesLineBuf."Qty. per Unit of Measure",0.00001);
               END;
               FromSalesLine."Quantity (Base)" := FromSalesLine."Quantity (Base)" - FromSalesLineBuf."Quantity (Base)";
               FromSalesLine.Quantity := FromSalesLine.Quantity - FromSalesLineBuf.Quantity;
               FromSalesLineBuf."Appl.-from Item Entry" := "Entry No.";
               FromSalesLineBuf."Line No." := NextLineNo;
               NextLineNo := NextLineNo + 1;
               FromSalesLineBuf."Document No." := "Document No.";
               IF GetSalesDocType(ItemLedgEntry) IN
                  [FromSalesLineBuf."Document Type"::Order,FromSalesLineBuf."Document Type"::"Return Order"]
               THEN
                 FromSalesLineBuf."Shipment Line No." := 1;
    
               IF NOT FromShptOrRcpt THEN
                 UpdateRevSalesLineAmount(
                   FromSalesLineBuf,OrgQtyBase,
                   FromSalesHeader."Prices Including VAT",ToSalesHeader."Prices Including VAT");
    
               FromSalesLineBuf.INSERT;
    // End of the lines.
    
              UNTIL (NEXT = 0) OR (FromSalesLine."Quantity (Base)" = 0);
    ...
    
    

    Код заміни 1

    ...
                IF "Shipped Qty. Not Returned" = 0 THEN
    
    // Add the following lines.
                 LinesApplied := TRUE;
               IF "Shipped Qty. Not Returned" < 0 THEN BEGIN
                 FromSalesLineBuf := FromSalesLine;
    
                 IF -"Shipped Qty. Not Returned" < ABS(FromSalesLine."Quantity (Base)") THEN BEGIN
                   IF FromSalesLine."Quantity (Base)" > 0 THEN
                     FromSalesLineBuf."Quantity (Base)" := -"Shipped Qty. Not Returned"
                   ELSE
                     FromSalesLineBuf."Quantity (Base)" := "Shipped Qty. Not Returned";
                   IF FromSalesLineBuf."Qty. per Unit of Measure" = 0 THEN
                     FromSalesLineBuf.Quantity := FromSalesLineBuf."Quantity (Base)"
                   ELSE
                     FromSalesLineBuf.Quantity :=
                       ROUND(FromSalesLineBuf."Quantity (Base)" / FromSalesLineBuf."Qty. per Unit of Measure",0.00001);
                 END;
                 FromSalesLine."Quantity (Base)" := FromSalesLine."Quantity (Base)" - FromSalesLineBuf."Quantity (Base)";
                 FromSalesLine.Quantity := FromSalesLine.Quantity - FromSalesLineBuf.Quantity;
                 FromSalesLineBuf."Appl.-from Item Entry" := "Entry No.";
                 FromSalesLineBuf."Line No." := NextLineNo;
                 NextLineNo := NextLineNo + 1;
                 FromSalesLineBuf."Document No." := "Document No.";
                 IF GetSalesDocType(ItemLedgEntry) IN
                    [FromSalesLineBuf."Document Type"::Order,FromSalesLineBuf."Document Type"::"Return Order"]
                 THEN
                   FromSalesLineBuf."Shipment Line No." := 1;
    
                 IF NOT FromShptOrRcpt THEN
                   UpdateRevSalesLineAmount(
                     FromSalesLineBuf,OrgQtyBase,
                     FromSalesHeader."Prices Including VAT",ToSalesHeader."Prices Including VAT");
    
                 FromSalesLineBuf.INSERT;
               END;
    // End of the lines.
    
              UNTIL (NEXT = 0) OR (FromSalesLine."Quantity (Base)" = 0);
    ...
    
    

    Наявний код 2

    ...
                MissingExCostRevLink := TRUE;
            END;
    ...
    
    

    Код заміни 2

    ...
                MissingExCostRevLink := TRUE;
    
    // Add the following line.
             CheckUnappliedLines(LinesApplied,MissingExCostRevLink);
    
            END;
    ...
    
    
  4. Змініть код у функції SplitPstdPurchLinesPerILE у вікні Copy Document Mgt. codeunit (6620), як це зробити:
    Наявний код 1

    ...
            ApplyRec@1011 : Record 339;
    
    // Delete the following line.
           AllAreFixed@1012 : Boolean;
    
          BEGIN
    ...
    
    

    Код заміни 1

    ...
            ApplyRec@1011 : Record 339;
          BEGIN
    ...
    
    

    Наявний код 2

    ...
              REPEAT
    
    // Delete the following lines.
               IF "Remaining Quantity" = 0 THEN BEGIN
                 AllAreFixed := TRUE;
                 ApplyRec.AppliedOutbndEntryExists("Entry No.",FALSE);
                 IF ApplyRec.FINDFIRST THEN
                   REPEAT
                     AllAreFixed := AllAreFixed AND ApplyRec.Fixed;
                   UNTIL ApplyRec.NEXT = 0;
                 IF AllAreFixed THEN
                   ERROR(Text030,"Document Type","Document No.","Document Line No.");
               END;
    // End of the lines.
    
                IF NOT ApplyFully THEN BEGIN
    ...
    
    

    Код заміни 2

    ...
              REPEAT
                IF NOT ApplyFully THEN BEGIN
    ...
    
    

    Наявний код 3

    ...
            END;
    ...
    
    

    Код заміни 3

    ...
            END;
    
    // Add the following line.
           CheckUnappliedLines(SkippedLine,MissingExCostRevLink);
    
    ...
    
    
  5. Змініть код у функції CheckUnappliedLines у діалоговому вікні Копіювання документа Mgt. codeunit (6620), як описано нижче.
    Наявний код

    ...
          BEGIN
    ...
    
    

    Код заміни

    ...
    
    // Add the following lines.
         LOCAL PROCEDURE CheckUnappliedLines@86(SkippedLine@1000 : Boolean;VAR MissingExCostRevLink@1001 : Boolean);
         BEGIN
           IF SkippedLine AND MissingExCostRevLink THEN BEGIN
             IF NOT WarningDone THEN
               MESSAGE(Text030);
             MissingExCostRevLink := FALSE;
             WarningDone := TRUE;
           END;
         END;
    
    // End of the lines.
    
          BEGIN
    ...
    
    

Попередні вимоги

Щоб застосувати це виправлення, потрібно мати один із таких продуктів:

  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 із пакетом оновлень 1

Відомості про видалення

Не можна видалити це виправлення.

Стан

Корпорація Microsoft підтвердила, що це одна з проблем з продуктами Microsoft, перелічених у розділі "Застосовується до".

Примітка. Це стаття "FAST PUBLISH", створена безпосередньо з організації підтримки Корпорації Майкрософт. Інформація, що міститься в цьому документі, надається як у відповідь на нові проблеми. В результаті швидкості її використання матеріали можуть включати друкарські помилки і можуть бути переглянуті в будь-який час без попередження. Інші зауваження див. в розділі Умови використання .