Bài viết này áp dụng cho Microsoft Dynamics AX cho tất cả các vùng.
Triệu chứng
Khi bạn gửi một đơn đặt hàng trong Microsoft Dynamics AX 2009, bạn nhận được thông báo lỗi sau:
Không thể tạo một hồ sơ trong tiêu đề để mua - Cập Nhật bảng (PurchParmSubTable).
Sự cố này xảy ra nếu một trong các điều kiện sau là đúng:
-
Bạn bật thiết đặt "thiết lập đường sinh học chữ ký điện tử kiểm tra" cho tất cả các bảng.
-
Bạn tạo một bản ghi bảng phổ biến.
-
Bạn đặt bảng PurchParmTable trong Nhật ký cơ sở dữ liệu.
Sự cố này xảy ra khi bạn gửi một đơn đặt hàng, danh sách nhận, phiếu đóng gói và hóa đơn. Sự cố này xảy ra trong các sản phẩm sau:
-
Microsoft Dynamics AX 2009 Service Pack 1
-
Microsoft Dynamics AX 2009
Giải pháp
Thông tin hotfix
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 AX 2009 hoặc phiên bản tiếp theo có chứa hotfix này. Chú ý Trong trường hợp đặc biệt, chi phí thường phát sinh để hỗ trợ cuộc gọi có thể bị 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 đối với các vấn đề và câu hỏi hỗ trợ bổ sung không phù hợp với bản cập nhật cụ thể đang được bàn tới.
Thông tin cài đặt
Trước khi cài đặt hotfix này, xác minh rằng người dùng máy khách Microsoft Dynamics AX đăng tắt hệ thố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ú ý 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 cửa sổ cơ sở dữ liệu đăng nhập là thành viên của nhóm quản trị viên sử dụng trong Microsoft Dynamics AX.
Thay đổi mã
Microsoft chỉ cung cấp mô hình lập trình để minh hoạ mà không đảm bảo dưới bất kỳ hình thức nào dù có quy định rõ ràng hay ngụ ý. Điều này bao gồm nhưng không giới hạn trong các hình thức bảo hành đối với tính thương mại cũng như tính thích hợp cho một mục đích cụ thể. 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ông cụ được sử dụng để tạo và gỡ lỗi quy trình. Microsoft hỗ trợ các kỹ sư có thể giúp giải thích tính năng của một quy trình cụ thể. Tuy nhiên, họ sẽ không sửa đổi những mô hình này để cung cấp tính năng được bổ sung 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. 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, làm theo các bước này:
-
Ghi đè mã phương pháp chèn trong bảng PurchParmSubTable như sau:
public void insert(){ PurchParmSubTable tempPurchParmSubTable; ; select tempPurchParmSubTable where tempPurchParmSubTable.ParmId == this.ParmId && tempPurchParmSubTable.TableRefId == this.TableRefId && tempPurchParmSubTable.OrigPurchId == this.OrigPurchId; if(tempPurchParmSubTable.RecId == 0) { super(); }}
-
Ghi đè mã phương pháp createFromPurchParmTable trong bảng PurchParmSubTable như sau:
static PurchParmSubTable createFromPurchParmTable(PurchParmTable _purchParmTable, boolean _insert = true){ PurchParmSubTable purchParmSubTable; systemSequence systemSequence; ; ttsbegin; purchParmSubTable.clear(); purchParmSubTable.initValue(); purchParmSubTable.initFromPurchParmTable(_purchParmTable); if (_insert) { systemSequence = new systemSequence(); purchParmSubTable.RecId = systemSequence.reserveValues(1, tablenum(PurchParmSubTable)); purchParmSubTable.insert(); } ttscommit; return purchParmSubTable;}
-
Ghi đè mã phương pháp chèn trong bảng SalesParmSubTable như sau:
public void insert(){ SalesParmSubTable tempSalesParmSubTable; ; select tempSalesParmSubTable where tempSalesParmSubTable.ParmId == this.ParmId && tempSalesParmSubTable.TableRefId == this.TableRefId && tempSalesParmSubTable.OrigSalesId == this.OrigSalesId && tempSalesParmSubTable.subId == this.subId; if(tempSalesParmSubTable.RecId == 0) { super(); }}
Chú ý Bạn phải nhập bất kỳ tuỳ chỉnh sẵn có trong các phương pháp này.
Điều kiện tiên quyết
Không bắt buộc điều kiện tiên quyết nào.
Yêu cầu khởi động lại
Bạn không phải khởi động lại máy tính sau khi bạn áp dụng hotfix này.
Trạng thái
Microsoft đã xác nhận đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".