Miklix

الفرق بين data() و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، فمن التقليدي أن تفعل شيئًا مثل:

toTable.data(fromTable);

هذا يعمل بشكل جيد وفي معظم الحالات هو الطريق الصحيح.

ومع ذلك، لديك أيضًا خيار استخدام الدالة buf2Buf بدلاً من ذلك:

buf2Buf(fromTable, toTable);

هذا يعمل بشكل جيد أيضًا. فما الفرق إذن؟

الفرق هو أن buf2Buf لا ينسخ حقول النظام. تتضمن حقول النظام حقولاً مثل RecId وTableId وربما الأهم في هذا السياق، DataAreaId. والسبب في كون الأخير هو الأكثر أهمية هو أن الحالة الأكثر شيوعًا حيث تستخدم buf2Buf() بدلاً من data() هي عند تكرار السجلات بين حسابات الشركة، عادةً باستخدام الكلمة الأساسية changeCompany.

على سبيل المثال، إذا كنت تعمل في شركة "dat" ولديك شركة أخرى تسمى "com" وترغب في نسخ كافة السجلات الموجودة في CustTable منها:

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

في هذه الحالة، سيعمل ذلك لأن buf2Buf ينسخ جميع قيم الحقول، باستثناء حقول النظام، إلى المخزن المؤقت الجديد. إذا استخدمت data() بدلاً من ذلك، فسيتم إدراج السجل الجديد في حسابات الشركة "com" لأن هذه القيمة سيتم نسخها إلى المخزن المؤقت الجديد أيضًا.

(في الواقع، كان من الممكن أن يؤدي ذلك إلى خطأ مفتاح مكرر، ولكن هذا ليس ما تريده أيضًا).

شارك على بلوسكايشارك على الفيسبوكشارك على لينكدإنشارك على تمبلرشارك على إكسشارك على لينكدإنثبت على بينتريست

ميكيل بانج كريستنسن

عن المؤلف

ميكيل بانج كريستنسن
ميكيل هو مؤسس ومالك موقع miklix.com. يتمتع بخبرة تزيد عن 20 عامًا كمبرمج كمبيوتر/مطور برامج محترف ويعمل حاليًا بدوام كامل في إحدى شركات تكنولوجيا المعلومات الأوروبية الكبرى. عندما لا يقوم بالتدوين، يقضي وقت فراغه في مجموعة واسعة من الاهتمامات والهوايات والأنشطة، والتي قد تنعكس إلى حد ما في تنوع الموضوعات التي يغطيها هذا الموقع.