Създаване на справочно поле за финансово измерение в 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);
}