Uporaba poizvedbe v podatkovnem pogodbenem razredu SysOperation v Dynamics AX 2012
Objavljeno: 16. februar 2025 ob 1:23:07 dop. UTC
Nazadnje posodobljeno: 12. januar 2026 ob 8:47:20 dop. UTC
Ta članek podrobno opisuje, kako dodati uporabniško konfigurirano in filtrirano poizvedbo razredu podatkovnih pogodb SysOperation v programu Dynamics AX 2012 (in Dynamics 365 for Operations).
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
Informacije v tej objavi temeljijo na programu Dynamics AX 2012 R3. Morda veljajo za druge različice, morda pa tudi ne. (Posodobitev: Lahko potrdim, da to deluje tudi v programu Dynamics 365 for Operations.)
Vedno pozabim podrobnosti o tem, kako določiti in inicializirati poizvedbo v ogrodju SysOperation. Predvidevam, da večina paketnih opravil, ki sem jih izvajal, ne temelji na uporabniško konfiguriranih poizvedbah, vendar občasno moram narediti takšno paketno opravilo, zato je ta objava tudi za mojo lastno referenco.
Najprej bo v razredu podatkovnih pogodb poizvedba shranjena zapakirana v nizu. Njena metoda parm mora biti opremljena z atributom AifQueryTypeAttribute, takole (v tem primeru sem uporabil poizvedbo SalesUpdate, vendar jo lahko zamenjate s katero koli poizvedbo AOT):
DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
;
packedQuery = _packedQuery;
return packedQuery;
}
Če želite, da poizvedbo namesto tega določi razred krmilnika, lahko uporabite tudi prazen niz. V tem primeru morate implementirati tudi nekaj pomožnih metod (ki jih verjetno vseeno morate implementirati za lastno udobje, ko potrebujete dostop do poizvedbe):
{
;
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
public void setQuery(Query _query)
{
;
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
Če morate inicializirati poizvedbo (na primer dodati obsege), morate implementirati metodo initQuery:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
To metodo morate poklicati iz razreda krmilnika.
Nadaljnje branje
Če vam je bila ta objava všeč, vam bodo morda všeč tudi ti predlogi:
- Razlika med data() in buf2Buf() v Dynamics AX 2012
- Kako ponoviti elemente enuma iz kode X++ v Dynamics AX 2012
- Oblikovanje nizov z makri in strFmt v Dynamics AX 2012
