Kyselyn käyttäminen SysOperation-tietosopimusluokassa Dynamics AX 2012:ssa
Julkaistu: 16. helmikuuta 2025 klo 1.22.21 UTC
Viimeksi päivitetty: 12. tammikuuta 2026 klo 8.47.08 UTC
Tässä artikkelissa käsitellään käyttäjän määrittämän ja suodatettavan kyselyn lisäämistä SysOperation-tietosopimusluokkaan Dynamics AX 2012:ssa (ja Dynamics 365 for Operationsissa).
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
Tämän viestin tiedot perustuvat Dynamics AX 2012 R3:een. Ne eivät välttämättä päde muihin versioihin. (Päivitys: Voin vahvistaa, että tämä toimii myös Dynamics 365 for Operationsissa)
Minulta tuntuu aina unohtuvan yksityiskohdat siitä, miten kysely määritetään ja alustetaan SysOperation-kehyksessä. Luulen, että useimmat tekemäni erätyöt eivät perustu käyttäjän määrittämiin kyselyihin, mutta silloin tällöin minun on tehtävä tällainen erätyö, joten tämä viesti on myös omaksi tiedoksi.
Ensinnäkin data contract -luokassa kysely tallennetaan pakattuna merkkijonoon. Sen parm-metodi on varustettava AifQueryTypeAttribute-attribuutilla, kuten tässä esimerkissä (tässä esimerkissä olen käyttänyt SalesUpdate-kyselyä, mutta voit korvata sen millä tahansa AOT-kyselyllä):
DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
;
packedQuery = _packedQuery;
return packedQuery;
}
Jos haluat kyselyn päättävän kontroller-luokan sijaan, voit käyttää myös tyhjää merkkijonoa. Tässä tapauksessa sinun on myös toteutettava pari apumetodia (jotka sinun luultavasti kannattaa toteuttaa joka tapauksessa oman mukavuutesi vuoksi, kun sinun on käytettävä kyselyä):
{
;
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
public void setQuery(Query _query)
{
;
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
Jos sinun on alustettava kysely (esimerkiksi lisättävä alueita), sinun tulee toteuttaa initQuery-metodi:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
Sinun on varmistettava, että kutsut tätä metodia controller-luokasta.
Lisälukemista
Jos pidit tästä postauksesta, saatat pitää myös näistä ehdotuksista:
- Virhe "Datasopimusobjektille ei ole määritetty metatietoluokkaa" Dynamics AX 2012:ssa
- SysExtension Frameworkin käyttäminen Dynamics AX 2012:ssa luotavan alaluokan selvittämiseen
- Ero data():n ja buf2Buf():n välillä Dynamics AX 2012:ssa
