Miklix

Përdorimi i një pyetjeje në një klasë të kontratës së të dhënave SysOperation në Dynamics AX 2012

Publikuar: 16 shkurt 2025 në 1:25:15 e paradites, UTC
Përditësimi i fundit: 12 janar 2026 në 8:47:34 e paradites, UTC

Ky artikull trajton detajet se si të shtoni një pyetje të konfigurueshme nga përdoruesi dhe të filtrueshme në një klasë kontrate të të dhënave SysOperation në Dynamics AX 2012 (dhe Dynamics 365 for Operations)


Kjo faqe u përkthye me makinë nga anglishtja për ta bërë të aksesueshme për sa më shumë njerëz. Fatkeqësisht, përkthimi me makinë nuk është ende një teknologji e përsosur, kështu që mund të ndodhin gabime. Nëse preferoni, mund ta shikoni versionin origjinal në anglisht këtu:

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

Informacioni në këtë postim bazohet në Dynamics AX 2012 R3. Mund të jetë ose jo i vlefshëm për versione të tjera. (Përditësim: Mund të konfirmoj që kjo funksionon edhe në Dynamics 365 for Operations)

Gjithmonë më duket se harroj detajet se si të specifikoj dhe inicializoj një pyetje në framework-un SysOperation. Mendoj se shumica e punëve në grup që kam bërë nuk bazohen në pyetje të konfigurueshme nga përdoruesi, por herë pas here më duhet të bëj një punë të tillë në grup, kështu që ky postim është edhe për referencën time.

Së pari, në klasën e kontratës së të dhënave, pyetja do të ruhet e paketuar në një varg. Metoda e saj parm duhet të dekorohet me atributin AifQueryTypeAttribute, kështu (në këtë shembull kam përdorur pyetjen SalesUpdate, por mund ta zëvendësoni këtë me çdo pyetje AOT):

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

    packedQuery = _packedQuery;
    return packedQuery;
}

Nëse dëshironi që pyetja të vendoset nga klasa e kontrolluesit, mund të përdorni edhe një varg bosh. Në këtë rast, duhet të implementoni edhe disa metoda ndihmëse (të cilat ndoshta duhet t'i implementoni gjithsesi për lehtësinë tuaj kur keni nevojë të qaseni te pyetja):

public Query getQuery()
{
    ;

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

public void setQuery(Query _query)
{
    ;

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

Nëse duhet të inicializoni pyetjen (për shembull, të shtoni diapazone), duhet të implementoni një metodë initQuery:

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

    // add ranges, etc...

    this.setQuery(queryLocal);
}

Duhet të siguroheni që ta thirrni këtë metodë nga klasa e kontrolluesit.

Lexime të mëtejshme

Nëse ju pëlqeu ky postim, mund t'ju pëlqejnë edhe këto sugjerime:


Shpërndaje në BlueskyShpërndaje në FacebookNdani në LinkedInShpërndaje në TumblrShpërndaje në XNdani në LinkedInPin në Pinterest

Mikkel Christensen

Rreth Autorit

Mikkel Christensen
Mikkel është krijuesi dhe pronari i miklix.com. Ai ka mbi 20 vjet përvojë si programues profesional kompjuteri/zhvillues softuerësh dhe aktualisht është i punësuar me kohë të plotë për një korporatë të madhe evropiane IT. Kur nuk bën blog, ai e kalon kohën e lirë në një gamë të gjerë interesash, hobish dhe aktivitetesh, të cilat mund të reflektohen në një farë mase në shumëllojshmërinë e temave të mbuluara në këtë faqe interneti.