Miklix

ההבדל בין נתונים() ל-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, באופן מסורתי היית עושה משהו כזה:

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" מכיוון שערך זה היה מועתק גם למאגר החדש.

(למעשה, זה היה גורם לשגיאה של מפתח כפול, אבל גם זה לא מה שאתה רוצה).

קריאה נוספת

אם נהניתם מהפוסט הזה, אולי תאהבו גם את ההצעות הבאות:


שתפו בבלוסקישתפו בפייסבוקשתפו בלינקדאיןשתפו ב-Tumblrשתפו ב-Xשתפו בלינקדאיןהצמד בפינטרסט

מיקל כריסטנסן

על המחבר

מיקל כריסטנסן
מיקל הוא היוצר והבעלים של miklix.com. יש לו למעלה מ-20 שנות ניסיון כמתכנת מחשבים/מפתח תוכנה מקצועי וכיום הוא מועסק במשרה מלאה בתאגיד IT אירופאי גדול. כשהוא לא כותב בלוג, הוא מבלה את זמנו הפנוי במגוון עצום של תחומי עניין, תחביבים ופעילויות, שעשויים לבוא לידי ביטוי במידה מסוימת במגוון הנושאים המכוסים באתר זה.