Miklix

Cara Mengulangi Elemen Enum dari Kode X++ di Dynamics AX 2012

Diterbitkan: 15 Februari 2025 pukul 23.10.37 UTC
Terakhir diperbarui: 12 Januari 2026 pukul 08.41.57 UTC

Artikel ini menjelaskan cara menghitung dan mengulang elemen-elemen dari enum dasar di Dynamics AX 2012, termasuk contoh kode X++.


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:

How to Iterate Over the Elements of an Enum from X++ Code 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.

Baru-baru ini saya membuat formulir yang perlu menampilkan nilai untuk setiap elemen dalam sebuah enum. Daripada membuat field secara manual (dan kemudian perlu memelihara formulir jika enum tersebut dimodifikasi), saya memutuskan untuk mengimplementasikannya secara dinamis sehingga field tersebut akan secara otomatis ditambahkan ke desain saat runtime.

Namun, saya segera menyadari bahwa melakukan iterasi atas nilai-nilai dalam enum, meskipun cukup mudah setelah Anda tahu caranya, agak membingungkan.

Anda jelas perlu memulai dengan kelas DictEnum. Seperti yang akan Anda lihat, kelas ini memiliki beberapa metode untuk mendapatkan informasi seperti nama dan label dari indeks dan nilai.

Perbedaan antara indeks dan nilai adalah bahwa indeks adalah nomor elemen dalam enum, jika elemen-elemen enum dinomori secara berurutan mulai dari nol, sedangkan nilai adalah properti "nilai" sebenarnya dari elemen tersebut. Karena sebagian besar enum memiliki nilai yang dinomori secara berurutan dari 0, indeks dan nilai suatu elemen seringkali sama, tetapi tentu saja tidak selalu.

Namun bagaimana Anda mengetahui nilai apa saja yang dimiliki sebuah enum? Di sinilah letak kebingungannya. Kelas DictEnum memiliki metode bernama values(). Anda mungkin mengharapkan metode ini mengembalikan daftar nilai enum, tetapi itu jelas terlalu mudah, jadi sebagai gantinya ia mengembalikan jumlah nilai yang dikandung enum. Namun, jumlah nilai tidak ada hubungannya dengan nilai sebenarnya, jadi Anda perlu menggunakan angka ini sebagai dasar untuk memanggil metode berbasis indeks, bukan metode berbasis nilai.

Seandainya mereka menamai metode ini indexes() saja, pasti akan lebih mudah dipahami ;-)

Perlu diingat juga bahwa nilai enum (dan tampaknya "indeks" ini) dimulai dari 0, tidak seperti indeks array dan kontainer di X++, yang dimulai dari 1, jadi untuk mengulang elemen dalam enum, Anda dapat melakukan sesuatu seperti ini:

DictEnum dictEnum = new DictEnum(enumNum(SalesStatus));
Counter  c;
;

for (c = 0; c < dictEnum.values(); c++)
{
    info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}

Ini akan menampilkan simbol dan label dari setiap elemen dalam enum ke infolog.

Bacaan Lebih Lanjut

Jika Anda menikmati postingan ini, Anda mungkin juga menyukai saran berikut:


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

Mikkel Christensen

Tentang Penulis

Mikkel 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.