ההבדל בין נתונים() ל-buf2Buf() ב-Dynamics AX 2012
פורסם: 15 בפברואר 2025 בשעה 22:54:21 UTC
עודכן לאחרונה: 12 בינואר 2026 בשעה 8:41:17 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" מכיוון שערך זה היה מועתק גם למאגר החדש.
(למעשה, זה היה גורם לשגיאה של מפתח כפול, אבל גם זה לא מה שאתה רוצה).
קריאה נוספת
אם נהניתם מהפוסט הזה, אולי תאהבו גם את ההצעות הבאות:
- זיהוי מחלקת מסמכים ושאילתה עבור שירות AIF ב- Dynamics AX 2012
- כיצד לחזור על האלמנטים של Enum מקוד X++ ב- Dynamics AX 2012
- עיצוב מחרוזות עם מאקרו ו-strFmt ב- Dynamics AX 2012
