Bỏ qua để tới nội dung chính
Đăng nhập với Microsoft
Đăng nhập hoặc tạo một tài khoản.
Xin chào,
Chọn một tài khoản khác.
Bạn có nhiều tài khoản
Chọn tài khoản bạn muốn đăng nhập.

Bài viết này áp dụng cho Microsoft Dynamics NAV cho tất cả các nước và tất cả ngôn ngữ.

Triệu chứng

Giả sử rằng bạn có một Nhật ký công việc có nhiều mục theo dõi dòng cho một mục trong Microsoft Dynamics NAV 2009. Khi bạn gửi mục trong sổ Nhật ký công việc một, các mục trong kho chỉ được Cập Nhật với mục cuối cùng theo dõi dòng được nhập. Do đó, sự mất cân bằng mục giữa các kho hàng và sổ cái mục không.
Sự cố này xảy ra trong các sản phẩm sau:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)


Giải pháp

Thông tin về cập nhật nóng

Microsoft hiện đã cung cấp bản cập nhật nóng được hỗ trợ. Tuy nhiên, nó chỉ được dùng để khắc phục sự cố được mô tả trong bài viết này. Áp dụng cho các hệ thống đang gặp sự cố cụ thể này. Hotfix này có thể được kiểm tra thêm. Vì vậy, nếu bạn không bị ảnh hưởng bởi sự cố này, chúng tôi khuyến nghị bạn đợi cho gói dịch vụ tiếp theo của Microsoft Dynamics NAV hoặc phiên bản Microsoft Dynamics NAV tiếp theo có chứa hotfix này.

Lưu ý Trong trường hợp đặc biệt, chi phí thường phát sinh để hỗ trợ cuộc gọi có thể được hủy bỏ nếu chuyên viên hỗ trợ kỹ thuật cho Microsoft Dynamics và sản phẩm liên quan xác định rằng một Cập Nhật cụ thể sẽ giải quyết vấn đề của bạn. Chi phí hỗ trợ thông thường sẽ áp dụng cho các vấn đề không phù hợp với bản Cập Nhật cụ thể trong câu hỏi và câu hỏi hỗ trợ bổ sung.



Thông tin cài đặt

Microsoft cung cấp mô hình lập trình để minh hoạ, không bảo hành hoặc rõ ràng hay ngụ ý. Điều này bao gồm, nhưng không giới hạn ở các bảo đảm cho một mục đích cụ thể hoặc sự. Bài viết này giả định rằng bạn đã quen với ngôn ngữ lập trình đang được giải thích và các công cụ được sử dụng để tạo và quy trình gỡ lỗi. Các kỹ sư hỗ trợ Microsoft có thể giúp giải thích các chức năng của một quy trình cụ thể, nhưng chúng sẽ không sửa đổi các ví dụ để cung cấp thêm chức năng hoặc xây dựng quy trình nhằm đáp ứng các yêu cầu cụ thể của bạn.

Lưu ý Trước khi cài đặt hotfix này, xác minh rằng tất cả Microsoft Navision khách người dùng đăng xuất hệ thống. Điều này bao gồm Microsoft Navision ứng dụng dịch vụ (NAS) khách người dùng. Bạn nên khách hàng chỉ người được đăng nhập khi bạn áp dụng hotfix này.

Để áp dụng hotfix này, bạn phải có giấy phép nhà phát triển.

Chúng tôi khuyên bạn nên tài khoản người dùng trong cửa sổ thông tin đăng nhập Windows hoặc trong cửa sổ thông tin đăng nhập cơ sở dữ liệu được gán vai trò "Siêu" của bạn. Nếu tài khoản người dùng không thể gán vai trò "SUPER" ID, bạn phải xác minh rằng tài khoản người dùng có các quyền sau đây:

  • Thay đổi quyền cho các đối tượng mà bạn sẽ thay đổi.

  • Quyền thực thi các đối tượng hệ thống đối tượng ID 5210 và các đối tượng hệ thống đối tượng ID 9015 .



Lưu ý Bạn không cần phải có quyền để lưu trữ dữ liệu nếu bạn phải tiến hành sửa chữa dữ liệu.

Thay đổi mã

