Miklix

تفاوت بین داده() و 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 کپی کنید، به طور سنتی کاری مانند زیر انجام می‌دهید:

toTable.data(fromTable);

این روش به خوبی کار می‌کند و در بیشتر موارد، بهترین راه است.

با این حال، شما می‌توانید به جای آن از تابع buf2Buf نیز استفاده کنید:

buf2Buf(fromTable, toTable);

این هم خوب کار می‌کند. پس چه فرقی دارد؟

تفاوت این است که buf2Buf فیلدهای سیستم را کپی نمی‌کند. فیلدهای سیستم شامل فیلدهایی مانند RecId، TableId و شاید از همه مهم‌تر در این زمینه، DataAreaId هستند. دلیل اینکه مورد دوم از همه مهم‌تر است این است که رایج‌ترین موردی که شما به جای data() از buf2Buf() استفاده می‌کنید، هنگام کپی کردن رکوردها بین حساب‌های شرکت است، که معمولاً با استفاده از کلمه کلیدی changeCompany انجام می‌شود.

برای مثال، اگر در شرکت "dat" هستید و شرکت دیگری به نام "com" دارید که می‌خواهید تمام رکوردهای CustTable را از آن کپی کنید:

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

در این حالت، این روش کار خواهد کرد زیرا buf2Buf تمام مقادیر فیلدها، به جز فیلدهای سیستمی را در بافر جدید کپی می‌کند. اگر به جای آن از data() استفاده می‌کردید، رکورد جدید در حساب‌های شرکت "com" درج می‌شد زیرا آن مقدار نیز در بافر جدید کپی می‌شد.

(در واقع، این منجر به خطای کلید تکراری می‌شد، اما این چیزی نیست که شما می‌خواهید).

مطالعه بیشتر

اگر از این پست لذت بردید، ممکن است این پیشنهادات را نیز بپسندید:


در Bluesky به اشتراک بگذاریددر فیسبوک به اشتراک بگذاریددر لینکدین به اشتراک بگذاریددر Tumblr به اشتراک بگذاریددر X به اشتراک بگذاریددر لینکدین به اشتراک بگذاریدپین در پینترست

میکل کریستنسن

درباره نویسنده

میکل کریستنسن
مایکل خالق و صاحب miklix.com است. او بیش از 20 سال تجربه به عنوان یک برنامه نویس حرفه ای کامپیوتر / توسعه دهنده نرم افزار دارد و در حال حاضر به طور تمام وقت برای یک شرکت بزرگ فناوری اطلاعات اروپایی مشغول به کار است. هنگامی که وبلاگ نویسی نمی کند، اوقات فراغت خود را صرف مجموعه وسیعی از علایق، سرگرمی ها و فعالیت ها می کند، که ممکن است تا حدی در موضوعات مختلف پوشش داده شده در این وب سایت منعکس شود.