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

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.


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

public Query getQuery()
{
    ;

    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:

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

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 Bang Christensen

A szerzőről

Mikkel Bang 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.