Miklix

שימוש בשאילתה במחלקת חוזה נתונים של SysOperation ב- Dynamics AX 2012

פורסם: 16 בפברואר 2025 בשעה 1:24:38 UTC
עודכן לאחרונה: 12 בינואר 2026 בשעה 8:47:28 UTC

מאמר זה דן בפרטים כיצד להוסיף שאילתה הניתנת להגדרה ולסינון על ידי המשתמש למחלקת חוזה נתונים של SysOperation ב-Dynamics AX 2012 (וב-Dynamics 365 for Operations)


עמוד זה תורגם במכונה מאנגלית על מנת להנגיש אותו לכמה שיותר אנשים. למרבה הצער, תרגום מכונה עדיין אינו טכנולוגיה משוכללת, ולכן עלולות להתרחש שגיאות. אם אתה מעדיף, תוכל לצפות בגרסה האנגלית המקורית כאן:

Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012

המידע בפוסט הזה מבוסס על Dynamics AX 2012 R3. ייתכן שהוא תקף או לא תקף עבור גרסאות אחרות. (עדכון: אני יכול לאשר שזה עובד גם על Dynamics 365 for Operations)

אני תמיד שוכח את הפרטים כיצד לציין ולאתחל שאילתה במסגרת SysOperation. אני מניח שרוב משימות האצווה שאני יוצר אינן מבוססות על שאילתות הניתנות להגדרה על ידי המשתמש, אבל מדי פעם אני כן צריך ליצור משימת אצווה כזו, אז הפוסט הזה הוא גם לעיוני האישי.

ראשית, במחלקת data contract, השאילתה תאוחסן כשהיא ארוזה במחרוזת. שיטת ה-parm שלה חייבת להיות מעוטרת בתכונה AifQueryTypeAttribute, כך (בדוגמה זו השתמשתי בשאילתת SalesUpdate, אך ניתן להחליף אותה בכל שאילתת AOT אחרת):

[
    DataMemberAttribute,
    AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
    ;

    packedQuery = _packedQuery;
    return packedQuery;
}

אם אתם רוצים שהשאילתה תוחלט על ידי מחלקת הבקר, תוכלו גם להשתמש במחרוזת ריקה. במקרה כזה, עליכם גם ליישם כמה מתודות עזר (שכנראה כדאי לכם ליישם בכל מקרה לנוחיותכם כשתצטרכו לגשת לשאילתה):

public Query getQuery()
{
    ;

    return new Query(SysOperationHelper::base64Decode(packedQuery));
}

public void setQuery(Query _query)
{
    ;

    packedQuery = SysOperationHelper::base64Encode(_query.pack());
}

אם עליך לאתחל את השאילתה (לדוגמה, להוסיף טווחים), עליך ליישם מתודה initQuery:

public void initQuery()
{
    Query queryLocal = this.getQuery();
    ;

    // add ranges, etc...

    this.setQuery(queryLocal);
}

עליך לוודא שאתה קורא לשיטה זו ממחלקת הבקר.

קריאה נוספת

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


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

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

על המחבר

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