Miklix

Dynamics AX 2012에서 X++ 코드의 열거형 요소를 반복하는 방법

게시됨: 2025년 2월 15일 오후 11시 10분 41초 UTC

이 문서에서는 X++ 코드 예제를 포함하여 Dynamics AX 2012에서 기본 열거형의 요소를 열거하고 반복하는 방법을 설명합니다.


이 페이지는 가능한 한 많은 사람이 이용할 수 있도록 영어에서 기계 번역되었습니다. 안타깝게도 기계 번역은 아직 완성된 기술이 아니므로 오류가 발생할 수 있습니다. 원하시는 경우 여기에서 영어 원문을 보실 수 있습니다:

How to Iterate Over the Elements of an Enum from X++ Code in Dynamics AX 2012

이 게시물의 정보는 Dynamics AX 2012 R3에 기반합니다. 다른 버전에는 유효할 수도 있고 그렇지 않을 수도 있습니다.

저는 최근에 열거형의 각 요소에 대한 값을 표시해야 하는 폼을 만들고 있었습니다. 필드를 수동으로 만든 다음 열거형이 수정될 경우 폼을 유지 관리해야 하는 대신, 런타임에 필드를 자동으로 디자인에 추가하도록 동적으로 구현하기로 했습니다.

그러나 열거형에 있는 값을 반복하는 작업은 방법을 알게 되면 꽤 쉽지만, 약간 혼란스럽다는 것을 곧 알게 되었습니다.

DictEnum 클래스부터 시작해야 합니다. 보시다시피, 이 클래스에는 인덱스와 값 모두에서 이름과 레이블과 같은 정보를 얻는 여러 가지 방법이 있습니다.

index와 value의 차이점은 index가 열거형의 요소의 번호라는 점입니다. 열거형의 요소가 0부터 순차적으로 번호가 매겨진 경우, value는 요소의 실제 "값" 속성입니다. 대부분의 열거형은 0부터 순차적으로 번호가 매겨진 값을 가지므로 요소의 index와 value는 종종 동일하지만, 항상 그런 것은 아닙니다.

하지만 열거형에 어떤 값이 있는지 어떻게 알 수 있을까요? 여기서 혼란스러워집니다. DictEnum 클래스에는 values()라는 메서드가 있습니다. 이 메서드가 열거형 값의 목록을 반환할 것으로 기대할 수 있지만, 당연히 너무 쉽기 때문에 대신 열거형에 포함된 값의 개수를 반환합니다. 그러나 값의 개수는 실제 값과 아무 관련이 없으므로 값 기반 메서드가 아닌 인덱스 기반 메서드를 호출하기 위한 기준으로 이 숫자를 사용해야 합니다.

이 메서드의 이름을 indexes()로 지었더라면 덜 혼란스러웠을 겁니다 ;-)

또한 열거형 값(그리고 분명히 이러한 "인덱스")은 X++의 배열 및 컨테이너 인덱스가 1부터 시작하는 것과 달리 0부터 시작한다는 점을 명심하세요. 따라서 열거형의 요소를 반복하려면 다음과 같이 할 수 있습니다.

DictEnum dictEnum = new DictEnum(enumNum(SalesStatus));
Counter  c;
;

for (c = 0; c < dictEnum.values(); c++)
{
    info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}

이렇게 하면 열거형의 각 요소에 대한 기호와 레이블이 인포로그에 출력됩니다.

블루스카이에서 공유하기페이스북에서 공유하기LinkedIn에서 공유하기Tumblr에 공유하기X에서 공유LinkedIn에서 공유하기Pinterest에 고정

미켈 방 크리스텐슨

저자 소개

미켈 방 크리스텐슨
남자 이름은 miklix.com의 창시자이자 소유자입니다. 전문 컴퓨터 프로그래머/소프트웨어 개발자로 20년 이상 경력을 쌓았으며 현재 유럽의 대형 IT 기업에서 정규직으로 근무하고 있습니다. 블로그를 운영하지 않을 때는 여가 시간을 다양한 관심사, 취미, 활동으로 보내며 이 웹사이트에서 다루는 다양한 주제에 어느 정도 반영되어 있습니다.