Օգտագործումը հարցումը SysOperation Data Contract Class in Dynamics AX 2012
Հրապարակվել է՝ 16 փետրվարի, 2025 թ., 01:25:37 UTC
Այս հոդվածը մանրամասն տեղեկություններ է հայտնում այն մասին, թե ինչպես ավելացնել օգտագործողի կողմից ձեւակերպվող եւ ֆիլտրվող հարցումը Dynamics AX 2012-ում SysOperation տվյալների պայմանագրային դասին (եւ Dynamics 365-ը՝ Operations-ի համար)
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
Այս պոստում տեղադրված տեղեկատվությունը հիմնված է Dynamics AX 2012 R3-ի վրա: Այն կարող է կամ չի կարող վավերական լինել այլ տարբերակների համար։ (Թարմացում. կարող եմ հաստատել, որ սա աշխատում է նաեւ Dynamics 365-ի վրա՝ 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());
}
Եթե դուք պետք է սկզբնականացնել հարցումը (օրինակ, ավելացնել ranges), դուք պետք է իրականացնել initQuery մեթոդը.
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
Դուք պետք է անպայման այս մեթոդը զանգահարեք վերահսկիչ դասից: