Lekérdezés használata SysOperation adatszerződési osztályban a Dynamics AX 2012-ben
Megjelent: 2025. február 16. 1:22:23 UTC
Ez a cikk a felhasználó által konfigurálható és szűrhető lekérdezések SysOperation adatszerződés-osztályhoz való hozzáadásának részleteit tárgyalja a Dynamics AX 2012 (és a Dynamics 365 for Operations) rendszerben.
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
A bejegyzésben található információk a Dynamics AX 2012 R3-on alapulnak. Lehet, hogy más verziókra érvényes, de lehet, hogy nem. (Frissítés: Megerősíthetem, hogy ez a Dynamics 365 for Operations rendszeren is működik)
Úgy tűnik, mindig elfelejtem a lekérdezések SysOperation keretrendszerben történő megadásának és inicializálásának részleteit. Feltételezem, hogy az általam készített kötegelt feladatok többsége nem a felhasználó által konfigurálható lekérdezéseken alapul, de időnként szükségem van egy ilyen kötegelt munkára, ezért ez a bejegyzés saját referenciaként szolgál.
Először is, az adatszerződés osztályban a lekérdezés egy karakterláncba csomagolva kerül tárolásra. A parm metódusát az AifQueryTypeAttribute attribútummal kell díszíteni, például (ebben a példában a SalesUpdate lekérdezést használtam, de ezt bármilyen AOT lekérdezéssel helyettesítheti):
DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
;
packedQuery = _packedQuery;
return packedQuery;
}
Ha azt szeretné, hogy a lekérdezést helyette a vezérlő osztály döntse el, használhat üres karakterláncot is. Ebben az esetben meg kell valósítania néhány segédmódszert is (amelyeket valószínűleg mindenképpen végre kell hajtania a saját kényelme érdekében, amikor el kell érnie a lekérdezést):
{
;
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
public void setQuery(Query _query)
{
;
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
Ha inicializálnia kell a lekérdezést (például tartományokat kell hozzáadnia), akkor egy initQuery metódust kell megvalósítania:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
Győződjön meg arról, hogy ezt a metódust a vezérlő osztályból hívja meg.