Dynamics 365에서 확장을 통해 표시 또는 편집 방법 추가
게시됨: 2025년 2월 16일 오전 11시 55분 42초 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으로 설정합니다(클래스 이름을 포함해야 합니다. 그렇지 않으면 컴파일러가 메서드를 찾을 수 없습니다).
이제 끝났습니다 :-)
업데이트: 더 이상 폼에 디스플레이 메서드를 추가할 때 확장 클래스 이름을 포함할 필요가 없지만, 원래 게시 당시에는 포함해야 했습니다. 일부 독자가 여전히 이전 버전을 사용하고 있을 경우를 대비해 여기에 정보를 남겨둡니다.