Erstellen eines Nachschlagefelds für eine finanzielle Dimension in Dynamics 365
Veröffentlicht: 16. Februar 2025 um 11:32:43 UTC
In diesem Artikel wird erläutert, wie Sie ein Nachschlagefeld für eine Finanzdimension in Dynamics 365 for Operations erstellen, einschließlich eines X++-Codebeispiels.
Creating a Lookup Field for a Financial Dimension in Dynamics 365
Die Informationen in diesem Beitrag basieren auf Dynamics 365 for Operations, aber das meiste wird auch für Dynamics AX 2012 funktionieren (siehe unten).
Ich wurde kürzlich mit der Erstellung eines neuen Feldes beauftragt, in dem es möglich sein sollte, eine einzelne Finanzdimension anzugeben, in diesem Fall Produkt. Natürlich sollte das neue Feld auch in der Lage sein, die gültigen Werte dieser Dimension nachzuschlagen.
Das ist etwas komplizierter als ein normales Nachschlagen in einer Tabelle, aber wenn man weiß, wie es geht, ist es eigentlich gar nicht so schlimm.
Glücklicherweise bietet die Standardanwendung ein praktisches Nachschlageformular (DimensionLookup), das für diesen Zweck verwendet werden kann, wenn Sie ihm nur mitteilen, welches Dimensionsattribut nachgeschlagen werden soll.
Zunächst müssen Sie das Formularfeld selbst erstellen. Dieses kann auf einem Tabellenfeld oder einer Bearbeitungsmethode basieren, für die Suche selbst spielt das keine Rolle, aber auf die eine oder andere Weise muss es den erweiterten Datentyp DimensionValue verwenden.
Anschließend müssen Sie einen OnLookup-Event-Handler für das Feld erstellen. Um einen Event-Handler zu erstellen, klicken Sie mit der rechten Maustaste auf das OnLookup-Ereignis für das Feld und wählen Sie dann "Copy event handler method". Sie können dann eine leere Ereignisbehandlungsmethode in eine Klasse einfügen und sie von dort aus bearbeiten.
Hinweis: Das meiste davon funktioniert auch für Dynamics AX 2012, aber statt einen Event-Handler zu erstellen, können Sie die Lookup-Methode des Formularfelds überschreiben.
Der Event-Handler muss in etwa so aussehen (ersetzen Sie den Formularnamen und den Feldnamen nach Bedarf):
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);
}