Добавить отображение или изменить метод через расширение в Dynamics 365
Опубликовано: 16 февраля 2025 г. в 11:56:03 UTC
Последнее обновление: 12 января 2026 г. в 08:57:27 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" даже ссылается на таблицу, поэтому вы можете получить доступ к полям и другим методам.
Например, класс с простым (и совершенно бесполезным) методом display, который просто возвращает номер счета клиента, может выглядеть так:
public final class MyCustTable_Extension
{
public display CustAccount displayAccountNum()
{
;
return this.AccountNum;
}
}
Чтобы добавить метод отображения к форме (или расширению формы, если вы не можете редактировать форму напрямую), вам нужно вручную добавить поле в форму и убедиться, что вы используете правильный тип (в этом примере — строка).
Затем в элементе управления установите DataSource равным CustTable (или любому другому имени источника данных CustTable) и DataMethod равным MyCustTable_Extension.displayAccountNum (обязательно укажите имя класса, иначе компилятор не сможет найти метод).
И на этом всё :-)
Обновление: Теперь указывать имя класса расширения при добавлении метода отображения к форме не обязательно, но на момент первоначальной публикации это было необходимо. Я оставляю эту информацию здесь на случай, если некоторые читатели все еще используют более старые версии.
Дополнительное чтение
Если вам понравился этот пост, вам также могут понравиться эти предложения:
- Visual Studio зависает при запуске во время загрузки последних проектов
- Обновление значения финансового измерения из кода X++ в Dynamics 365
- Создание поля поиска для финансового измерения в Dynamics 365
