Сховище записів не оновлюються всі елемент, стеження рядків у журналі завдання, при спробі надіслати елемент в журналі завдання до кошика, у Microsoft Dynamics NAV, 2009

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

Ця стаття відноситься до Microsoft Dynamics NAV всі країни і всі мови.

Причини


Припустімо, що у вас є завдання журнал, який має кілька елементів відстеження рядків для елемента в Microsoft Dynamics NAV, 2009. При спробі надіслати дані елемента в журналі роботу з Бен, сховище записів оновлюються лише з останнім відстеження рядок, який було введено. Таким чином, існує дисбаланс між склад і елемент-книга елемента.
Ця проблема виникає в таких продуктів:
  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 пакет оновлень 1 (SP1)

Вирішення


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

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

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


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

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

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

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

Корпорація Майкрософт рекомендує, що обліковий запис користувача Windows, вхід вікна або у вікні бази даних вхід призначити "Супер" роль ID. Якщо обліковий запис користувача не призначено роль ID "Супер", необхідно переконатися, що обліковий запис користувача, має такі дозволи:
  • Змінити дозвіл об'єкт, який буде змінити.
  • Права для виконання системи об'єкт з Ідентифікатором 5210 об'єкт а також системи об'єкт з Ідентифікатором 9015 об'єкта.


Примітка. Маєте відповідних прав у сховища даних, якщо не потрібно виконати дані відновлення не потрібно.

Зміни коду

