ההבדל בין נתונים() ל-buf2Buf() ב-Dynamics AX 2012
פורסם: 15 בפברואר 2025 בשעה 22:54:21 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" מכיוון שהערך הזה היה מועתק גם למאגר החדש.
(למעשה, זה היה גורם לשגיאת מפתח כפול, אבל זה גם לא מה שאתה רוצה).