Miklix

Користење на барање во класа на договор за 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;
}

Ако сакате барањето да биде одлучено од класата контролер, можете да користите и празен стринг. Во тој случај, треба да имплементирате и неколку помошни методи (кои веројатно треба да ги имплементирате за ваша погодност кога треба да пристапите до барањето):

public Query getQuery()
{
    ;

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

public void setQuery(Query _query)
{
    ;

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

Ако треба да го иницијализирате барањето (на пример, да додадете опсези), треба да имплементирате метод initQuery:

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

    // add ranges, etc...

    this.setQuery(queryLocal);
}

Треба да се осигурате дека ќе го повикате овој метод од класата контролер.

Дополнително читање

Ако ви се допадна овој пост, можеби ќе ви се допаднат и овие предлози:


Споделете на BlueskyСподелете на ФејсбукСподелете на LinkedInСподелете на TumblrСподелете на XСподелете на LinkedInЗакачи на Pinterest

Микел Кристенсен

За авторот

Микел Кристенсен
Микел е креатор и сопственик на miklix.com. Тој има над 20 години искуство како професионален компјутерски програмер/развивач на софтвер и моментално е вработен со полно работно време во голема европска ИТ корпорација. Кога не пишува блог, тој го поминува своето слободно време на широк спектар на интереси, хоби и активности, кои до одреден степен може да се рефлектираат во разновидните теми опфатени на оваа веб-локација.