Miklix

Добавить отображение или изменить метод через расширение в 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, например, так:

[ExtensionOf(tableStr(CustTable))]
public final class MyCustTable_Extension
{
}

Теперь вы можете просто реализовать свой метод отображения в этом классе, как это делалось бы непосредственно в таблице в более ранних версиях Dynamics — "this" даже ссылается на таблицу, поэтому вы можете получить доступ к полям и другим методам.

Например, класс с простым (и совершенно бесполезным) методом display, который просто возвращает номер счета клиента, может выглядеть так:

[ExtensionOf(tableStr(CustTable))]
public final class MyCustTable_Extension
{
    public display CustAccount displayAccountNum()
    {
        ;

        return this.AccountNum;
    }
}

Чтобы добавить метод отображения к форме (или расширению формы, если вы не можете редактировать форму напрямую), вам нужно вручную добавить поле в форму и убедиться, что вы используете правильный тип (в этом примере — строка).

Затем в элементе управления установите DataSource равным CustTable (или любому другому имени источника данных CustTable) и DataMethod равным MyCustTable_Extension.displayAccountNum (обязательно укажите имя класса, иначе компилятор не сможет найти метод).

И на этом всё :-)

Обновление: Теперь указывать имя класса расширения при добавлении метода отображения к форме не обязательно, но на момент первоначальной публикации это было необходимо. Я оставляю эту информацию здесь на случай, если некоторые читатели все еще используют более старые версии.

Дополнительное чтение

Если вам понравился этот пост, вам также могут понравиться эти предложения:


Поделиться на BlueskyПоделиться на FacebookПоделиться на LinkedInПоделиться на TumblrПоделиться на XПоделиться на LinkedInЗакрепить на Pinterest

Миккель Кристенсен

Об авторе

Миккель Кристенсен
Миккель - создатель и владелец сайта miklix.com. Он имеет более чем 20-летний опыт работы в качестве профессионального программиста/разработчика программного обеспечения и в настоящее время работает на полную ставку в крупной европейской IT-корпорации. Когда он не ведет блог, то тратит свое свободное время на огромное количество интересов, хобби и занятий, что в некоторой степени отражается в разнообразии тем, освещаемых на этом сайте.