تفاوت بین داده() و buf2Buf() در Dynamics AX 2012
منتشر شده: ۱۵ فوریهٔ ۲۰۲۵ ساعت ۲۲:۵۴:۱۸ (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 است. دلیل مهمترین دلیل دومی این است که معمولترین حالتی که میتوانید از buf2Buf() به جای data() استفاده کنید، هنگام کپی کردن رکوردها بین حسابهای شرکت است، معمولاً با استفاده از کلمه کلیدی changeCompany.
به عنوان مثال، اگر در شرکت "dat" هستید و شرکت دیگری به نام "com" دارید که می خواهید تمام رکوردهای CustTable را از آن کپی کنید:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
در این مورد، کار خواهد کرد زیرا buf2Buf تمام مقادیر فیلد، به جز فیلدهای سیستم را در بافر جدید کپی می کند. اگر به جای آن از data() استفاده میکردید، رکورد جدید در حسابهای شرکت «com» درج میشد، زیرا آن مقدار در بافر جدید نیز کپی میشد.
(در واقع، منجر به یک خطای کلید تکراری می شد، اما این چیزی نیست که شما می خواهید).