Menggunakan Kueri dalam Kelas Kontrak Data SysOperation di Dynamics AX 2012
Diterbitkan: 16 Februari 2025 pukul 01.22.25 UTC
Terakhir diperbarui: 12 Januari 2026 pukul 08.47.10 UTC
Artikel ini membahas detail tentang cara menambahkan kueri yang dapat dikonfigurasi dan difilter oleh pengguna ke kelas kontrak data SysOperation di Dynamics AX 2012 (dan Dynamics 365 for Operations).
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
Informasi dalam posting ini didasarkan pada Dynamics AX 2012 R3. Informasi ini mungkin berlaku atau mungkin tidak berlaku untuk versi lain. (Update: Saya dapat mengkonfirmasi bahwa ini juga berfungsi pada Dynamics 365 for Operations)
Saya selalu lupa detail tentang cara menentukan dan menginisialisasi kueri dalam kerangka kerja SysOperation. Saya kira sebagian besar pekerjaan batch yang saya buat tidak didasarkan pada kueri yang dapat dikonfigurasi pengguna, tetapi sesekali saya memang perlu membuat pekerjaan batch seperti itu, jadi postingan ini juga untuk referensi saya sendiri.
Pertama, di kelas kontrak data, kueri akan disimpan dalam bentuk string. Metode parm-nya harus diberi atribut AifQueryTypeAttribute, seperti ini (dalam contoh ini saya menggunakan kueri SalesUpdate, tetapi Anda dapat menggantinya dengan kueri AOT apa pun):
DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
;
packedQuery = _packedQuery;
return packedQuery;
}
Jika Anda ingin kueri ditentukan oleh kelas pengontrol, Anda juga dapat menggunakan string kosong. Dalam hal ini, Anda juga perlu mengimplementasikan beberapa metode pembantu (yang mungkin sebaiknya Anda implementasikan untuk kenyamanan Anda sendiri saat perlu mengakses kueri):
{
;
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
public void setQuery(Query _query)
{
;
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
Jika Anda perlu menginisialisasi kueri (misalnya, menambahkan rentang), Anda harus mengimplementasikan metode initQuery:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
Anda perlu memastikan untuk memanggil metode ini dari kelas controller.
Bacaan Lebih Lanjut
Jika Anda menikmati postingan ini, Anda mungkin juga menyukai saran berikut:
- Ringkasan Cepat Kerangka Kerja SysOperation Dynamics AX 2012
- Kesalahan "Tidak ada kelas metadata yang ditentukan untuk objek kontrak data" di Dynamics AX 2012
- Mengidentifikasi Kelas Dokumen dan Kueri untuk Layanan AIF di Dynamics AX 2012
