Miklix

Създаване на справочно поле за финансово измерение в Dynamics 365

Публикувано: 16 февруари 2025 г. в 11:32:40 ч. UTC

Тази статия обяснява как да създадете справочно поле за финансово измерение в Dynamics 365 for Operations, включително пример за код X++.


Тази страница е машинно преведена от английски език, за да бъде достъпна за възможно най-много хора. За съжаление машинният превод все още не е съвършена технология, така че могат да възникнат грешки. Ако предпочитате, можете да видите оригиналната версия на английски език тук:

Creating a Lookup Field for a Financial Dimension in Dynamics 365

Информацията в тази публикация се основава на Dynamics 365 for Operations, но по-голямата част от нея ще работи и за Dynamics AX 2012 (вижте по-долу).

Наскоро бях натоварен със задачата да създам ново поле, в което би трябвало да е възможно да се посочи едно финансово измерение, в случая Продукт. Разбира се, новото поле също трябва да може да търси валидните стойности на това измерение.

Това е малко по-сложно от обикновеното търсене в таблица, но ако знаете как, всъщност не е толкова лошо.

За щастие стандартното приложение предоставя удобен формуляр за справка (DimensionLookup), който може да се използва за целта, ако просто му кажете кой атрибут на измерение да търси.

Първо, трябва да създадете самото поле на формуляра. Това може да се основава на поле на таблица или метод на редактиране, няма значение за самата справка, но по един или друг начин трябва да използва разширения тип данни DimensionValue.

След това трябва да създадете манипулатор на събития OnLookup за полето. За да създадете манипулатор на събития, щракнете с десния бутон върху събитието OnLookup за полето, след което изберете "Копиране на метода на манипулатора на събития". След това можете да поставите празен метод на манипулатор на събития в клас и да го редактирате оттам.

Забелязвам: Повечето от това ще работи и за Dynamics AX 2012, но вместо да създавате манипулатор на събития, можете да заместите метода за търсене на полето на формуляр.

Манипулаторът на събития трябва да изглежда по следния начин (заменете името на формуляра и името на полето, ако е необходимо):

[
    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);
}
Споделете в BlueskyСподелете във FacebookСподелете в LinkedInСподелете в TumblrСподелете в XСподелете в LinkedInЗакачи в Пинтерест

Микел Банг Кристенсен

За автора

Микел Банг Кристенсен
Микел е създател и собственик на сайта miklix.com. Той има над 20 години опит като професионален компютърен програмист/разработчик на софтуер и в момента работи на пълен работен ден в голяма европейска ИТ корпорация. Когато не пише в блога, той прекарва свободното си време в широк спектър от интереси, хобита и дейности, които до известна степен могат да бъдат отразени в разнообразието от теми, обхванати в този уебсайт.