Miklix

Creazione di un campo di ricerca per una dimensione finanziaria in Dynamics 365

Pubblicato: 16 febbraio 2025 alle ore 11:33:46 UTC

Questo articolo spiega come creare un campo di ricerca per una dimensione finanziaria in Dynamics 365 for Operations, incluso un esempio di codice X++.


Questa pagina è stata tradotta automaticamente dall'inglese per renderla accessibile al maggior numero di persone possibile. Purtroppo, la traduzione automatica non è ancora una tecnologia perfezionata, quindi possono verificarsi degli errori. Se preferite, potete consultare la versione originale in inglese qui:

Creating a Lookup Field for a Financial Dimension in Dynamics 365

Le informazioni contenute in questo post si basano su Dynamics 365 for Operations, ma la maggior parte di esse funzionerà anche per Dynamics AX 2012 (vedere sotto).

Di recente mi è stato chiesto di creare un nuovo campo in cui dovrebbe essere possibile specificare una singola dimensione finanziaria, in questo caso Product. Naturalmente, il nuovo campo dovrebbe anche essere in grado di cercare i valori validi di questa dimensione.

È un po' più complicato di una normale ricerca in una tabella, ma se si sa come fare, non è poi così male.

Fortunatamente, l'applicazione standard fornisce un comodo modulo di ricerca (DimensionLookup) che può essere utilizzato allo scopo, se si indica semplicemente quale attributo di dimensione cercare.

Per prima cosa, devi creare il campo del modulo stesso. Questo può essere basato su un campo di tabella o su un metodo di modifica, non importa per la ricerca stessa, ma in un modo o nell'altro deve usare il tipo di dati esteso DimensionValue.

Devi quindi creare un gestore eventi OnLookup per il campo. Per creare un gestore eventi, fai clic con il pulsante destro del mouse sull'evento OnLookup per il campo, quindi seleziona "Copia metodo gestore eventi". Puoi quindi incollare un metodo gestore eventi vuoto in una classe e modificarlo da lì.

Nota: la maggior parte di questa procedura funzionerà anche per Dynamics AX 2012, ma anziché creare un gestore eventi, è possibile sovrascrivere il metodo di ricerca del campo del modulo.

Il gestore degli eventi deve avere un aspetto simile a questo (sostituire il nome del modulo e il nome del campo, se necessario):

[
    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);
}
Condividi su BlueskyCondividi su FacebookCondividi su LinkedInCondividi su TumblrCondividi su XCondividi su LinkedInAggiungi su Pinterest

Mikkel Bang Christensen

Sull'autore

Mikkel Bang Christensen
Mikkel è il creatore e proprietario di miklix.com. Ha oltre 20 anni di esperienza come programmatore di computer/sviluppatore di software ed è attualmente impiegato a tempo pieno in una grande azienda IT europea. Quando non scrive sul blog, dedica il suo tempo libero a una vasta gamma di interessi, hobby e attività, che in qualche modo si riflettono nella varietà di argomenti trattati in questo sito.