Korištenje upita u klasi ugovora o podacima SysOperation u sustavu Dynamics AX 2012
Objavljeno: 16. veljače 2025. u 01:25:41 UTC
Ovaj članak govori o pojedinostima o tome kako dodati upit koji može konfigurirati korisnik i filtrirati u klasu ugovora o podacima SysOperation u sustavu Dynamics AX 2012 (i Dynamics 365 for Operations)
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
Informacije u ovom postu temelje se na Dynamics AX 2012 R3. Može, ali i ne mora vrijediti za druge verzije. (Ažuriranje: mogu potvrditi da ovo također radi na Dynamics 365 for Operations)
Čini se da uvijek zaboravljam pojedinosti o tome kako specificirati i inicijalizirati upit u okviru SysOperation. Pretpostavljam da se većina skupnih poslova koje radim ne temelji na upitima koje može konfigurirati korisnik, ali s vremena na vrijeme trebam napraviti takav skupni posao, tako da je ovaj post također za moju vlastitu referencu.
Prvo, u klasi ugovora o podacima, upit će biti pohranjen upakiran u niz. Njegova parm metoda mora biti ukrašena atributom AifQueryTypeAttribute, ovako (u ovom sam primjeru koristio upit SalesUpdate, ali ga možete zamijeniti bilo kojim AOT upitom):
DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
;
packedQuery = _packedQuery;
return packedQuery;
}
Ako umjesto toga želite da o upitu odlučuje klasa kontrolera, također možete koristiti prazan niz. U tom slučaju također trebate implementirati nekoliko pomoćnih metoda (koje biste vjerojatno trebali implementirati u svakom slučaju radi vlastite udobnosti kada trebate pristupiti upitu):
{
;
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
public void setQuery(Query _query)
{
;
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
Ako trebate inicijalizirati upit (na primjer, dodati raspone), trebali biste implementirati metodu initQuery:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
Morate biti sigurni da pozivate ovu metodu iz klase kontrolera.