Примітка. Завжди тест код вирішення в середовищі контрольовані перед інсталяцією розглянутого виправлення виробництва комп'ютерів.
Щоб вирішити цю проблему, виконайте такі дії: створення локального таких змінних:
  1. Додавання нового змінною завдання журналу рядка таблиці (210) і вкажіть змінна наступним чином:
    • Ім'я: WMSManagement
    • Тип даних: Codeunit
    • Підтип: система управління Складом керування (7302)
  2. Видалення, наведений нижче код TableRelation властивості Кошика код поля (5403), робота журналу рядка таблиці (210):
    Bin.Code WHERE (Location Code=FIELD(Location Code));
  3. Зміни, що код у OnValidate тригер Bin код поля (5403), завдання журналу рядка таблиці (210) таким чином:
    Наявний код
    ...// Delete the following lines.
    TESTFIELD("Location Code");
    CheckItemAvailable;
    // End of the lines.
    ...
    Заміна код
    ...// Add the following lines.
    TESTFIELD("Location Code");
    IF "Bin Code" <> '' THEN BEGIN
    GetLocation("Location Code");
    Location.TESTFIELD("Bin Mandatory");
    END;
    TESTFIELD(Type,Type::Item);
    CheckItemAvailable;
    WMSManagement.FindBinContent("Location Code","Bin Code","No.","Variant Code",'')
    // End of the lines.
    ...
  4. Додати нову локальну змінну Bin код - OnLookup triggerin завдання журналу рядка таблиці (210) і вкажіть змінна наступним чином:
    • Ім'я: BinCode
    • Тип даних: - коду
    • Довжина: 20
  5. В Кошик код - OnLookup тригер завдання журналу рядка таблиці (210), додайте такий код:
    TESTFIELD("Location Code");TESTFIELD(Type,Type::Item);
    BinCode := WMSManagement.BinContentLookUp("Location Code","No.","Variant Code",'',"Bin Code");
    IF BinCode <> '' THEN
    VALIDATE("Bin Code",BinCode);
  6. Змініть значення властивості OptionString Вихідний документ поля (25) зі складу журналу рядка таблиці (7311), до такого:
    OptionString= =, с. замовлення, с рахунку, с кредитної приміток, с Return порядку, п. замовлення, рахунку в п. п. кредитної приміток, п. повернення замовлень, Ібн. Перенесення, Outb. Перенесення, Prod. Споживання елемент Jnl., фіз. Invt. Jnl., Reclass. Jnl., споживання Jnl., вихідний Jnl., Специфікації Jnl., Serv замовлення, роботу з Jnl.
  7. Змініть значення властивості OptionString поля Довідкового документа (60) зі складу журналу рядка таблиці (7311), до такого:
    OptionString= , додано Rcpt., розміщені в п. Інв.., що Опубліковано Rtrn. Rcpt., що Опубліковано п. Cr. Memo, який Опубліковано доставкою, опублікований с Інв. Опубліковано Rtrn. відправлення, розміщені с Cr. Memo, який Опубліковано т. сповіщення про Опубліковано т. відправлення, елемент журналу, Prod., приховання, вибрати, переміщення, Специфікації журналу, завдання журналу
  8. Змініть значення властивості OptionString поля вихідний документ (25), у складі запис (7312), до такого:
    OptionString= =, с. замовлення, с рахунку, с кредитної приміток, с Return порядку, п. замовлення, рахунку в п. п. кредитної приміток, п. повернення замовлень, Ібн. Перенесення, Outb. Перенесення, Prod. Споживання елемент Jnl., фіз. Invt. Jnl., Reclass. Jnl., споживання Jnl., вихідний Jnl., Специфікації Jnl., Serv. замовлення, роботу з Jnl.
  9. Змініть значення властивості OptionString поля довідкового документа (60), у складі запис (7312), до такого:
    OptionString= , додано Rcpt., розміщені в п. Інв.., що Опубліковано Rtrn. Rcpt., що Опубліковано п. Cr. Memo, який Опубліковано доставкою, опублікований с Інв. Опубліковано Rtrn. відправлення, опублікований с Cr. Memo, який Опубліковано т. сповіщення про Опубліковано т. відправлення, елемент журналу, Prod., приховання, вибрати, переміщення, Специфікації журналу, завдання журналу
  10. Змініть властивість відображається розташування код елемента керування (60) у вигляді завдання журналу (201) наступним чином:
    Наявний код
    Visible = Yes
    Заміна код
    Visible = No
  11. Додавання Bin код поля, поле Розташування коду та області Роботи введіть код у вигляді завдання журналу (201) і вкажіть поля, дотримуйтесь:
    ...{ 61 ;Label ;0 ;0 ;0 ;0 ;ParentControl=60;
    InColumnHeading=Yes }

    // Add the following lines.
    { 102 ;TextBox ;35507;1650 ;1700 ;440 ;ParentControl=1;
    InColumn=Yes;
    SourceExpr="Bin Code" }
    { 103 ;Label ;0 ;0 ;0 ;0 ;ParentControl=102;
    InColumnHeading=Yes }
    // End of the lines.

    { 48 ;TextBox ;11430;2530 ;1650 ;440 ;ParentControl=1;
    ...
  12. Додати нову глобальну змінну Jnl роботу.-повідомлення рядка, codeunit (1012) і вкажіть змінна наступним чином:
    • Ім'я: розташування
    • Тип даних: запис
    • Підтип: розташування (14)
  13. Створіть нову функцію GetLocation в роботі Jnl.-повідомлення рядка codeunit (1012), як описано нижче:
    LOCAL PROCEDURE GetLocation@25(LocationCode@1000 : Code[10]);
  14. Додайте наведений нижче код GetLocation функції в роботі Jnl.-повідомлення рядка, codeunit (1012):
    IF LocationCode = '' THENCLEAR(Location)
    ELSE
    IF Location.Code <> LocationCode THEN
    Location.GET(LocationCode);
  15. Створіть нову функцію PostWhseJnlLine в роботі Jnl.-повідомлення рядка codeunit (1012), як описано нижче:
    LOCAL PROCEDURE PostWhseJnlLine@24(ItemJnlLine@1000 : Record 83;OriginalQuantity@1001 : Decimal;OriginalQuantityBase@1002 : Decimal;VAR TempTrackingSpecification@1003 : TEMPORARY Record 336);
  16. Створення таких змінних локального PostWhseJnlLine функції в роботі Jnl.-повідомлення рядка, codeunit (1012):
    1. Додати локальний змінну PostWhseJnlLine функції в роботі Jnl.-повідомлення рядка, codeunit (1012) і вкажіть змінна наступним чином:
      • Ім'я: WarehouseJournalLine
      • Тип даних: запис
      • Підтип: сховища журналу лінія (7311)
    2. Додати локальний змінну PostWhseJnlLine функції в роботі Jnl.-повідомлення рядка, codeunit (1012) і вкажіть змінна наступним чином:
      • Ім'я: TempWarehouseJournalLine
      • Тип даних: ТИМЧАСОВОГО запису.
      • Підтип: сховища журналу лінія (7311.)
    3. Додати локальний змінну PostWhseJnlLine функції в роботі Jnl.-повідомлення рядка, codeunit (1012) і вкажіть змінна наступним чином:
      • Ім'я: ItemTrackingManagement
      • Тип даних: Codeunit
      • Підтип: елемент, відстеження керування (6500)
    4. Додати локальний змінну PostWhseJnlLine функції в роботі Jnl.-повідомлення рядка, codeunit (1012) і вкажіть змінна наступним чином:
      • Ім'я: WMSManagement
      • Тип даних: Codeunit
      • Підтип: система управління Складом керування (7302)
    5. Додати локальний змінну PostWhseJnlLine функції в роботі Jnl.-повідомлення рядка, codeunit (1012) і вкажіть змінна наступним чином:
      • Ім'я: WhseJnlRegisterLine
      • Тип даних: Codeunit
      • Підтип: Whse. Jnl.-Реєстрація рядок (7301)
  17. Додайте наведений нижче код PostWhseJnlLine функції в роботі Jnl.-повідомлення рядка codeunit (1012), як описано нижче:
    WITH ItemJnlLine DO BEGINIF "Entry Type" IN ["Entry Type"::Consumption,"Entry Type"::Output] THEN
    EXIT;
    Quantity := OriginalQuantity;
    "Quantity (Base)" := OriginalQuantityBase;
    GetLocation("Location Code");
    IF Location."Bin Mandatory" THEN
    IF WMSManagement.CreateWhseJnlLine(ItemJnlLine,0,WarehouseJournalLine,FALSE,FALSE) THEN BEGIN
    TempTrackingSpecification.MODIFYALL("Source Type",DATABASE::"Job Journal Line");
    ItemTrackingManagement.SplitWhseJnlLine(WarehouseJournalLine,TempWarehouseJournalLine,TempTrackingSpecification,FALSE);
    IF TempWarehouseJournalLine.FIND('-') THEN
    REPEAT
    WMSManagement.CheckWhseJnlLine(TempWarehouseJournalLine,1,0,FALSE);
    WhseJnlRegisterLine.RUN(TempWarehouseJournalLine);
    UNTIL TempWarehouseJournalLine.NEXT = 0;
    END;
    END;
  18. Додати нову локальну змінну код функції в роботі Jnl.-повідомлення рядка, codeunit (1012) і вкажіть змінна наступним чином:
    • Ім'я: TempTrackingSpecification
    • Тип даних: ТИМЧАСОВОГО запису.
    • Підтип: відстеження специфікації (336)
  19. Додати нову локальну змінну код функції в роботі Jnl.-повідомлення рядка, codeunit (1012) і вкажіть змінна наступним чином:
    • Ім'я: ItemJnlLine2
    • Тип даних: запис
    • Підтип: елемент журналу лінія (83)
  20. Змінити код код функції в роботі Jnl.-повідомлення рядка codeunit (1012), таким чином:
    Наявний код 1
    ...ItemJnlLine.INIT;
    ItemJnlLine."Item No." := JobJnlLine2."No.";
    ...

    Код на заміну 1
    ...ItemJnlLine.INIT;

    // Add the following line.
    ItemJnlLine."Line No." := "Line No.";

    ItemJnlLine."Item No." := JobJnlLine2."No.";
    ...
    Наявний код 2
    ...ItemLedgEntry.LOCKTABLE;
    ItemJnlPostLine.RunWithCheck(ItemJnlLine,TempJnlLineDim);
    END;
    ...
    Код на заміну 2
    ...ItemLedgEntry.LOCKTABLE;

    // Add the following line.
    ItemJnlLine2 := ItemJnlLine;

    ItemJnlPostLine.RunWithCheck(ItemJnlLine,TempJnlLineDim);

    // Add the following lines.
    ItemJnlPostLine.CollectTrackingSpecification(TempTrackingSpecification);
    PostWhseJnlLine(ItemJnlLine2,ItemJnlLine2.Quantity,ItemJnlLine2."Quantity (Base)",TempTrackingSpecification);
    // End of the lines.
    ...
  21. Змініть значення властивості OptionString довідковий документ параметра GetSourceDocument функції в полі Whse. Керування codeunit (5775) до наведеного нижче:
    OptionString= =, с. замовлення, с рахунку, с кредитної приміток, с Return порядку, п. замовлення, рахунку в п. п. кредитної приміток, п. повернення замовлень, Ібн. Перенесення, Outb. Перенесення, Prod. Споживання елемент Jnl., фіз. Invt. Jnl., Reclass. Jnl., споживання Jnl., вихідний Jnl., Специфікації Jnl., Serv. замовлення, роботу з Jnl.
  22. Змін GetSourceDocument функції, у полі Whse. Керування codeunit (5775) таким чином:
    Наявний код
    ...EXIT;
    END;
    END;
    ERROR(Text000);
    ...
    Заміна код
    ...EXIT;
    END;

    // Add the following lines.
    DATABASE::"Job Journal Line":
    BEGIN
    SourceDocument := SourceDocument::"Job Jnl.";
    EXIT;
    END;
    // End of the lines.

    END;
    ERROR(Text000);
    ...
  23. Дотримуйтесь, змініть код функції CreateWhseJnlLine в codeunit-система управління Складом керування (7302):
    Наявний код
    ...WhseJnlLine."Source Line No." := "Line No.";
    END;
    WhseJnlLine."Source Code" := "Source Code";
    WhseJnlLine."Reason Code" := "Reason Code";
    WhseJnlLine."Registering No. Series" := "Posting No. Series";
    WhseJnlLine."Whse. Document Type" := WhseJnlLine."Whse. Document Type"::" ";

    // Delete the following line.
    WhseJnlLine."Reference Document" := WhseJnlLine."Reference Document"::"Item Journal";

    WhseJnlLine."Reference No." := "Document No.";
    ...
    Заміна код
    ...WhseJnlLine."Source Line No." := "Line No.";

    // Add the following lines.
    END ELSE
    IF "Job No." <> '' THEN BEGIN
    WhseJnlLine."Source Type" := DATABASE::"Job Journal Line";
    WhseJnlLine."Source Subtype" := ItemJnlTemplateType;
    WhseMgt.GetSourceDocument(WhseJnlLine."Source Document",WhseJnlLine."Source Type",WhseJnlLine."Source Subtype");
    WhseJnlLine."Source No." := "Document No.";
    WhseJnlLine."Source Line No." := "Line No.";
    // End of the lines.
    END;WhseJnlLine."Source Code" := "Source Code";
    WhseJnlLine."Reason Code" := "Reason Code";
    WhseJnlLine."Registering No. Series" := "Posting No. Series";
    WhseJnlLine."Whse. Document Type" := WhseJnlLine."Whse. Document Type"::" ";

    // Add the following lines.
    IF "Job No." = '' THEN
    WhseJnlLine."Reference Document" := WhseJnlLine."Reference Document"::"Item Journal"
    ELSE
    WhseJnlLine."Reference Document" := WhseJnlLine."Reference Document"::"Job Journal";
    // End of the lines.

    WhseJnlLine."Reference No." := "Document No.";
    ...ine."Source Code" := "Source Code";
    WhseJnlLine."Reason Code" := "Reason Code";
    WhseJnlLine."Registering No. Series" := "Posting No. Series";
    WhseJnlLine."Whse. Document Type" := WhseJnlLine."Whse. Document Type"::" ";

    // Add the following lines.
    IF "Job No." = '' THEN
    WhseJnlLine."Reference Document" := WhseJnlLine."Reference Document"::"Item Journal"
    ELSE
    WhseJnlLine."Reference Document" := WhseJnlLine."Reference Document"::"Job Journal";
    // End of the lines.

    WhseJnlLine."Reference No." := "Document No.";
    ...

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

Ви повинні мати одну з таких продуктів, щоб застосувати це виправлення:
  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 пакет оновлень 1 (SP1)

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

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

Стан


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