Miklix

Menggunakan Kueri dalam Kelas Kontrak Data SysOperation di Dynamics AX 2012

Diterbitkan: 16 Februari 2025 pukul 01.22.25 UTC

Artikel ini membahas detail tentang cara menambahkan kueri yang dapat dikonfigurasi dan difilter pengguna ke kelas kontrak data SysOperation di Dynamics AX 2012 (dan Dynamics 365 for Operations)


Halaman ini diterjemahkan oleh mesin dari bahasa Inggris agar dapat diakses oleh sebanyak mungkin orang. Sayangnya, terjemahan mesin belum merupakan teknologi yang sempurna, sehingga kesalahan dapat terjadi. Jika Anda mau, Anda dapat melihat versi bahasa Inggris aslinya di sini:

Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012

Informasi dalam posting ini berdasarkan Dynamics AX 2012 R3. Mungkin valid atau tidak untuk versi lain. (Pembaruan: Saya dapat mengonfirmasi bahwa ini juga berfungsi pada Dynamics 365 for Operations)

Saya selalu lupa detail tentang cara menentukan dan menginisialisasi kueri dalam kerangka SysOperation. Saya kira sebagian besar pekerjaan batch yang saya buat tidak didasarkan pada kueri yang dapat dikonfigurasi pengguna, tetapi kadang-kadang saya 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 dihiasi dengan 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 diputuskan oleh kelas pengontrol, Anda juga dapat menggunakan string kosong. Dalam kasus tersebut, Anda juga perlu mengimplementasikan beberapa metode pembantu (yang mungkin sebaiknya Anda implementasikan demi kenyamanan Anda sendiri saat Anda perlu mengakses kueri):

public Query getQuery()
{
    ;

    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 menerapkan metode initQuery:

public void initQuery()
{
    Query queryLocal = this.getQuery();
    ;

    // add ranges, etc...

    this.setQuery(queryLocal);
}

Anda perlu memastikan untuk memanggil metode ini dari kelas pengontrol.

Bagikan di BlueskyBagikan di FacebookBagikan di LinkedInBagikan di TumblrBagikan di XBagikan di LinkedInPin di Pinterest

Mikkel Bang Christensen

Tentang Penulis

Mikkel Bang Christensen
Mikkel adalah pencipta dan pemilik miklix.com. Dia memiliki lebih dari 20 tahun pengalaman sebagai pemrogram komputer profesional/pengembang perangkat lunak dan saat ini bekerja penuh waktu di sebuah perusahaan IT besar di Eropa. Ketika tidak menulis blog, ia menghabiskan waktu luangnya untuk beragam minat, hobi, dan kegiatan, yang mungkin sampai batas tertentu tercermin dalam berbagai topik yang dibahas di situs web ini.