Perbedaan Antara data() dan buf2Buf() di Dynamics AX 2012
Diterbitkan: 15 Februari 2025 pukul 22.53.46 UTC
Artikel ini menjelaskan perbedaan antara metode buf2Buf() dan data() di Dynamics AX 2012, termasuk kapan waktu yang tepat untuk menggunakan masing-masing dan contoh kode X++.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
Informasi dalam posting ini berdasarkan Dynamics AX 2012 R3. Informasi ini mungkin berlaku atau tidak berlaku untuk versi lain.
Saat Anda perlu menyalin nilai semua bidang dari satu buffer tabel ke buffer tabel lain di Dynamics AX, Anda biasanya akan melakukan sesuatu seperti:
Ini berfungsi dengan baik dan merupakan cara yang tepat dalam sebagian besar kasus.
Namun, Anda juga memiliki opsi untuk menggunakan fungsi buf2Buf sebagai gantinya:
Ini juga berfungsi dengan baik. Jadi apa bedanya?
Perbedaannya adalah buf2Buf tidak menyalin kolom sistem. Kolom sistem mencakup kolom seperti RecId, TableId, dan mungkin yang paling penting dalam konteks ini, DataAreaId. Alasan mengapa yang terakhir adalah yang paling penting adalah karena kasus yang paling umum di mana Anda akan menggunakan buf2Buf() alih-alih data() adalah saat menduplikasi catatan antara akun perusahaan, biasanya dengan menggunakan kata kunci changeCompany.
Misalnya, jika Anda berada di perusahaan "dat" dan memiliki perusahaan lain bernama "com" yang ingin Anda salin semua catatannya di CustTable dari:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
Dalam kasus ini, ini akan berhasil karena buf2Buf menyalin semua nilai kolom, kecuali kolom sistem ke buffer baru. Jika Anda menggunakan data() sebagai gantinya, rekaman baru akan dimasukkan ke akun perusahaan "com" karena nilai itu juga akan disalin ke buffer baru.
(Sebenarnya hal itu akan mengakibatkan kesalahan kunci duplikat, tetapi itu juga bukan yang Anda inginkan).