Miklix

Créer un champ de recherche pour une dimension financière dans Dynamics 365

Publié : 16 février 2025 à 11:33:42 UTC

Cet article explique comment créer un champ de recherche pour une dimension financière dans Dynamics 365 for Operations, y compris un exemple de code X++.


Cette page a été traduite de l'anglais afin de la rendre accessible au plus grand nombre. Malheureusement, la traduction automatique n'est pas encore une technologie parfaite, et des erreurs peuvent donc se produire. Si vous préférez, vous pouvez consulter la version originale en anglais ici :

Creating a Lookup Field for a Financial Dimension in Dynamics 365

Les informations contenues dans cet article sont basées sur Dynamics 365 for Operations, mais la plupart d’entre elles fonctionneront également pour Dynamics AX 2012 (voir ci-dessous).

J'ai récemment été chargé de créer un nouveau champ dans lequel il devrait être possible de spécifier une seule dimension financière, dans ce cas Produit. Bien entendu, le nouveau champ devrait également pouvoir rechercher les valeurs valides de cette dimension.

C'est un peu plus compliqué qu'une recherche classique dans une table, mais si vous savez comment faire, ce n'est pas si mal.

Heureusement, l'application standard fournit un formulaire de recherche pratique (DimensionLookup) qui peut être utilisé à cette fin, si vous lui indiquez simplement quel attribut de dimension rechercher.

Tout d'abord, vous devez créer le champ de formulaire lui-même. Il peut être basé sur un champ de table ou une méthode d'édition, cela n'a pas d'importance pour la recherche elle-même, mais d'une manière ou d'une autre, il doit utiliser le type de données étendu DimensionValue.

Vous devez ensuite créer un gestionnaire d'événements OnLookup pour le champ. Pour créer un gestionnaire d'événements, cliquez avec le bouton droit sur l'événement OnLookup du champ, puis choisissez « Copier la méthode du gestionnaire d'événements ». Vous pouvez ensuite coller une méthode de gestionnaire d'événements vide dans une classe et la modifier à partir de là.

Remarque : la plupart de ces fonctionnalités fonctionnent également pour Dynamics AX 2012, mais au lieu de créer un gestionnaire d'événements, vous pouvez remplacer la méthode de recherche du champ de formulaire.

Le gestionnaire d'événements doit ressembler à ceci (remplacez le nom du formulaire et le nom du champ si nécessaire) :

[
    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);
}
Partager sur BlueskyPartager sur FacebookPartager sur LinkedInPartager sur TumblrPartager sur XPartager sur LinkedInÉpingler sur Pinterest

Mikkel Bang Christensen

A propos de l'auteur

Mikkel Bang Christensen
Mikkel est le créateur et le propriétaire de miklix.com. Il a plus de 20 ans d'expérience en tant que programmeur informatique professionnel/développeur de logiciels et travaille actuellement à plein temps pour une grande entreprise européenne de TI. Lorsqu'il ne blogue pas, il consacre son temps libre à un large éventail d'intérêts, de passe-temps et d'activités, ce qui peut se refléter dans une certaine mesure dans la variété des sujets abordés sur ce site web.