Korištenje upita u klasi ugovora podataka SysOperation u Dynamics AX 2012
Objavljeno: 16. februar 2025. u 01:25:39 UTC
Ovaj članak prolazi kroz detalje o tome kako dodati korisnički konfigurabilan i filtriran upit u klasu ugovora o podacima SysOperation u 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 su zasnovane na Dynamics AX 2012 R3. Može ili ne mora vrijediti za druge verzije. (Ažuriranje: Mogu potvrditi da ovo radi i na Dynamics 365 for Operations)
Uvijek se čini da zaboravljam detalje o tome kako specificirati i inicijalizirati upit u SysOperation frameworku. Pretpostavljam da većina batch poslova koje sam pravio nisu zasnovani na korisnički konfigurabilnim upitima, ali s vremena na vrijeme moram napraviti takav batch posao, tako da je ovaj post također za moju referencu.
Prvo, u klasi ugovora podataka, upit će biti pohranjen upakovan u niz. Njegova parm metoda mora biti ukrašena atributom AifQueryTypeAttribute, kao što je tako (u ovom primjeru sam koristio SalesUpdate upit, 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 želite da upit bude odlučen od strane klase kontrolera umjesto toga, možete koristiti i prazan string. U tom slučaju, također morate implementirati nekoliko pomoćnih metoda (koje biste vjerojatno ionako trebali implementirati za vlastitu udobnost 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 opsege), trebali biste implementirati initQuery metodu:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
Morate se pobrinuti da pozovete ovu metodu iz klase kontrolera.