Perbezaan Antara data() dan buf2Buf() dalam Dynamics AX 2012
Diterbitkan: 19 Mac 2025 pada 9:32:33 PTG UTC
Artikel ini menerangkan perbezaan antara kaedah buf2Buf() dan data() dalam Dynamics AX 2012, termasuk masa yang sesuai untuk menggunakan setiap satu dan contoh kod X++.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
Maklumat dalam pos ini adalah berdasarkan Dynamics AX 2012 R3. Ia mungkin sah atau tidak sah untuk versi lain.
Apabila anda perlu menyalin nilai semua medan dari satu penampan jadual ke penampan lain dalam Dynamics AX, secara tradisinya anda akan melakukan sesuatu seperti:
Ini berfungsi dengan baik dan dalam kebanyakan kes adalah cara untuk dilakukan.
Walau bagaimanapun, anda juga mempunyai pilihan untuk menggunakan fungsi buf2Buf sebagai ganti:
Ini juga berfungsi dengan baik. Jadi, apakah perbezaannya?
Perbezaannya ialah buf2Buf tidak menyalin medan sistem. Medan sistem termasuk medan seperti RecId, TableId, dan mungkin yang paling penting dalam konteks ini, DataAreaId. Sebab yang terakhir adalah yang paling penting kerana kes yang paling tipikal di mana anda akan menggunakan buf2Buf() berbanding data() adalah apabila menduplikasi rekod antara akaun syarikat, biasanya dengan menggunakan kata kunci changeCompany.
Contohnya, jika anda berada di syarikat "dat" dan mempunyai syarikat lain yang dipanggil "com" yang anda ingin salin semua rekod dalam CustTable daripadanya:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
Dalam kes ini, ia akan berfungsi kerana buf2Buf menyalin semua nilai medan, kecuali medan sistem ke penampan baru. Sekiranya anda menggunakan data() sebagai ganti, rekod baru akan dimasukkan ke dalam akaun syarikat "com" kerana nilai itu juga akan disalin ke penampan baru.
(Sebenarnya, ia akan mengakibatkan ralat kunci pendua, tetapi itu bukan yang anda inginkan juga).