Miklix

Користење на барање во класа на договор за SysOperation податоци во Dynamics AX 2012

Објавено: 5 март 2025, во 19:54:22 UTC

Оваа статија ги обработува деталите за тоа како да додадете барање кое може да се конфигурира и филтрира во класата на договор за податоци SysOperation во Dynamics AX 2012 (и Dynamics 365 за операции)


Оваа страница беше машински преведена од англиски за да биде достапна за што повеќе луѓе. За жал, машинското преведување сè уште не е усовршена технологија, така што може да се појават грешки. Ако сакате, можете да ја видите оригиналната англиска верзија овде:

Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012

Информациите во овој пост се засноваат на Dynamics AX 2012 R3. Може или не може да важи за други верзии. (Ажурирање: можам да потврдам дека ова функционира и на Dynamics 365 for Operations)

Се чини дека секогаш ги заборавам деталите за тоа како да специфицирам и иницијализирам барање во рамката SysOperation. Претпоставувам дека повеќето од сериските задачи што ги правев не се засноваат на барања што може да се конфигурираат од страна на корисникот, но одвреме-навреме треба да направам таква сериска работа, така што овој пост е исто така за моја сопствена референца.

Прво, во класата на договор за податоци, барањето ќе биде зачувано спакувано во низа. Нејзиниот парм метод мора да биде украсен со атрибутот 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 години искуство како професионален компјутерски програмер/развивач на софтвер и моментално е вработен со полно работно време во голема европска ИТ корпорација. Кога не пишува блог, тој го поминува своето слободно време на широк спектар на интереси, хоби и активности, кои до одреден степен може да се рефлектираат во разновидните теми опфатени на оваа веб-локација.