Gebruik 'n navraag in 'n SysOperation-datakontrakklas in Dynamics AX 2012
Gepubliseer: 16 Februarie 2025 om 01:25:16 UTC
Laas opgedateer: 12 Januarie 2026 om 08:47:34 UTC
Hierdie artikel gaan oor die besonderhede oor hoe om 'n gebruikerskonfigureerbare en filtreerbare navraag by 'n SysOperation-datakontrakklas in Dynamics AX 2012 (en Dynamics 365 for Operations) te voeg.
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
Die inligting in hierdie plasing is gebaseer op Dynamics AX 2012 R3. Dit mag dalk geldig wees vir ander weergawes, maar ook nie. (Opdatering: Ek kan bevestig dat dit ook op Dynamics 365 for Operations werk)
Ek vergeet altyd die besonderhede oor hoe om 'n navraag in die SysOperation-raamwerk te spesifiseer en te initialiseer. Ek dink die meeste van die bondeltake wat ek gemaak het, is nie gebaseer op gebruikerskonfigureerbare navrae nie, maar nou en dan moet ek so 'n bondeltaak maak, so hierdie plasing is ook vir my eie verwysing.
Eerstens, in die datakontrakklas, sal die navraag in 'n string gestoor word. Die parm-metode moet versier word met die AifQueryTypeAttribute-attribuut, soos volg (in hierdie voorbeeld het ek die SalesUpdate-navraag gebruik, maar jy kan dit met enige AOT-navraag vervang):
DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
;
packedQuery = _packedQuery;
return packedQuery;
}
As jy wil hê dat die navraag eerder deur die beheerderklas bepaal word, kan jy ook 'n leë string gebruik. In daardie geval moet jy ook 'n paar hulpmetodes implementeer (wat jy waarskynlik in elk geval vir jou eie gerief moet implementeer wanneer jy toegang tot die navraag benodig):
{
;
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
public void setQuery(Query _query)
{
;
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
As jy die navraag moet initialiseer (byvoorbeeld, reekse byvoeg), moet jy 'n initQuery-metode implementeer:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
Jy moet seker maak dat jy hierdie metode vanaf die beheerderklas aanroep.
Verdere Leeswerk
As jy hierdie plasing geniet het, sal jy dalk ook van hierdie voorstelle hou:
- Bel AIF-dokumentdienste direk vanaf X ++ in Dynamics AX 2012
- Dynamics AX 2012 SysOperation Framework Vinnige oorsig
- Vee 'n Regsentiteit (Maatskappyrekeninge) in Dynamics AX 2012 uit
