Miklix

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

نُشرت: ١٦ فبراير ٢٠٢٥ م في ١:٢١:٣٦ ص 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 عامًا كمبرمج كمبيوتر/مطور برامج محترف ويعمل حاليًا بدوام كامل في إحدى شركات تكنولوجيا المعلومات الأوروبية الكبرى. عندما لا يقوم بالتدوين، يقضي وقت فراغه في مجموعة واسعة من الاهتمامات والهوايات والأنشطة، والتي قد تنعكس إلى حد ما في تنوع الموضوعات التي يغطيها هذا الموقع.