Miklix

Päringu kasutamine SysOperationi andmelepinguklassis Dynamics AX-i 2012-s

Avaldatud: 16. veebruar 2025, kell 01:22:19 UTC
Viimati uuendatud: 12. jaanuar 2026, kell 08:47:08 UTC

See artikkel annab ülevaate sellest, kuidas lisada kasutaja konfigureeritav ja filtreeritav päring SysOperationi andmelepingu klassi Dynamics AX 2012-s (ja Dynamics 365 for Operationsis).


See lehekülg on inglise keelest masintõlgitud, et muuta see võimalikult paljudele inimestele kättesaadavaks. Kahjuks ei ole masintõlge veel täiuslik tehnoloogia, mistõttu võivad esineda vead. Kui soovite, võite vaadata ingliskeelset originaalversiooni siin:

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

Selle postituse teave põhineb Dynamics AX 2012 R3-l. See ei pruugi kehtida teiste versioonide puhul. (Uuendus: võin kinnitada, et see töötab ka Dynamics 365 for Operationsis)

Ma unustan alati ära üksikasjad selle kohta, kuidas SysOperationi raamistikus päringut määrata ja initsialiseerida. Ma arvan, et enamik minu tehtud pakktöötlusi ei põhine kasutaja poolt konfigureeritavatel päringutel, aga aeg-ajalt on mul vaja selliseid pakktöötlusi teha, seega on see postitus ka minu enda tutvustuseks.

Esiteks salvestatakse päring andmelepingu klassis stringina pakituna. Selle parm-meetod peab olema kaunistatud atribuudiga AifQueryTypeAttribute, näiteks nii (selles näites olen kasutanud päringut SalesUpdate, aga selle saab asendada mis tahes AOT-päringuga):

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

    packedQuery = _packedQuery;
    return packedQuery;
}

Kui soovite, et päringu otsustaks hoopis kontrolleriklass, võite kasutada ka tühja stringi. Sellisel juhul peate rakendama ka paar abimeetodit (mida peaksite ilmselt niikuinii oma mugavuse huvides rakendama, kui teil on vaja päringule ligi pääseda):

public Query getQuery()
{
    ;

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

public void setQuery(Query _query)
{
    ;

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

Päringu initsialiseerimiseks (näiteks vahemike lisamiseks) peaksite rakendama initQuery meetodi:

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

    // add ranges, etc...

    this.setQuery(queryLocal);
}

Peate kindlasti kutsuma seda meetodit kontrolleriklassist.

Lisalugemist

Kui see postitus teile meeldis, võivad teile meeldida ka need soovitused:


Jagage Bluesky'sJaga FacebookisJagage LinkedInisJaga TumblrisJaga X-isJagage LinkedInisKinnitage Pinterestis

Mikkel Christensen

Autorist

Mikkel Christensen
Mikkel on miklix.com looja ja omanik. Tal on üle 20 aasta kogemust professionaalse programmeerija/tarkvaraarendajana ning praegu töötab ta täiskohaga suures Euroopa IT-ettevõttes. Kui ta ei kirjuta blogi, veedab ta oma vaba aega mitmesuguste huvide, hobide ja tegevustega, mis võib mingil määral kajastuda sellel veebisaidil käsitletavate teemade mitmekesisuses.