Додайте метод відображення або редагування через розширення в Dynamics 365
Опубліковано: 16 лютого 2025 р. о 11:56:11 UTC
У цій статті я пояснюю, як використовувати розширення класу для додавання методу відображення до таблиці та форми в Dynamics 365 for Operations, включаючи приклади коду X++.
Add Display or Edit Method via Extension in Dynamics 365
Хоча планування використання методів відображення або редагування в Dynamics зазвичай має змусити вас задуматися, чи могли б ви, можливо, розробити своє рішення по-іншому, іноді вони є найкращим варіантом.
У попередніх версіях Dynamics і Axapta було дуже легко створювати методи відображення або редагування на таблицях і формах, але коли мені нещодавно довелося зробити свій перший метод редагування в Dynamics 365, я виявив, що процедура для цього дещо відрізняється.
Очевидно, існує кілька правильних підходів, але той, який я вважаю найкращим (як з точки зору інтуїтивності, так і з точки зору краси коду) - це використання розширення класу. Так, ви можете використовувати розширення класів для додавання методів до інших типів елементів, крім класів - в даному випадку таблиці, але це працює і для форм.
Спочатку створіть новий клас. Ви можете називати його як завгодно, але з якоїсь причини він повинен бути з суфіксом «_Extension». Скажімо, вам потрібно додати метод відображення до CustTable, ви можете, наприклад, назвати його MyCustTable_Extension.
Клас повинен бути прикрашений ExtensionOf, щоб система знала, що ви розширюєте, наприклад:
public final class MyCustTable_Extension
{
}
Тепер ви можете просто реалізувати свій метод відображення в цьому класі, як ви б це робили безпосередньо на таблиці в ранніх версіях Dynamics - "this" навіть посилається на таблицю, тому ви можете отримати доступ до полів та інших методів.
Наприклад, клас з простим (і абсолютно марним) методом відображення, який просто повертає номер рахунку покупця, може виглядати так:
public final class MyCustTable_Extension
{
public display CustAccount displayAccountNum()
{
;
return this.AccountNum;
}
}
Тепер, щоб додати метод відображення до форми (або розширення форми, якщо ви не можете редагувати форму безпосередньо), вам потрібно додати поле до форми вручну та переконатися, що ви використовуєте правильний тип (рядок у цьому прикладі).
Потім на елементі керування ви б встановили для DataSource значення CustTable (або будь-яке інше ім'я вашого джерела даних CustTable), а для DataMethod – MyCustTable_Extension.displayAccountNum (обов'язково включіть ім'я класу, інакше компілятор не зможе знайти метод).
І ви закінчили :-)
Оновлення: Більше не потрібно включати ім'я класу розширення при додаванні методу відображення до форми, але на початковому часі публікації воно було. Я залишаю інформацію тут на випадок, якщо деякі читачі все ще використовують старіші версії.