Коришћење упита у класи уговора СисОператион Дата у Динамицс АКС 2012
Објављено: 16. фебруар 2025. 01:27:32 UTC
Овај чланак говори о детаљима о томе како додати упит који може да конфигурише и филтрира у класу уговора СисОператион података у Динамицс АКС 2012 (и Динамицс 365 фор Оператионс)
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
Информације у овом посту су засноване на Динамицс АКС 2012 Р3. Може, али не мора да важи за друге верзије. (Ажурирање: могу да потврдим да ово такође функционише на Динамицс 365 фор Оператионс)
Чини се да увек заборављам детаље о томе како да наведем и иницијализујем упит у оквиру СисОператион. Претпостављам да већина групних послова које сам радио није заснована на упитима које конфигурише корисник, али с времена на време морам да направим такав скупни посао, тако да је овај пост такође за моју референцу.
Прво, у класи уговора података, упит ће бити сачуван упакован у стринг. Његов метод парм мора бити украшен атрибутом АифКуериТипеАттрибуте, на сличан начин (у овом примеру сам користио упит СалесУпдате, али ово можете заменити било којим АОТ упитом):
DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
;
packedQuery = _packedQuery;
return packedQuery;
}
Ако желите да уместо тога о упиту одлучује класа контролера, можете користити и празан стринг. У том случају, такође морате да примените неколико помоћних метода (које би вероватно требало да примените у сваком случају ради сопствене погодности када треба да приступите упиту):
{
;
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
public void setQuery(Query _query)
{
;
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
Ако треба да иницијализујете упит (на пример, додате опсеге), требало би да примените метод инитКуери:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
Морате бити сигурни да сте позвали овај метод из класе контролера.