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
Son yeniləmə: 12 yanvar 2026 at 08:47:42 UTC

Bu məqalədə Dynamics AX 2012 (və Dynamics 365 for Operations)-da SysOperation məlumat müqaviləsi sinfinə istifadəçi tərəfindən konfiqurasiya edilə bilən və süzgəcdən keçirilə bilən sorğunun necə əlavə ediləcəyi barədə ətraflı məlumat verilir.


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 ola bilər və ya olmaya bilər. (Yeniləmə: Bunun Dynamics 365 for Operations-da da işlədiyini təsdiqləyə bilərəm)

SysOperation çərçivəsində sorğunu necə təyin etmək və işə salmaq barədə təfərrüatları həmişə unuduram. Düşünürəm ki, yaratdığım toplu işlərin əksəriyyəti istifadəçi tərəfindən konfiqurasiya edilə bilən sorğulara əsaslanmır, amma ara-sıra belə toplu iş yaratmalı oluram, ona görə də bu yazı həm də mənim şəxsi istinadım üçündür.

Əvvəlcə, data contract sinifində sorğu sətirdə qablaşdırılmış şəkildə saxlanılacaq. Onun parm metodu AifQueryTypeAttribute atributu ilə bəzədilməlidir, məsələn (bu nümunədə SalesUpdate sorğusundan istifadə etdim, lakin 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 kontroller sinfi tərəfindən həll olunmasını istəyirsinizsə, boş bir sətirdən də istifadə edə bilərsiniz. Bu halda, bir neçə köməkçi metod tətbiq etməlisiniz (sorğuya daxil olmaq lazım olduqda öz rahatlığınız üçün onları tətbiq etməlisiniz):

public Query getQuery()
{
    ;

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

public void setQuery(Query _query)
{
    ;

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

Sorğunu başlatmaq lazımdırsa (məsələn, aralıqlar əlavə etmək), initQuery metodunu tətbiq etməlisiniz:

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

    // add ranges, etc...

    this.setQuery(queryLocal);
}

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

Əlavə Oxu

Bu yazı xoşunuza gəldisə, bu təklifləri də bəyənə bilərsiniz:


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

Mikkel Christensen

Müəllif haqqında

Mikkel 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.