Tworzenie pola odnośnika dla wymiaru finansowego w Dynamics 365
Opublikowano: 16 lutego 2025 11:33:57 UTC
Ostatnia aktualizacja: 12 stycznia 2026 08:56:13 UTC
W tym artykule wyjaśniono, jak utworzyć pole odnośnika dla wymiaru finansowego w programie Dynamics 365 for Operations, w tym przykład kodu X++.
Creating a Lookup Field for a Financial Dimension in Dynamics 365
Informacje zawarte w tym poście dotyczą rozwiązania Dynamics 365 for Operations, ale większość z nich będzie działać również w systemie Dynamics AX 2012 (patrz poniżej).
Niedawno otrzymałem zadanie stworzenia nowego pola, w którym będzie można określić pojedynczy wymiar finansowy, w tym przypadku Produkt. Oczywiście nowe pole powinno również umożliwiać wyszukiwanie prawidłowych wartości tego wymiaru.
Jest to nieco bardziej skomplikowane niż zwykłe wyszukiwanie w tabeli, ale jeśli wiesz jak, to wcale nie jest takie trudne.
Na szczęście standardowa aplikacja udostępnia wygodny formularz wyszukiwania (DimensionLookup), który można wykorzystać w tym celu, po prostu wskazując, który atrybut wymiaru ma zostać wyszukany.
Najpierw musisz utworzyć samo pole formularza. Może ono bazować na polu tabeli lub metodzie edycji, nie ma to znaczenia dla samego wyszukiwania, ale w taki czy inny sposób musi wykorzystywać rozszerzony typ danych DimensionValue.
Następnie należy utworzyć procedurę obsługi zdarzeń OnLookup dla danego pola. Aby utworzyć procedurę obsługi zdarzeń, kliknij prawym przyciskiem myszy zdarzenie OnLookup dla danego pola i wybierz opcję „Kopiuj metodę obsługi zdarzeń”. Następnie można wkleić pustą metodę obsługi zdarzeń do klasy i edytować ją stamtąd.
Uwaga: Większość z tych rozwiązań będzie działać również w systemie Dynamics AX 2012, ale zamiast tworzyć procedurę obsługi zdarzeń, można zastąpić metodę wyszukiwania w polu formularza.
Obsługujący zdarzenie obiekt powinien wyglądać mniej więcej tak (w razie potrzeby zmień nazwę formularza i nazwę pola):
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);
}
Dalsza lektura
Jeśli podobał Ci się ten wpis, mogą Cię zainteresować również poniższe sugestie:
- Visual Studio zawiesza się przy uruchamianiu podczas wczytywania ostatnich projektów
- Przełączanie Dynamics 365 FO Virtual Machine Dev or Test w tryb konserwacji
- Dodaj metodę wyświetlania lub edycji za pomocą rozszerzenia w Dynamics 365
