Miklix

Sự khác biệt giữa data() và buf2Buf() trong Dynamics AX 2012

Đã xuất bản: lúc 22:54:17 UTC 15 tháng 2, 2025
Cập nhật lần cuối: lúc 08:41:16 UTC 12 tháng 1, 2026

Bài viết này giải thích sự khác biệt giữa các phương thức buf2Buf() và data() trong Dynamics AX 2012, bao gồm cả thời điểm thích hợp để sử dụng từng phương thức và một ví dụ mã X++.


Trang này được dịch máy từ tiếng Anh để có thể tiếp cận được với nhiều người nhất có thể. Thật không may, dịch máy vẫn chưa phải là công nghệ hoàn thiện, do đó có thể xảy ra lỗi. Nếu bạn thích, bạn có thể xem phiên bản tiếng Anh gốc tại đây:

The Difference Between data() and buf2Buf() in Dynamics AX 2012

Thông tin trong bài viết này dựa trên Dynamics AX 2012 R3. Thông tin này có thể không còn đúng đối với các phiên bản khác.

Khi cần sao chép giá trị của tất cả các trường từ bộ đệm bảng này sang bộ đệm bảng khác trong Dynamics AX, theo cách thông thường bạn sẽ làm như sau:

toTable.data(fromTable);

Cách này rất hiệu quả và trong hầu hết các trường hợp, đây là phương án tốt nhất.

Tuy nhiên, bạn cũng có thể lựa chọn sử dụng hàm buf2Buf thay thế:

buf2Buf(fromTable, toTable);

Cách này cũng hiệu quả. Vậy sự khác biệt là gì?

Điểm khác biệt là buf2Buf không sao chép các trường hệ thống. Các trường hệ thống bao gồm các trường như RecId, TableId, và có lẽ quan trọng nhất trong ngữ cảnh này là DataAreaId. Lý do trường cuối cùng quan trọng nhất là vì trường hợp điển hình nhất mà bạn sẽ sử dụng buf2Buf() thay vì data() là khi sao chép các bản ghi giữa các tài khoản công ty, thường bằng cách sử dụng từ khóa changeCompany.

Ví dụ, nếu bạn đang ở công ty "dat" và có một công ty khác tên là "com" mà bạn muốn sao chép tất cả các bản ghi trong bảng CustTable từ đó:

while select crossCompany : ['com'] custTableFrom
{
    buf2Buf(custTableFrom, custTableTo);
    custTableTo.insert();
}

Trong trường hợp này, nó sẽ hoạt động vì buf2Buf sao chép tất cả các giá trị trường, ngoại trừ các trường hệ thống, vào bộ đệm mới. Nếu bạn sử dụng data() thay thế, bản ghi mới sẽ được chèn vào tài khoản công ty "com" vì giá trị đó cũng sẽ được sao chép vào bộ đệm mới.

(Thực ra, điều đó sẽ dẫn đến lỗi khóa trùng lặp, nhưng đó cũng không phải là điều bạn muốn).

Đọc thêm

Nếu bạn thích bài viết này, bạn cũng có thể thích những gợi ý sau:


Chia sẻ trên BlueskyChia sẻ trên FacebookChia sẻ trên LinkedInChia sẻ trên TumblrChia sẻ trên XChia sẻ trên LinkedInGhim trên Pinterest

Mikkel Christensen

Về tác giả

Mikkel Christensen
Mikkel là người sáng lập và chủ sở hữu của miklix.com. Ông có hơn 20 năm kinh nghiệm làm lập trình viên máy tính/nhà phát triển phần mềm chuyên nghiệp và hiện đang làm việc toàn thời gian cho một tập đoàn CNTT lớn của Châu Âu. Khi không viết blog, ông dành thời gian rảnh rỗi cho nhiều sở thích, thú vui và hoạt động, có thể được phản ánh ở một mức độ nào đó trong nhiều chủ đề được đề cập trên trang web này.