Vaicājuma izmantošana SysOperation datu līguma klasē programmā Dynamics AX 2012
Publicēts: 2025. gada 16. februāris 01:22:55 UTC
Šajā rakstā ir sniegta informācija par to, kā SysOperation datu līguma klasei pievienot lietotāja konfigurējamu un filtrējamu vaicājumu programmā Dynamics AX 2012 (un Dynamics 365 for Operations).
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
Šajā ziņā sniegtā informācija ir balstīta uz Dynamics AX 2012 R3. Tas var būt un var nebūt derīgs citām versijām. (Atjauninājums: varu apstiprināt, ka tas darbojas arī programmā Dynamics 365 for Operations)
Šķiet, ka es vienmēr aizmirstu sīkāku informāciju par vaicājuma norādīšanu un inicializāciju SysOperation sistēmā. Es domāju, ka lielākā daļa pakešu darbu, ko esmu veicis, nav balstīti uz lietotāja konfigurējamiem vaicājumiem, taču šad un tad man ir jāveic šāds pakešu darbs, tāpēc šī ziņa ir arī mana uzziņai.
Pirmkārt, datu līguma klasē vaicājums tiks saglabāts iesaiņots virknē. Tās parm metodei jābūt dekorētai ar atribūtu AifQueryTypeAttribute (šajā piemērā esmu izmantojis vaicājumu SalesUpdate, taču jūs varat to 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 nosaka kontroliera klase, varat izmantot arī tukšu virkni. Tādā gadījumā jums ir jāievieš arī pāris palīgmetodes (kas, iespējams, jums jebkurā gadījumā būtu jāievieš jūsu ērtībām, kad jums ir nepieciešams piekļūt 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), jums jāievieš initQuery metode:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
Noteikti izsauciet šo metodi no kontrollera klases.