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)
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):
{
;
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ð:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
Þú þarft að ganga úr skugga um að kalla á þessa aðferð frá stjórnunarclassanum.