Vaicājuma izmantošana SysOperation datu līguma klasē programmā Dynamics AX 2012
Publicēts: 2025. gada 16. februāris 01:22:55 UTC
Pēdējo reizi atjaunināts: 2026. gada 12. janvāris 08:47:13 UTC
Šajā rakstā ir sniegta detalizēta informācija par to, kā pievienot lietotāja konfigurējamu un filtrējamu vaicājumu SysOperation datu līguma klasei programmā Dynamics AX 2012 (un Dynamics 365 for Operations).
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
Šajā ierakstā sniegtā informācija ir balstīta uz Dynamics AX 2012 R3. Tā var būt vai nebūt derīga citām versijām. (Atjauninājums: varu apstiprināt, ka tas darbojas arī Dynamics 365 for Operations)
Man vienmēr šķiet, ka aizmirstu detaļas par to, kā norādīt un inicializēt vaicājumu SysOperation ietvarā. Pieņemu, ka lielākā daļa pakešuzdevumu, ko esmu veidojis, nav balstīti uz lietotāja konfigurējamiem vaicājumiem, taču laiku pa laikam man ir jāizveido šāds pakešuzdevums, tāpēc šis ieraksts ir paredzēts arī manai uzziņai.
Pirmkārt, datu līguma klasē vaicājums tiks saglabāts iepakots virknē. Tās parm metodei jābūt papildinātai ar AifQueryTypeAttribute atribūtu, šādi (šajā piemērā esmu izmantojis SalesUpdate vaicājumu, bet to var aizstāt ar jebkuru AOT vaicājumu):
DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
;
packedQuery = _packedQuery;
return packedQuery;
}
Ja vēlaties, lai vaicājumu noteiktu kontrollera klase, varat izmantot arī tukšu virkni. Šādā gadījumā jums ir jāievieš arī pāris palīgmetodes (kuras, iespējams, vajadzētu ieviest jebkurā gadījumā jūsu ērtībai, kad jums ir jāpiekļūst vaicājumam):
{
;
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
public void setQuery(Query _query)
{
;
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
Ja nepieciešams inicializēt vaicājumu (piemēram, pievienot diapazonus), jāievieš initQuery metode:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
Jums jāpārliecinās, ka šī metode tiek izsaukta no kontrollera klases.
Papildu lasāmviela
Ja jums patika šī ziņa, jums varētu patikt arī šie ieteikumi:
- Dzēsiet juridisko personu (uzņēmuma kontus) programmā Dynamics AX 2012
- Kļūda "Datu līguma objektam nav definēta metadatu klase" programmā Dynamics AX 2012
- Kā atkārtot Enum elementus no X++ koda programmā Dynamics AX 2012
