Mencipta Medan Carian untuk Dimensi Kewangan dalam Dynamics 365
Diterbitkan: 19 Mac 2025 pada 9:35:38 PTG UTC
Artikel ini menerangkan cara membuat medan carian untuk dimensi kewangan dalam Dynamics 365 for Operations, termasuk contoh kod X++.
Creating a Lookup Field for a Financial Dimension in Dynamics 365
Maklumat dalam pos ini adalah berdasarkan Dynamics 365 for Operations, tetapi kebanyakannya juga akan berfungsi untuk Dynamics AX 2012 (lihat di bawah).
Saya baru-baru ini ditugaskan untuk mencipta medan baru di mana adalah mungkin untuk menentukan satu dimensi kewangan, dalam kes ini Produk. Sudah tentu, medan baru ini juga harus dapat melihat nilai sah bagi dimensi ini.
Ini agak lebih rumit daripada pencarian biasa dalam jadual, tetapi jika anda tahu caranya, ia sebenarnya tidak terlalu sukar.
Untungnya, aplikasi standard menyediakan borang pencarian yang mudah (DimensionLookup) yang boleh digunakan untuk tujuan tersebut, jika anda memberitahunya atribut dimensi mana yang hendak dicari.
Pertama, anda perlu mencipta medan borang itu sendiri. Ini boleh berdasarkan medan jadual atau kaedah suntingan, tidak penting untuk pencarian itu sendiri, tetapi dalam satu cara atau lain, ia mesti menggunakan jenis data lanjutan DimensionValue.
Anda kemudian perlu mencipta pengendali acara OnLookup untuk medan itu. Untuk mencipta pengendali acara, klik kanan pada acara OnLookup untuk medan itu, kemudian pilih "Salin kaedah pengendali acara". Anda boleh menampal kaedah pengendali acara kosong ke dalam kelas dan mengeditnya dari sana.
Perhatian: Kebanyakan ini juga akan berfungsi untuk Dynamics AX 2012, tetapi sebaliknya mencipta pengendali acara, anda boleh menimpa kaedah pencarian medan borang.
Pengendali acara mesti kelihatan seperti ini (gantikan nama borang dan nama medan seperti yang diperlukan):
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);
}