Miklix

Коришћење упита у класи уговора СисОператион Дата у Динамицс АКС 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;
}

Ако желите да уместо тога о упиту одлучује класа контролера, можете користити и празан стринг. У том случају, такође морате да примените неколико помоћних метода (које би вероватно требало да примените у сваком случају ради сопствене погодности када треба да приступите упиту):

public Query getQuery()
{
    ;

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

public void setQuery(Query _query)
{
    ;

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

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

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

    // add ranges, etc...

    this.setQuery(queryLocal);
}

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

Поделите на БлуескиПоделите на ФејсбукуДелите на ЛинкедИнуПодели на Тумблр-уПодели на КсДелите на ЛинкедИнуПин на Пинтерест-у

Миккел Банг Кристенсен

О аутору

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