تفاوت بین داده() و buf2Buf() در Dynamics AX 2012
منتشر شده: ۱۵ فوریهٔ ۲۰۲۵ ساعت ۲۲:۵۴:۱۸ (UTC)
آخرین به روز رسانی: ۱۲ ژانویهٔ ۲۰۲۶ ساعت ۸:۴۱:۱۶ (UTC)
این مقاله تفاوتهای بین متدهای buf2Buf() و data() را در Dynamics AX 2012 توضیح میدهد، از جمله اینکه چه زمانی استفاده از هر کدام مناسب است و یک مثال کد X++.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
اطلاعات موجود در این پست بر اساس Dynamics AX 2012 R3 است. ممکن است برای نسخههای دیگر معتبر باشد یا نباشد.
وقتی نیاز دارید مقدار همه فیلدها را از یک بافر جدول به بافر جدول دیگر در Dynamics AX کپی کنید، به طور سنتی کاری مانند زیر انجام میدهید:
این روش به خوبی کار میکند و در بیشتر موارد، بهترین راه است.
با این حال، شما میتوانید به جای آن از تابع buf2Buf نیز استفاده کنید:
این هم خوب کار میکند. پس چه فرقی دارد؟
تفاوت این است که buf2Buf فیلدهای سیستم را کپی نمیکند. فیلدهای سیستم شامل فیلدهایی مانند RecId، TableId و شاید از همه مهمتر در این زمینه، DataAreaId هستند. دلیل اینکه مورد دوم از همه مهمتر است این است که رایجترین موردی که شما به جای data() از buf2Buf() استفاده میکنید، هنگام کپی کردن رکوردها بین حسابهای شرکت است، که معمولاً با استفاده از کلمه کلیدی changeCompany انجام میشود.
برای مثال، اگر در شرکت "dat" هستید و شرکت دیگری به نام "com" دارید که میخواهید تمام رکوردهای CustTable را از آن کپی کنید:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
در این حالت، این روش کار خواهد کرد زیرا buf2Buf تمام مقادیر فیلدها، به جز فیلدهای سیستمی را در بافر جدید کپی میکند. اگر به جای آن از data() استفاده میکردید، رکورد جدید در حسابهای شرکت "com" درج میشد زیرا آن مقدار نیز در بافر جدید کپی میشد.
(در واقع، این منجر به خطای کلید تکراری میشد، اما این چیزی نیست که شما میخواهید).
مطالعه بیشتر
اگر از این پست لذت بردید، ممکن است این پیشنهادات را نیز بپسندید:
- نحوه تکرار بر روی عناصر Enum از کد X++ در Dynamics AX 2012
- استفاده از چارچوب SysExtension برای یافتن اینکه کدام زیر کلاس را در Dynamics AX 2012 نمونه سازی کنیم
- بررسی سریع Dynamics AX 2012 SysOperation Framework
