Miklix

Dynamics AX 2012-də SysOperation Data Müqavilə Sinifində Sorğunun İstifadəsi

Nəşr olundu: 16 fevral 2025 at 01:27:34 UTC

Bu məqalə Dynamics AX 2012-də (və Dynamics 365 for Operations) SysOperation məlumat müqaviləsi sinfinə istifadəçi tərəfindən konfiqurasiya edilə bilən və süzülə bilən sorğunun necə əlavə olunacağına dair təfərrüatları nəzərdən keçirir.


Bu səhifə mümkün qədər çox insan üçün əlçatan olması üçün ingilis dilindən maşın tərcümə edilib. Təəssüf ki, maşın tərcüməsi hələ mükəmməl texnologiya deyil, ona görə də səhvlər baş verə bilər. İstəyirsinizsə, orijinal ingilis versiyasına buradan baxa bilərsiniz:

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

Bu yazıdakı məlumat Dynamics AX 2012 R3-ə əsaslanır. Digər versiyalar üçün keçərli və ya olmaya bilər. (Yeniləmə: Bunun Dynamics 365 for Operations-da da işlədiyini təsdiq edə bilərəm)

SysOperation çərçivəsində sorğunun necə təyin edilməsi və işə salınması ilə bağlı təfərrüatları həmişə unuduram. Düşünürəm ki, mənim hazırladığım toplu işlərin əksəriyyəti istifadəçi tərəfindən konfiqurasiya edilə bilən sorğulara əsaslanmır, lakin hərdən və sonra belə bir toplu işi etməliyəm, ona görə də bu yazı da öz istinadım üçündür.

Birincisi, məlumat müqaviləsi sinfində sorğu sətirdə yığılmış şəkildə saxlanılacaq. Onun parm metodu AifQueryTypeAttribute atributu ilə bəzədilməlidir (bu nümunədə mən SalesUpdate sorğusundan istifadə etmişəm, lakin siz bunu istənilən AOT sorğusu ilə əvəz edə bilərsiniz):

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

    packedQuery = _packedQuery;
    return packedQuery;
}

Əgər sorğunun yerinə nəzarətçi sinfi tərəfindən qərar verilməsini istəyirsinizsə, boş sətirdən də istifadə edə bilərsiniz. Bu halda, siz həmçinin bir neçə köməkçi metod tətbiq etməlisiniz (sorğuya daxil olmaq lazım olduqda öz rahatlığınız üçün hər halda tətbiq etməlisiniz):

public Query getQuery()
{
    ;

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

public void setQuery(Query _query)
{
    ;

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

Əgər sorğunu işə salmaq lazımdırsa (məsələn, diapazonlar əlavə edin), initQuery metodunu tətbiq etməlisiniz:

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

    // add ranges, etc...

    this.setQuery(queryLocal);
}

Bu metodu nəzarətçi sinfindən çağırdığınızdan əmin olmalısınız.

Bluesky-də paylaşınFacebookda paylaşLinkedIn-də paylaşınTumblr-da paylaşınX-də paylaşınLinkedIn-də paylaşınPinterest-də Pin

Mikkel Bang Christensen

Müəllif haqqında

Mikkel Bang Christensen
Mikkel miklix.com saytının yaradıcısı və sahibidir. O, peşəkar kompüter proqramçısı/proqram təminatı tərtibatçısı kimi 20 ildən artıq təcrübəyə malikdir və hazırda böyük Avropa İT korporasiyasında tam iş günü işləyir. Bloq yazmayanda o, boş vaxtını geniş çeşidli maraqlara, hobbilərə və fəaliyyətlərə sərf edir ki, bu da müəyyən dərəcədə bu veb-saytda əhatə olunan müxtəlif mövzularda əks oluna bilər.