Finantsdimensiooni otsinguvälja loomine rakenduses Dynamics 365
Avaldatud: 16. veebruar 2025, kell 11:33:36 UTC
Selles artiklis selgitatakse, kuidas luua rakenduses Dynamics 365 for Operations finantsdimensiooni otsinguvälja, sealhulgas X++ koodi näide.
Creating a Lookup Field for a Financial Dimension in Dynamics 365
Selles postituses olev teave põhineb Dynamics 365 for Operationsil, kuid suurem osa sellest töötab ka Dynamics AX 2012 jaoks (vt allpool).
Sain hiljuti ülesandeks luua uus valdkond, milles peaks olema võimalik määrata üksainus finantsdimensioon, antud juhul Toode. Muidugi peaks uus väli suutma otsida ka selle dimensiooni kehtivaid väärtusi.
See on natuke keerulisem kui tavaline tabelist otsimine, kuid kui tead, kuidas, pole see tegelikult väga halb.
Õnneks pakub standardrakendus mugavat otsinguvormi (DimensionLookup), mida saab sel eesmärgil kasutada, kui lihtsalt öelda, millist dimensiooniatribuuti otsida.
Esiteks peate looma vormivälja enda. See võib põhineda tabeliväljal või redigeerimismeetodil, see pole otsingu enda jaoks oluline, kuid ühel või teisel viisil peab see kasutama laiendatud andmetüüpi DimensionValue.
Seejärel peate välja jaoks looma OnLookupi sündmuste töötleja. Sündmuste töötleja loomiseks paremklõpsake välja sündmusel OnLookup ja seejärel valige "Kopeeri sündmuste käitleja meetod". Seejärel saate tühja sündmuste käitleja meetodi klassi kleepida ja seda sealt redigeerida.
Märkus. Suurem osa sellest töötab ka Dynamics AX-i 2012 puhul, kuid sündmuste töötleja loomise asemel saate vormivälja otsingumeetodi alistada.
Sündmuste töötleja peab välja nägema umbes selline (vajadusel asendage vormi nimi ja välja nimi):
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);
}