Miklix

Tworzenie pola odnośnika dla wymiaru finansowego w Dynamics 365

Opublikowano: 16 lutego 2025 11:33:57 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++.


Ta strona została przetłumaczona maszynowo z języka angielskiego, aby była dostępna dla jak największej liczby osób. Niestety, tłumaczenie maszynowe nie jest jeszcze dopracowaną technologią, więc mogą wystąpić błędy. Jeśli wolisz, możesz wyświetlić oryginalną angielską wersję tutaj:

Creating a Lookup Field for a Financial Dimension in Dynamics 365

Informacje zawarte w tym poście dotyczą systemu Dynamics 365 for Operations, ale większość z nich będzie działać również w systemie Dynamics AX 2012 (patrz poniżej).

Niedawno powierzono mi zadanie utworzenia nowego pola, w którym powinno być możliwe określenie pojedynczego wymiaru finansowego, w tym przypadku produktu. Oczywiście nowe pole powinno również móc wyszukiwać prawidłowe wartości tego wymiaru.

Jest to nieco bardziej skomplikowane niż zwykłe wyszukiwanie w tabeli, ale jeśli wiesz jak, to wcale nie jest tak źle.

Na szczęście standardowa aplikacja udostępnia wygodny formularz wyszukiwania (DimensionLookup), który można wykorzystać w tym celu, wystarczy wskazać atrybut wymiaru, którego ma dotyczyć wyszukiwanie.

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 używać rozszerzonego typu danych DimensionValue.

Następnie musisz utworzyć obsługę zdarzeń OnLookup dla pola. Aby utworzyć obsługę zdarzeń, kliknij prawym przyciskiem myszy zdarzenie OnLookup dla pola, a następnie wybierz „Kopiuj metodę obsługi zdarzeń”. Następnie możesz 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, jednak zamiast tworzyć procedurę obsługi zdarzeń, można zastąpić metodę wyszukiwania pola formularza.

Obsługujący zdarzenie obiekt musi wyglądać mniej więcej tak (w razie potrzeby należy zmienić 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);
}
Udostępnij na BlueskyUdostępnij na FacebookuUdostępnij na LinkedInUdostępnij na TumblrUdostępnij na XUdostępnij na LinkedInPrzypnij na Pintereście

Mikkel Bang Christensen

O autorze

Mikkel Bang Christensen
Mikkel jest twórcą i właścicielem miklix.com. Ma ponad 20-letnie doświadczenie jako profesjonalny programista komputerowy / programista oprogramowania i jest obecnie zatrudniony na pełny etat w dużej europejskiej korporacji IT. Kiedy nie bloguje, poświęca swój wolny czas na szeroki wachlarz zainteresowań, hobby i aktywności, co może w pewnym stopniu znaleźć odzwierciedlenie w różnorodności tematów poruszanych na tej stronie.