Створення поля підстановки для фінансового виміру в Dynamics 365
Опубліковано: 16 лютого 2025 р. о 11:34:11 UTC
Останнє оновлення: 12 січня 2026 р. о 08:56:19 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);
}
Додаткова література
Якщо вам сподобався цей пост, вам також можуть сподобатися ці пропозиції:
- Оновлення значення фінансового параметра з коду X++ у Dynamics 365
- Переведіть розробку або тест віртуальної машини Dynamics 365 у режим обслуговування
- Visual Studio зависає при запуску під час завантаження останніх проектів
