Užklausos naudojimas SysOperation duomenų sutarties klasėje Dynamics AX 2012
Paskelbta: 2025 m. vasario 16 d. 01:22:54 UTC
Paskutinį kartą atnaujinta: 2026 m. sausio 12 d. 08:47:12 UTC
Šiame straipsnyje išsamiai aprašoma, kaip į „SysOperation“ duomenų sutarties klasę „Dynamics AX 2012“ (ir „Dynamics 365 for Operations“) įtraukti vartotojo konfigūruojamą ir filtruojamą užklausą.
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
Šiame įraše pateikta informacija pagrįsta „Dynamics AX 2012 R3“. Ji gali tikti kitoms versijoms, o gali ir netikti. (Atnaujinimas: galiu patvirtinti, kad tai veikia ir su „Dynamics 365 for Operations“)
Visada pamirštu, kaip nurodyti ir inicijuoti užklausą „SysOperation“ sistemoje. Manau, kad dauguma mano sukurtų paketinių užduočių nėra pagrįstos vartotojo konfigūruojamomis užklausomis, bet kartais man reikia atlikti tokią paketinę užduotį, todėl šis įrašas skirtas ir mano asmeninei informacijai.
Pirma, duomenų sutarties klasėje užklausa bus saugoma supakuota į eilutę. Jos parm metodas turi būti papildytas AifQueryTypeAttribute atributu, štai taip (šiame pavyzdyje naudojau SalesUpdate užklausą, bet ją galite pakeisti bet kuria AOT užklausa):
DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
;
packedQuery = _packedQuery;
return packedQuery;
}
Jei norite, kad užklausą spręstų valdiklio klasė, galite naudoti ir tuščią eilutę. Tokiu atveju taip pat turite įdiegti keletą pagalbinių metodų (kuriuos tikriausiai turėtumėte įdiegti savo patogumui, kai reikės pasiekti užklausą):
{
;
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
public void setQuery(Query _query)
{
;
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
Jei reikia inicijuoti užklausą (pavyzdžiui, pridėti diapazonus), turėtumėte įdiegti „initQuery“ metodą:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
Šį metodą būtinai iškvieskite iš valdiklio klasės.
Papildoma literatūra
Jei jums patiko šis įrašas, jums taip pat gali patikti šie pasiūlymai:
- Kaip kartoti Enum elementus iš X++ kodo „Dynamics AX 2012“
- Skirtumas tarp duomenų () ir buf2Buf () Dynamics AX 2012
- „Dynamics AX 2012“ konvertuokite realųjį į eilutę su visais dešimtainiais skaičiais
