Membuat Bidang Pencarian untuk Dimensi Keuangan di Dynamics 365
Diterbitkan: 16 Februari 2025 pukul 11.33.45 UTC
Artikel ini menjelaskan cara membuat bidang pencarian untuk dimensi keuangan di Dynamics 365 for Operations, termasuk contoh kode X++.
Creating a Lookup Field for a Financial Dimension in Dynamics 365
Informasi dalam posting ini didasarkan pada Dynamics 365 for Operations, tetapi sebagian besarnya juga dapat digunakan untuk Dynamics AX 2012 (lihat di bawah).
Saya baru-baru ini ditugaskan untuk membuat kolom baru yang memungkinkan untuk menentukan satu dimensi keuangan, dalam hal ini Produk. Tentu saja, kolom baru tersebut juga harus dapat mencari nilai yang valid dari dimensi ini.
Ini sedikit lebih rumit daripada pencarian biasa dalam tabel, tetapi jika Anda tahu caranya, sebenarnya ini tidak terlalu buruk.
Untungnya, aplikasi standar menyediakan formulir pencarian yang mudah digunakan (DimensionLookup) yang dapat digunakan untuk tujuan tersebut, jika Anda cukup memberi tahu atribut dimensi mana yang akan dicari.
Pertama, Anda perlu membuat kolom formulir itu sendiri. Ini dapat didasarkan pada kolom tabel atau metode edit, tidak masalah untuk pencarian itu sendiri, tetapi dengan satu atau lain cara harus menggunakan tipe data DimensionValue yang diperluas.
Anda kemudian perlu membuat pengendali peristiwa OnLookup untuk bidang tersebut. Untuk membuat pengendali peristiwa, klik kanan peristiwa OnLookup untuk bidang tersebut, lalu pilih "Salin metode pengendali peristiwa". Anda kemudian dapat menempelkan metode pengendali peristiwa yang kosong ke dalam kelas dan mengeditnya dari sana.
Perhatian: Sebagian besar ini juga akan berfungsi untuk Dynamics AX 2012, tetapi alih-alih membuat pengendali peristiwa, Anda dapat mengganti metode pencarian bidang formulir.
Penangan peristiwa harus terlihat seperti ini (ganti nama formulir dan nama bidang seperlunya):
FormControlEventHandler(formControlStr( MyForm,
MyProductDimField),
FormControlEventType::Lookup)
]
public static void MyProductDimField_OnLookup( FormControl _sender,
FormControlEventArgs _e)
{
FormStringControl control;
Args args;
FormRun formRun;
DimensionAttribute dimAttribute;
;
dimAttribute = DimensionAttribute::findByName('Product');
args = new Args();
args.record(dimAttribute);
args.caller(_sender);
args.name(formStr(DimensionLookup));
formRun = classFactory.formRunClass(args);formRun.init();
control = _sender as FormStringControl;
control.performFormLookup(formRun);
}