Miklix

Korišćenje upita u klasi ugovora o podacima SisOperation u Dinamics AKS KSNUMKS

Objavio: 19. mart 2025. 21:33:34 UTC

Ovaj članak se bavi detaljima o tome kako dodati upit koji se može konfigurisati i filtrirati u klasu ugovora o podacima SisOperation u Dinamics AKS KSNUMKS (i Dinamics KSNUMKS for Operations)


Ova stranica je mašinski prevedena sa engleskog jezika kako bi bila dostupna što većem broju ljudi. Nažalost, mašinsko prevođenje još uvek nije usavršena tehnologija, tako da može doći do grešaka. Ako želite, možete pogledati originalnu englesku verziju ovde:

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

Informacije u ovom postu zasnivaju se na Dynamics AX 2012 R3. Možda nisu validne za druge verzije. (Ažuriranje: mogu potvrditi da ovo takođe funkcioniše na Dynamics 365 za Operacije)

Čini se da uvek zaboravim detalje o tome kako da specifikujem i inicijalizujem upit u SysOperation okviru. Pretpostavljam da većina batch poslova koje sam pravio nije zasnovana na upitima koje korisnik može da konfiguriše, ali s vremena na vreme moram da napravim takav batch posao, pa je ovaj post takođe i za moju ličnu referencu.

Prvo, u klasi data contract-a, upit će biti smešten upakovan u string. Njegova parm metoda mora biti ukrašena atributom AifQueryTypeAttribute, kao što je prikazano (u ovom primeru koristim upit SalesUpdate, ali možete zameniti ovo bilo kojim AOT upitom):

[
    DataMemberAttribute,
    AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
    ;

    packedQuery = _packedQuery;
    return packedQuery;
}

Ukoliko želite da upit odluči kontrolerska klasa, takođe možete koristiti prazan string. U tom slučaju, takođe morate implementirati nekoliko pomoćnih metoda (koje biste verovatno trebali implementirati iz praktičnih razloga kada vam bude potrebno da pristupite upitu):

public Query getQuery()
{
    ;

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

public void setQuery(Query _query)
{
    ;

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

Ukoliko morate da inicijalizujete upit (na primer, dodate opsege), trebate implementirati metodu initQuery:

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

    // add ranges, etc...

    this.setQuery(queryLocal);
}

Morate se pobrinuti da pozovete ovu metodu iz kontrolerske klase.

Podeli na BlueskiPodeli na FejsbukuPodeli na LinkedInPodeli na TumblrPodeli na XPodeli na LinkedInPin na Pinterest

Mikkel Christensen

O autoru

Mikkel Christensen
Mikel je tvorac i vlasnik miklix.com. Ima preko 20 godina iskustva kao profesionalni kompjuterski programer / programer i trenutno je zaposlen sa punim radnim vremenom za veliku evropsku IT korporaciju. Kada ne bloguje, on provodi svoje slobodno vreme na širokom spektru interesovanja, hobija i aktivnosti, što se u određenoj meri može odraziti na različite teme koje se obrađuju na ovoj veb stranici.