الفرق بين data() و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. تكمن أهمية الأخير في أن الحالة الأكثر شيوعًا لاستخدام buf2Buf() بدلًا من data() هي عند تكرار السجلات بين حسابات الشركة، عادةً باستخدام الكلمة المفتاحية changeCompany.
على سبيل المثال، إذا كنت تعمل في شركة "dat" ولديك شركة أخرى تسمى "com" وترغب في نسخ جميع السجلات الموجودة في جدول العملاء (CustTable) منها:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
في هذه الحالة، ستنجح العملية لأن دالة buf2Buf تنسخ جميع قيم الحقول، باستثناء حقول النظام، إلى المخزن المؤقت الجديد. لو استخدمت دالة data() بدلاً من ذلك، لكان السجل الجديد قد أُدرج في حسابات شركة "com" لأن تلك القيمة كانت ستُنسخ إلى المخزن المؤقت الجديد أيضاً.
(في الواقع، كان ذلك سيؤدي إلى خطأ في المفتاح المكرر، لكن هذا ليس ما تريده أيضًا).
قراءات إضافية
إذا أعجبك هذا المنشور، فقد تعجبك أيضًا هذه الاقتراحات:
- خطأ "لم يتم تعريف فئة بيانات تعريفية لكائن عقد البيانات" في Dynamics AX 2012
- استخدام استعلام في فئة عقد بيانات SysOperation في Dynamics AX 2012
- نظرة عامة سريعة على إطار عمل Dynamics AX 2012 SysOperation
