Miklix

Створення поля підстановки для фінансового виміру в Dynamics 365

Опубліковано: 16 лютого 2025 р. о 11:34:11 UTC

У цій статті пояснюється, як створити поле підстановки для фінансового параметра в Dynamics 365 for Operations, включно з прикладом коду X++.


Ця сторінка була перекладена з англійської мови машинним перекладом, щоб зробити її доступною для якомога більшої кількості людей. На жаль, машинний переклад ще не є досконалою технологією, тому можуть траплятися помилки. Якщо ви бажаєте, ви можете переглянути оригінальну англійську версію тут:

Creating a Lookup Field for a Financial Dimension in Dynamics 365

Інформація в цій публікації базується на Dynamics 365 for Operations, але більша її частина також працюватиме для Dynamics AX 2012 (див. нижче).

Нещодавно мені було доручено створити нове поле, в якому повинна бути можливість вказати єдиний фінансовий параметр, в даному випадку Product. Звичайно, нове поле також повинно мати можливість пошуку допустимих значень цього параметра.

Це трохи складніше, ніж звичайний пошук у таблиці, але якщо ви знаєте як, насправді все не так вже й погано.

На щастя, стандартна програма надає зручну форму пошуку (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Закріпити на Pinterest

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

Про автора

Міккель Банг Крістенсен
Міккель - творець і власник сайту miklix.com. Він має понад 20 років досвіду роботи професійним програмістом/розробником програмного забезпечення і наразі працює на повну ставку у великій європейській ІТ-корпорації. У вільний від ведення блогу час він присвячує різноманітним інтересам, хобі та захопленням, що певною мірою відображається на різноманітності тем, які висвітлюються на цьому сайті.