Lưu ý Luôn kiểm tra mã khắc phục trong một môi trường được kiểm soát trước khi bạn áp dụng bản vá để sản xuất máy tính của bạn.
Để khắc phục sự cố này, hãy làm theo các bước sau: tạo các biến cục bộ sau:

  1. Thêm một biến toàn cầu mới trong việc tạp chí dòng bảng (210), và sau đó xác định biến như sau:

    • Tên: WMSManagement

    • Loại dữ liệu: Codeunit

    • Phiên bản: WMS Management (7302 người)

  2. Xoá mã sau trong thuộc tính TableRelation Rác mã trường (5403) trong bảng công việc tạp chí dòng (210):

    Bin.Code WHERE (Location Code=FIELD(Location Code));
  3. Thay đổi mã trong kích hoạt OnValidate rác mã trường (5403) trong bảng công việc tạp chí dòng (210) như sau:
    Mã hiện tại

    ...// Delete the following lines.
    TESTFIELD("Location Code");
    CheckItemAvailable;
    // End of the lines.
    ...

    Thay thế mã

    ...// 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. Thêm một biến địa phương mới trong Rác mã - OnLookup triggerin bảng công việc tạp chí dòng (210), và sau đó xác định biến như sau:

    • Tên: BinCode

    • Loại dữ liệu:

    • Độ dài: 20

  5. Thêm mã sau trong Mã rác - OnLookup kích hoạt trong bảng công việc tạp chí dòng (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. Thay đổi giá trị tài sản OptionString Nguồn tài liệu trường (25) trong bảng kho tạp chí dòng (7311) sau:
    OptionString=, S. để S. đơn, tín dụng S. ghi, S. trở lại để, P. tự, P. đơn, tín dụng trang ghi, để trở lại trang, Inb. Chuyển Outb. Chuyển Prod. Tiêu thụ, mục Jnl., Phys. Invt. Jnl., Reclass. Jnl., tiêu thụ Jnl, kết quả Jnl., BOM Jnl, Serv lệnh công việc Jnl.

  7. Thay đổi giá trị trong thuộc tính OptionString của Tài liệu tham khảo trường (60) trong bảng kho tạp chí dòng (7311) sau:
    OptionString= , đăng Rcpt. đăng trang Inv., đăng Rtrn. Rcpt., đăng trang Cr. ghi gửi hàng đăng S. Inv., gửi Rtrn. xếp hàng, đăng S. Cr. ghi đăng T. nhận, gửi hàng T., mục Nhật ký, Prod., sắp xếp, lựa chọn, di chuyển BOM Nhật ký, Nhật ký công việc

  8. Thay đổi giá trị trong thuộc tính OptionString của trường (25) nguồn tài liệu trong kho mục bảng (7312) sau:
    OptionString=, S. để S. đơn, S. tín dụng ghi, S. trở lại để, thứ tự trang, trang đơn, tín dụng trang ghi, để trở lại trang, Inb. Chuyển Outb. Chuyển Prod. Tiêu thụ, mục Jnl., Phys. Invt. Jnl., Reclass. Công việc Jnl., tiêu thụ Jnl, kết quả Jnl., BOM Jnl, Serv. lệnh Jnl.

  9. Thay đổi giá trị trong thuộc tính OptionString của tài liệu tham khảo trường (60) trong kho mục bảng (7312) sau:
    OptionString= , đăng Rcpt. đăng trang Inv., đăng Rtrn. Rcpt., đăng trang Cr. ghi gửi hàng đăng S. Inv., gửi Rtrn. xếp hàng, đăng S. Cr. ghi đăng T. nhận, gửi hàng T., mục Nhật ký, Prod., sắp xếp, lựa chọn, di chuyển BOM Nhật ký, Nhật ký công việc

  10. Thay đổi thuộc tính Hiển thị mã kiểm soát (60) thành Nhật ký công việc (201) như sau:
    Mã hiện tại

    Visible = Yes

    Thay thế mã

    Visible = No
  11. Thêm Rác mã trường giữa Công việc nhập mã trường và Mã trường thành Nhật ký công việc (201) và sau đó xác định trường khi thực hiện theo:

    ...{ 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. Thêm một biến toàn cầu mới trong việc Jnl.-bài dòng codeunit (1012), và sau đó xác định biến như sau:

    • Tên: vị trí

    • Loại dữ liệu: hồ sơ

    • Phiên bản: vị trí (14)

  13. Tạo một chức năng GetLocation mới trong công việc Jnl.-bài dòng codeunit (1012) như sau:

    LOCAL PROCEDURE GetLocation@25(LocationCode@1000 : Code[10]);
  14. Thêm mã sau trong GetLocation chức năng trong việc Jnl.-bài dòng codeunit (1012):

    IF LocationCode = '' THENCLEAR(Location)
    ELSE
    IF Location.Code <> LocationCode THEN
    Location.GET(LocationCode);
  15. Tạo một chức năng PostWhseJnlLine mới trong công việc Jnl.-bài dòng codeunit (1012) như sau:

    LOCAL PROCEDURE PostWhseJnlLine@24(ItemJnlLine@1000 : Record 83;OriginalQuantity@1001 : Decimal;OriginalQuantityBase@1002 : Decimal;VAR TempTrackingSpecification@1003 : TEMPORARY Record 336);
  16. Tạo các biến cục bộ sau chức năng PostWhseJnlLine trong việc Jnl.-bài dòng codeunit (1012):

    1. Thêm một biến cục bộ trong hàm PostWhseJnlLine trong việc Jnl.-bài dòng codeunit (1012), và sau đó xác định biến như sau:

      • Tên: WarehouseJournalLine

      • Loại dữ liệu: hồ sơ

      • Phiên bản: kho tạp chí dòng (7311)

    2. Thêm một biến cục bộ trong hàm PostWhseJnlLine trong việc Jnl.-bài dòng codeunit (1012), và sau đó xác định biến như sau:

      • Tên: TempWarehouseJournalLine

      • Loại dữ liệu: hồ sơ tạm thời

      • Phiên bản: kho tạp chí dòng (7311)

    3. Thêm một biến cục bộ trong hàm PostWhseJnlLine trong việc Jnl.-bài dòng codeunit (1012), và sau đó xác định biến như sau:

      • Tên: ItemTrackingManagement

      • Loại dữ liệu: Codeunit

      • Phiên bản: mục theo dõi quản lý (6500)

    4. Thêm một biến cục bộ trong hàm PostWhseJnlLine trong việc Jnl.-bài dòng codeunit (1012), và sau đó xác định biến như sau:

      • Tên: WMSManagement

      • Loại dữ liệu: Codeunit

      • Phiên bản: WMS quản lý (7302 người)

    5. Thêm một biến cục bộ trong hàm PostWhseJnlLine trong việc Jnl.-bài dòng codeunit (1012), và sau đó xác định biến như sau:

      • Tên: WhseJnlRegisterLine

      • Loại dữ liệu: Codeunit

      • Phiên bản: Whse. Jnl.-đăng ký dòng (7301)

  17. Thêm mã sau trong hàm PostWhseJnlLine trong việc Jnl.-bài dòng codeunit (1012) như sau:

    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. Thêm một biến địa phương mới chức năng mã Jnl việc.-bài dòng codeunit (1012), và sau đó xác định biến như sau:

    • Tên: TempTrackingSpecification

    • Loại dữ liệu: hồ sơ tạm thời

    • Phiên bản: theo dõi thông số kỹ thuật (336)

  19. Thêm một biến địa phương mới chức năng mã Jnl việc.-bài dòng codeunit (1012), và sau đó xác định biến như sau:

    • Tên: ItemJnlLine2

    • Loại dữ liệu: hồ sơ

    • Phiên bản: mục Nhật ký dòng (83)

  20. Thay đổi mã trong mã chức năng trong việc Jnl.-bài dòng codeunit (1012) như sau:
    Hiện có mã 1

    ...ItemJnlLine.INIT;
    ItemJnlLine."Item No." := JobJnlLine2."No.";
    ...

    Thay thế mã 1

    ...ItemJnlLine.INIT;

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

    ItemJnlLine."Item No." := JobJnlLine2."No.";
    ...

    Hiện có mã 2

    ...ItemLedgEntry.LOCKTABLE;
    ItemJnlPostLine.RunWithCheck(ItemJnlLine,TempJnlLineDim);
    END;
    ...

    Thay thế mã 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. Thay đổi giá trị trong nhà OptionString tài liệu tham khảo trong hàm GetSourceDocument Whse tham số. Quản lý codeunit (5775) sau:
    OptionString=, S. để S. đơn, S. tín dụng ghi, S. trở lại để, thứ tự trang, trang đơn, tín dụng trang ghi, để trở lại trang, Inb. Chuyển Outb. Chuyển Prod. Tiêu thụ, mục Jnl., Phys. Invt. Jnl., Reclass. Jnl., tiêu thụ Jnl, kết quả Jnl., BOM Jnl, Serv. lệnh công việc Jnl.

  22. Thay đổi mã trong hàm GetSourceDocument Whse. Quản lý codeunit (5775) như sau:
    Mã hiện có

    ...EXIT;
    END;
    END;
    ERROR(Text000);
    ...

    Thay thế mã

    ...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. Thay đổi mã trong hàm CreateWhseJnlLine codeunit WMS quản lý (7302 người) theo:
    Mã hiện có

    ...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.";
    ...

    Thay thế mã

    ...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.";
    ...

Điều kiện tiên quyết

Bạn phải có một trong các sản phẩm được cài đặt để áp dụng hotfix này:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

Thông tin về việc loại bỏ

Bạn không thể xoá hotfix này.

Trạng thái

Microsoft đã xác nhận rằng đây là sự cố trong sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".

Lưu ý Đây là một bài viết "XUẤT BẢN NHANH" được tạo trực tiếp từ trung tâm hỗ trợ của Microsoft. Thông tin này được cung cấp-trả lời cho các vấn đề mới xuất hiện. Vì nhanh chóng có sẵn, các tài liệu có thể bao gồm lỗi và có thể được sửa đổi bất kỳ lúc nào mà không cần thông báo. Xem Điều khoản sử dụng để xem xét khác.

Bạn cần thêm trợ giúp?

Bạn muốn xem các tùy chọn khác?

Khám phá các lợi ích của gói đăng ký, xem qua các khóa đào tạo, tìm hiểu cách bảo mật thiết bị của bạn và hơn thế nữa.

Cộng đồng giúp bạn đặt và trả lời các câu hỏi, cung cấp phản hồi và lắng nghe ý kiến từ các chuyên gia có kiến thức phong phú.

Thông tin này có hữu ích không?

Bạn hài lòng đến đâu với chất lượng dịch thuật?
Điều gì ảnh hưởng đến trải nghiệm của bạn?
Khi nhấn gửi, phản hồi của bạn sẽ được sử dụng để cải thiện các sản phẩm và dịch vụ của Microsoft. Người quản trị CNTT của bạn sẽ có thể thu thập dữ liệu này. Điều khoản về quyền riêng tư.

Cảm ơn phản hồi của bạn!

×