Miklix

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

Avaldatud: 16. veebruar 2025, kell 01:22:19 UTC

Selles artiklis käsitletakse üksikasju selle kohta, kuidas rakenduses Dynamics AX 2012 (ja Dynamics 365 for Operations) SysOperationi andmelepingu klassi lisada kasutaja konfigureeritav ja filtreeritav päring.


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

Selles postituses olev teave põhineb Dynamics AX-i 2012 R3-l. See võib teiste versioonide jaoks kehtida, kuid ei pruugi kehtida. (Värskendus: võin kinnitada, et see töötab ka rakendusega Dynamics 365 for Operations)

Tundub, et ma unustan alati üksikasjad selle kohta, kuidas SysOperationi raamistikus päringut täpsustada ja lähtestada. Ma arvan, et enamik minu tehtud pakktöid ei põhine kasutaja seadistatavatel päringutel, kuid aeg-ajalt on mul vaja selline pakktöö teha, nii et see postitus on ka minu enda jaoks.

Esiteks, andmelepingu klassis salvestatakse päring pakituna stringi. Selle parm-meetod peab olema kaunistatud atribuudiga AifQueryTypeAttribute, nagu näiteks (selles näites olen kasutanud päringut SalesUpdate, kuid saate selle 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 üle otsustaks hoopis kontrolleriklass, võite kasutada ka tühja stringi. Sel juhul peate rakendama ka paar abimeetodit (mida peaksite päringule juurdepääsu huvides oma mugavuse huvides siiski rakendama):

public Query getQuery()
{
    ;

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

public void setQuery(Query _query)
{
    ;

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

Kui teil on vaja päring lähtestada (näiteks lisada vahemikud), peaksite rakendama initQuery meetodi:

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

    // add ranges, etc...

    this.setQuery(queryLocal);
}

Peate selle meetodi kindlasti kontrolleriklassist kutsuma.

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

Mikkel Bang Christensen

Autorist

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