Miklix

Օգտագործումը հարցումը SysOperation Data Contract Class in Dynamics AX 2012

Հրապարակվել է՝ 16 փետրվարի, 2025 թ., 01:25:37 UTC
Վերջին թարմացումը՝ 12 հունվարի, 2026 թ., 08:47:35 UTC

Այս հոդվածը մանրամասնորեն ներկայացնում է, թե ինչպես Dynamics AX 2012-ում (և Dynamics 365 for Operations-ում) SysOperation տվյալների պայմանագրի դասին ավելացնել օգտատիրոջ կողմից կարգավորվող և ֆիլտրվող հարցում։


Այս էջը ավտոմատ կերպով թարգմանվել է անգլերենից՝ հնարավորինս շատ մարդկանց համար հասանելի դարձնելու համար: Ցավոք, մեքենայական թարգմանությունը դեռ կատարելագործված տեխնոլոգիա չէ, ուստի կարող են սխալներ առաջանալ: Եթե ​​նախընտրում եք, կարող եք դիտել բնօրինակ անգլերեն տարբերակը այստեղ.

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

Այս գրառման մեջ տեղեկատվությունը հիմնված է Dynamics AX 2012 R3-ի վրա: Այն կարող է վավեր լինել կամ չլինել այլ տարբերակների համար: (Թարմացում. Ես կարող եմ հաստատել, որ սա նաև աշխատում է Dynamics 365 for Operations-ի վրա):

Ես միշտ մոռանում եմ SysOperation framework-ում հարցումը նշելու և նախնականացնելու մանրամասները։ Կարծում եմ, որ իմ կողմից կատարվող խմբաքանակային աշխատանքների մեծ մասը հիմնված չէ օգտատիրոջ կողմից կարգավորվող հարցումների վրա, բայց ժամանակ առ ժամանակ ես ստիպված եմ լինում նման խմբաքանակային աշխատանք կատարել, ուստի այս գրառումը նաև իմ սեփական հղման համար է։

Նախ, տվյալների պայմանագրերի դասում հարցումը կպահվի տողի մեջ փաթեթավորված։ Դրա 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);
}

Դուք պետք է համոզվեք, որ այս մեթոդը կանչում եք controller դասից։

Լրացուցիչ ընթերցանություն

Եթե ​​ձեզ դուր եկավ այս գրառումը, ձեզ կարող են նաև դուր գալ այս առաջարկները.


Կիսվեք Bluesky-ումԿիսվել Facebook-ումԿիսվեք LinkedIn-ումԿիսվեք Tumblr-ումԿիսվեք X-ումԿիսվեք LinkedIn-ումԿպցնել Պինթրեսթում

Միկել Քրիստենսեն

Հեղինակի մասին

Միկել Քրիստենսեն
Mikkel-ը miklix.com-ի ստեղծողն ու սեփականատերն է: Նա ունի ավելի քան 20 տարվա աշխատանքային փորձ՝ որպես պրոֆեսիոնալ համակարգչային ծրագրավորող/ծրագրային ապահովման մշակող և ներկայումս լրիվ դրույքով աշխատում է եվրոպական խոշոր ՏՏ կորպորացիայի մեջ: Երբ նա բլոգ չի գրում, նա իր ազատ ժամանակն անցկացնում է հետաքրքրությունների, հոբբիների և գործունեության լայն շրջանակի վրա, որոնք որոշ չափով կարող են արտացոլվել այս կայքում ընդգրկված թեմաների բազմազանության մեջ: