Miklix

Notkun fyrirspurn í SysOperation Data Contract Class í Dynamics AX 2012

Birt: 19. mars 2025 kl. 21:33:31 UTC

Í þessari grein er farið yfir upplýsingarnar um hvernig á að bæta notandastillanlegri og síunarlegri fyrirspurn við SysOperation gagnasamningsflokk í Dynamics AX 2012 (og Dynamics 365 for Operations)


Þessi síða var vélþýdd úr ensku til að gera hana aðgengilega sem flestum. Því miður er vélþýðing ekki enn fullkomin tækni, svo villur geta komið upp. Ef þú vilt geturðu skoðað upprunalegu ensku útgáfuna hér:

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

Upplýsingarnar í þessari færslu byggja á Dynamics AX 2012 R3. Þær kunna að vera gildar eða ekki fyrir aðrar útgáfur. (Uppfærsla: Ég get staðfest að þetta virkar einnig á Dynamics 365 for Operations)

Ég virðist alltaf gleyma smáatriðunum um hvernig á að tilgreina og upphafna fyrirspurn í SysOperation rammaverk. Ég giska á að flestar lotuverkefnin sem ég hef búið til séu ekki byggðar á fyrirspurnum sem notandi getur stillt, en af og til þarf ég að búa til slík lotuverkefni, svo þessi færsla er einnig fyrir eigin tilvísun.

Fyrst, í gagnasamningaklassenum verður fyrirspurnin geymd sem strengur. Parm-aðferðin hennar þarf að vera skreytt með AifQueryTypeAttribute eiginleikanum, eins og hér (í þessu dæmi hef ég notað SalesUpdate fyrirspurnina, en þú getur skipt út þessari fyrirspurn fyrir hvaða AOT fyrirspurn sem er):

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

    packedQuery = _packedQuery;
    return packedQuery;
}

Ef þú vilt að fyrirspurnin verði ákvarðuð af stjórnunarclassanum í staðinn, getur þú einnig notað tóman streng. Í þeim tilfellum þarftu einnig að útfæra nokkrar hjálparaðferðir (sem þú ættir líklega að útfæra hvort sem er fyrir eigin þægindi þegar þú þarft aðgang að fyrirspurninni):

public Query getQuery()
{
    ;

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

public void setQuery(Query _query)
{
    ;

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

Ef þú þarft að upphafna fyrirspurnina (til dæmis bæta við sviðum), ættir þú að útfæra initQuery aðferð:

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

    // add ranges, etc...

    this.setQuery(queryLocal);
}

Þú þarft að ganga úr skugga um að kalla á þessa aðferð frá stjórnunarclassanum.

Deildu á BlueskyDeildu á FacebookDeildu á LinkedInDeildu á TumblrDeildu á XDeildu á LinkedInFestu á Pinterest

Mikkel Christensen

Um höfundinn

Mikkel Christensen
Mikkel er skapari og eigandi miklix.com. Hann hefur yfir 20 ára reynslu sem faglegur tölvuforritari/hugbúnaðarhönnuður og er nú í fullu starfi hjá stóru evrópsku upplýsingatæknifyrirtæki. Þegar hann er ekki að blogga eyðir hann frítíma sínum í margs konar áhugamál, áhugamál og athafnir, sem geta að einhverju leyti endurspeglast í margs konar efni sem fjallað er um á þessari vefsíðu.