Miklix

Korištenje upita u klasi ugovora o podacima SysOperation u sustavu Dynamics AX 2012

Objavljeno: 16. veljače 2025. u 01:25:41 UTC

Ovaj članak govori o pojedinostima o tome kako dodati upit koji može konfigurirati korisnik i filtrirati u klasu ugovora o podacima SysOperation u sustavu Dynamics AX 2012 (i Dynamics 365 for Operations)


Ova je stranica strojno prevedena s engleskog kako bi bila dostupna što većem broju ljudi. Nažalost, strojno prevođenje još nije usavršena tehnologija pa se mogu pojaviti pogreške. Ako želite, izvornu englesku verziju možete pogledati ovdje:

Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012

Informacije u ovom postu temelje se na Dynamics AX 2012 R3. Može, ali i ne mora vrijediti za druge verzije. (Ažuriranje: mogu potvrditi da ovo također radi na Dynamics 365 for Operations)

Čini se da uvijek zaboravljam pojedinosti o tome kako specificirati i inicijalizirati upit u okviru SysOperation. Pretpostavljam da se većina skupnih poslova koje radim ne temelji na upitima koje može konfigurirati korisnik, ali s vremena na vrijeme trebam napraviti takav skupni posao, tako da je ovaj post također za moju vlastitu referencu.

Prvo, u klasi ugovora o podacima, upit će biti pohranjen upakiran u niz. Njegova parm metoda mora biti ukrašena atributom AifQueryTypeAttribute, ovako (u ovom sam primjeru koristio upit SalesUpdate, 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 umjesto toga želite da o upitu odlučuje klasa kontrolera, također možete koristiti prazan niz. U tom slučaju također trebate implementirati nekoliko pomoćnih metoda (koje biste vjerojatno trebali implementirati u svakom slučaju radi vlastite udobnosti kada trebate pristupiti upitu):

public Query getQuery()
{
    ;

    return new Query(SysOperationHelper::base64Decode(packedQuery));
}

public void setQuery(Query _query)
{
    ;

    packedQuery = SysOperationHelper::base64Encode(_query.pack());
}

Ako trebate inicijalizirati upit (na primjer, dodati raspone), trebali biste implementirati metodu initQuery:

public void initQuery()
{
    Query queryLocal = this.getQuery();
    ;

    // add ranges, etc...

    this.setQuery(queryLocal);
}

Morate biti sigurni da pozivate ovu metodu iz klase kontrolera.

Podijeli na BlueskyPodijelite na FacebookuPodijelite na LinkedInuPodijelite na TumblrPodijeli na XPodijelite na LinkedInuPrikvači na Pinterest

Mikkel Bang Christensen

O autoru

Mikkel Bang Christensen
Mikkel je kreator i vlasnik miklix.com. Ima više od 20 godina iskustva kao profesionalni računalni programer/razvijač softvera i trenutno je zaposlen na puno radno vrijeme za veliku europsku IT korporaciju. Kada ne piše blog, svoje slobodno vrijeme provodi na široku lepezu interesa, hobija i aktivnosti, što se u određenoj mjeri može odraziti na različite teme obrađene na ovoj web stranici.