Ustvarjanje iskalnega polja za finančno dimenzijo v Dynamics 365
Objavljeno: 16. februar 2025 ob 11:34:06 dop. UTC
V tem članku je razloženo, kako ustvariti iskalno polje za finančno dimenzijo v Dynamics 365 for Operations, vključno s primerom kode X++.
Creating a Lookup Field for a Financial Dimension in Dynamics 365
Informacije v tej objavi temeljijo na Dynamics 365 for Operations, vendar bo večina delovala tudi za Dynamics AX 2012 (glejte spodaj).
Pred kratkim sem dobil nalogo, da ustvarim novo polje, v katerem bi moralo biti mogoče določiti eno finančno dimenzijo, v tem primeru izdelek. Seveda bi moralo novo polje omogočati tudi iskanje veljavnih vrednosti te dimenzije.
To je nekoliko bolj zapleteno kot običajno iskanje v tabeli, a če veste, kako, pravzaprav ni tako slabo.
Na srečo standardna aplikacija ponuja priročen obrazec za iskanje (DimensionLookup), ki ga je mogoče uporabiti za ta namen, če ji samo poveste, kateri atribut dimenzije naj poišče.
Najprej morate ustvariti samo polje obrazca. To lahko temelji na polju tabele ali metodi urejanja, ni pomembno za samo iskanje, vendar mora na tak ali drugačen način uporabljati razširjeni podatkovni tip DimensionValue.
Nato morate ustvariti obravnavo dogodkov OnLookup za polje. Če želite ustvariti obravnavo dogodka, z desno miškino tipko kliknite dogodek OnLookup za polje in nato izberite »Kopiraj metodo obravnave dogodka«. Nato lahko prazno metodo obdelovalnika dogodkov prilepite v razred in jo uredite od tam.
Opomba: večina tega bo delovala tudi za Dynamics AX 2012, vendar namesto ustvarjanja obdelovalnika dogodkov lahko preglasite metodo iskanja polja obrazca.
Upravljavec dogodkov mora izgledati nekako tako (po potrebi zamenjajte ime obrazca in ime polja):
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);
}