Miklix

استخدام استعلام في فئة عقد بيانات SysOperation في Dynamics AX 2012

نُشرت: ١٦ فبراير ٢٠٢٥ م في ١:٢١:٣٦ ص UTC
آخر تحديث: ١٢ يناير ٢٠٢٦ م في ٨:٤٧:٠٣ ص 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. أعتقد أن معظم مهام المعالجة الدفعية التي أنشئها لا تعتمد على استعلامات قابلة للتخصيص من قِبل المستخدم، ولكنني أحتاج بين الحين والآخر إلى إنشاء مثل هذه المهام، لذا فإن هذه التدوينة هي أيضًا مرجع لي.

أولاً، في فئة عقد البيانات، سيتم تخزين الاستعلام مُجمّعًا في سلسلة نصية. يجب تزيين دالة 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);
}

يجب التأكد من استدعاء هذه الطريقة من فئة المتحكم.

قراءات إضافية

إذا أعجبك هذا المنشور، فقد تعجبك أيضًا هذه الاقتراحات:


شارك على بلوسكايشارك على الفيسبوكشارك على لينكدإنشارك على تمبلرشارك على إكسشارك على لينكدإنثبت على بينتريست

ميكيل كريستنسن

عن المؤلف

ميكيل كريستنسن
ميكيل هو مؤسس ومالك موقع miklix.com. يتمتع بخبرة تزيد عن 20 عامًا كمبرمج كمبيوتر/مطور برامج محترف ويعمل حاليًا بدوام كامل في إحدى شركات تكنولوجيا المعلومات الأوروبية الكبرى. عندما لا يقوم بالتدوين، يقضي وقت فراغه في مجموعة واسعة من الاهتمامات والهوايات والأنشطة، والتي قد تنعكس إلى حد ما في تنوع الموضوعات التي يغطيها هذا الموقع.