Miklix

Perbedaan Antara data() dan buf2Buf() di Dynamics AX 2012

Diterbitkan: 15 Februari 2025 pukul 22.53.46 UTC
Terakhir diperbarui: 12 Januari 2026 pukul 08.41.02 UTC

Artikel ini menjelaskan perbedaan antara metode buf2Buf() dan data() di Dynamics AX 2012, termasuk kapan waktu yang tepat untuk menggunakan masing-masing metode dan contoh kode X++.


Halaman ini diterjemahkan oleh mesin dari bahasa Inggris agar dapat diakses oleh sebanyak mungkin orang. Sayangnya, terjemahan mesin belum merupakan teknologi yang sempurna, sehingga kesalahan dapat terjadi. Jika Anda mau, Anda dapat melihat versi bahasa Inggris aslinya di sini:

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

Informasi dalam posting ini didasarkan pada Dynamics AX 2012 R3. Informasi ini mungkin berlaku atau mungkin tidak berlaku untuk versi lain.

Saat Anda perlu menyalin nilai semua kolom dari satu buffer tabel ke buffer tabel lain di Dynamics AX, Anda biasanya akan melakukan hal berikut:

toTable.data(fromTable);

Ini berfungsi dengan baik dan dalam kebanyakan kasus merupakan cara yang tepat.

Namun, Anda juga memiliki opsi untuk menggunakan fungsi buf2Buf sebagai gantinya:

buf2Buf(fromTable, toTable);

Ini juga berfungsi dengan baik. Jadi apa bedanya?

Perbedaannya adalah buf2Buf tidak menyalin field sistem. Field sistem meliputi field seperti RecId, TableId, dan mungkin yang paling penting dalam konteks ini, DataAreaId. Alasan mengapa yang terakhir adalah yang paling penting adalah karena kasus paling umum di mana Anda akan menggunakan buf2Buf() alih-alih data() adalah ketika menduplikasi record antar akun perusahaan, biasanya dengan menggunakan kata kunci changeCompany.

Sebagai contoh, jika Anda berada di perusahaan "dat" dan memiliki perusahaan lain bernama "com" yang ingin Anda salin semua catatannya di CustTable:

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

Dalam hal ini, akan berhasil karena buf2Buf menyalin semua nilai field, kecuali field sistem, ke buffer baru. Seandainya Anda menggunakan data() sebagai gantinya, record baru akan dimasukkan ke dalam akun perusahaan "com" karena nilai tersebut juga akan disalin ke buffer baru.

(Sebenarnya, ini akan mengakibatkan kesalahan kunci duplikat, tetapi bukan itu yang Anda inginkan juga).

Bacaan Lebih Lanjut

Jika Anda menikmati postingan ini, Anda mungkin juga menyukai saran berikut:


Bagikan di BlueskyBagikan di FacebookBagikan di LinkedInBagikan di TumblrBagikan di XBagikan di LinkedInPin di Pinterest

Mikkel Christensen

Tentang Penulis

Mikkel Christensen
Mikkel adalah pencipta dan pemilik miklix.com. Dia memiliki lebih dari 20 tahun pengalaman sebagai pemrogram komputer profesional/pengembang perangkat lunak dan saat ini bekerja penuh waktu di sebuah perusahaan IT besar di Eropa. Ketika tidak menulis blog, ia menghabiskan waktu luangnya untuk beragam minat, hobi, dan kegiatan, yang mungkin sampai batas tertentu tercermin dalam berbagai topik yang dibahas di situs web ini.