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
Utolsó frissítés: 2026. január 12. 8:47:09 UTC
Ez a cikk részletesen ismerteti, hogyan adhat hozzá felhasználó által konfigurálható és szűrhető lekérdezést egy SysOperation adatszerződés-osztályhoz 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 verzión alapulnak. Előfordulhat, hogy más verziókra nem érvényesek. (Frissítés: Megerősíthetem, hogy ez a Dynamics 365 for Operations rendszeren is működik.)
Mindig elfelejtem a SysOperation keretrendszerben a lekérdezések megadásának és inicializálásának részleteit. Gondolom, a legtöbb kötegelt feladat, amit készítettem, nem felhasználó által konfigurálható lekérdezéseken alapul, de időnként szükségem van ilyen kötegelt feladatokra, így ez a bejegyzés saját referenciának is szolgál.
Először is, az adatszerződés osztályban a lekérdezés karakterláncba csomagolva tárolódik. A parm metódusát az AifQueryTypeAttribute attribútummal kell ellátni, így (ebben a példában a SalesUpdate lekérdezést használtam, de ezt bármilyen AOT lekérdezéssel helyettesíthetjük):
DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
;
packedQuery = _packedQuery;
return packedQuery;
}
Ha azt szeretnéd, hogy a lekérdezést a vezérlő osztály döntse el, akkor üres karakterláncot is használhatsz. Ebben az esetben néhány segítő metódust is meg kell valósítanod (amelyeket valószínűleg egyébként is meg kellene valósítanod a saját kényelmed érdekében, amikor a lekérdezéshez hozzáférned kell):
{
;
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
public void setQuery(Query _query)
{
;
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
Ha inicializálni kell a lekérdezést (például tartományokat kell hozzáadni), akkor implementálnia kell egy initQuery metódust:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
Ügyelned kell arra, hogy ezt a metódust a vezérlő osztályból hívd meg.
További olvasmányok
Ha tetszett ez a bejegyzés, akkor ezek a javaslatok is érdekelhetik:
- Karakterláncformázás makróval és strFmt-vel a Dynamics AX 2012-ben
- A Dynamics AX 2012 SysOperation Framework gyors áttekintése
- Töröljön egy jogi személyt (vállalati fiókokat) a Dynamics AX 2012-ben
