Miklix

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.


Ezt az oldalt angolból gépi fordítással készítettük, hogy minél több ember számára elérhető legyen. Sajnos a gépi fordítás még nem tökéletes technológia, ezért előfordulhatnak hibák. Ha szeretné, itt megtekintheti az eredeti angol nyelvű változatot:

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):

public Query getQuery()
{
    ;

    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:

public void initQuery()
{
    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:


Oszd meg a Bluesky-nOszd meg a FacebookonOszd meg a LinkedIn-enOszd meg a Tumblr-enOszd meg X-enOszd meg a LinkedIn-enPin a Pinteresten

Mikkel Christensen

A szerzőről

Mikkel Christensen
Mikkel a miklix.com létrehozója és tulajdonosa. Több mint 20 éves tapasztalattal rendelkezik, mint hivatásos számítógépes programozó/szoftverfejlesztő, és jelenleg teljes munkaidőben dolgozik egy nagy európai informatikai vállalatnál. Amikor nem blogol, szabadidejét érdeklődési körének, hobbijainak és tevékenységeinek széles skálájával tölti, ami bizonyos mértékig tükröződhet a weboldalon tárgyalt témák sokféleségében.