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
Ky artikull shqyrton detajet se si të shtoni një pyetje të konfigurueshme dhe të filtrueshme nga përdoruesi në një klasë të kontratës së të dhënave SysOperation në Dynamics AX 2012 (dhe Dynamics 365 for Operations)
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 e vlefshme për versionet e tjera. (Përditësim: Mund të konfirmoj se kjo funksionon edhe në Dynamics 365 for Operations)
Gjithmonë duket se harroj detajet se si të specifikoj dhe inicializoj një pyetje në kornizën SysOperation. Unë mendoj se shumica e punëve të grumbulluara 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ë grupore, kështu që ky postim është gjithashtu 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ë zbukurohet me atributin AifQueryTypeAttribute, si kjo (në këtë shembull unë kam përdorur pyetjen SalesUpdate, por ju 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 gjithashtu një varg bosh. Në këtë rast, ju gjithashtu duhet të zbatoni disa metoda ndihmëse (të cilat ndoshta duhet t'i zbatoni gjithsesi për lehtësinë tuaj kur keni nevojë të përdorni pyetjen):
{
;
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
public void setQuery(Query _query)
{
;
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
Nëse keni nevojë të inicializoni pyetjen (për shembull, shtoni vargje), duhet të zbatoni një metodë initQuery:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
Duhet të siguroheni që ta thërrisni këtë metodë nga klasa e kontrolluesit.