Користење на барање во класа на договор за SysOperation податоци во Dynamics AX 2012
Објавено: 5 март 2025, во 19:54:22 UTC
Последно ажурирано: 12 јануари 2026, во 08:47:46 UTC
Оваа статија ги разгледува деталите за тоа како да додадете барање што може да се конфигурира од корисникот и да се филтрира во класата на договор за податоци SysOperation во Dynamics AX 2012 (и Dynamics 365 for Operations)
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
Информациите во овој пост се базираат на Dynamics AX 2012 R3. Можеби ќе бидат валидни за други верзии, а можеби и не. (Ажурирање: Можам да потврдам дека ова работи и на Dynamics 365 for Operations)
Секогаш ги заборавам деталите за тоа како да специфицирам и иницијализирам барање во рамката SysOperation. Претпоставувам дека повеќето од задачите за серии што ги правам не се базираат на барања што може да ги конфигурира корисникот, но одвреме-навреме ми треба да направам таква задача за серии, па затоа овој пост е и за моја сопствена референца.
Прво, во класата на договор за податоци, барањето ќе биде зачувано спакувано во низа. Неговиот метод parm мора да биде декориран со атрибутот AifQueryTypeAttribute, вака (во овој пример го користев барањето SalesUpdate, но можете да го замените со кое било барање AOT):
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());
}
Ако треба да го иницијализирате барањето (на пример, да додадете опсези), треба да имплементирате метод initQuery:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
Треба да се осигурате дека ќе го повикате овој метод од класата контролер.
Дополнително читање
Ако ви се допадна овој пост, можеби ќе ви се допаднат и овие предлози:
- Брз преглед на Dynamics AX 2012 SysOperation Framework
- Претворете реално во стринг со сите децимали во Dynamics AX 2012
- Разликата помеѓу податоците () и buf2Buf () во Dynamics AX 2012
