Создавање поле за пребарување за финансиска димензија во Dynamics 365
Објавено: 5 март 2025, во 19:53:30 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);
}