שימוש בשאילתה במחלקת חוזה נתונים של 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;
}
אם אתם רוצים שהשאילתה תוחלט על ידי מחלקת הבקר, תוכלו גם להשתמש במחרוזת ריקה. במקרה כזה, עליכם גם ליישם כמה מתודות עזר (שכנראה כדאי לכם ליישם בכל מקרה לנוחיותכם כשתצטרכו לגשת לשאילתה):
{
;
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
public void setQuery(Query _query)
{
;
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
אם עליך לאתחל את השאילתה (לדוגמה, להוסיף טווחים), עליך ליישם מתודה initQuery:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
עליך לוודא שאתה קורא לשיטה זו ממחלקת הבקר.
קריאה נוספת
אם נהניתם מהפוסט הזה, אולי תאהבו גם את ההצעות הבאות:
- זיהוי מחלקת מסמכים ושאילתה עבור שירות AIF ב- Dynamics AX 2012
- עיצוב מחרוזות עם מאקרו ו-strFmt ב- Dynamics AX 2012
- שימוש במסגרת SysExtension כדי לגלות איזו תת-מחלקה להפעיל ב- Dynamics AX 2012
