Dynamics AX 2012'de data() ve buf2Buf() Arasındaki Fark
Yayınlandı: 15 Şubat 2025 22:54:05 UTC
Bu makalede Dynamics AX 2012'deki buf2Buf() ve data() yöntemleri arasındaki farklar açıklanmakta, her birinin ne zaman kullanılmasının uygun olduğu ve bir X++ kod örneği verilmektedir.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
Bu gönderideki bilgiler Dynamics AX 2012 R3'e dayanmaktadır. Diğer sürümler için geçerli olabilir veya olmayabilir.
Dynamics AX'te tüm alanların değerini bir tablo tamponundan diğerine kopyalamanız gerektiğinde, geleneksel olarak şu şekilde bir şey yaparsınız:
Bu işe yarar ve çoğu durumda doğru yoldur.
Ancak bunun yerine buf2Buf fonksiyonunu kullanma seçeneğiniz de var:
Bu da işe yarıyor. Peki fark ne?
Fark, buf2Buf'un sistem alanlarını kopyalamamasıdır. Sistem alanları, RecId, TableId ve belki de bu bağlamda en önemlisi DataAreaId gibi alanları içerir. İkincisinin en önemli olmasının nedeni, buf2Buf()'u data() yerine kullanacağınız en tipik durumun, şirket hesapları arasında kayıtları çoğaltırken, genellikle changeCompany anahtar sözcüğünü kullanarak olmasıdır.
Örneğin, "dat" şirketinde çalışıyorsanız ve CustTable'daki tüm kayıtları kopyalamak istediğiniz "com" adında başka bir şirketiniz varsa:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
Bu durumda, buf2Buf tüm alan değerlerini, sistem alanları hariç, yeni tampona kopyaladığı için işe yarayacaktır. Bunun yerine data() kullanmış olsaydınız, yeni kayıt "com" şirket hesaplarına eklenmiş olurdu çünkü bu değer de yeni tampona kopyalanmış olurdu.
(Aslında bu, bir yinelenen anahtar hatasıyla sonuçlanabilirdi, ancak bu da istediğiniz bir şey değil).