Kyselyn käyttäminen SysOperation-tietosopimusluokassa Dynamics AX 2012:ssa
Julkaistu: 16. helmikuuta 2025 klo 1.22.21 UTC
Tässä artikkelissa käsitellään yksityiskohtia siitä, kuinka käyttäjän määritettävä ja suodatettava kysely lisätään Dynamics AX 2012:n (ja Dynamics 365 for Operationsin) SysOperation-tietosopimusluokkaan.
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
Tämän viestin tiedot perustuvat Dynamics AX 2012 R3:een. Se voi tai ei välttämättä ole voimassa muille versioille. (Päivitys: Voin vahvistaa, että tämä toimii myös Dynamics 365 for Operationsissa)
Näytän aina unohtavan yksityiskohdat kyselyn määrittämisestä ja alustamisesta SysOperation-kehyksessä. Luulen, että suurin osa tekemistäni erätöistä ei perustu käyttäjän konfiguroitaviin kyselyihin, mutta silloin tällöin minun on tehtävä tällainen erätyö, joten tämä postaus on myös omaksi viitteeksi.
Ensinnäkin datasopimusluokassa kysely tallennetaan pakattuna merkkijonoon. Sen parm-metodin on oltava koristeltu AifQueryTypeAttribute-attribuutilla, kuten näin (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, että kyselyn sen sijaan päättää ohjainluokka, voit käyttää myös tyhjää merkkijonoa. Siinä tapauksessa sinun on myös otettava käyttöön pari apumenetelmää (jotka sinun pitäisi luultavasti kuitenkin ottaa käyttöön oman mukavuuden vuoksi, kun haluat käyttää 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 ottaa käyttöön initQuery-metodi:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
Sinun on varmistettava, että kutsut tätä menetelmää ohjainluokasta.