Dynamics AX 2012에서 data()와 buf2Buf()의 차이점
게시됨: 2025년 2월 15일 오후 10시 53분 51초 UTC
마지막으로 업데이트되었습니다: 2026년 1월 12일 오전 8시 41분 4초 UTC
이 문서에서는 Dynamics AX 2012의 buf2Buf() 메서드와 data() 메서드의 차이점, 각 메서드를 사용해야 하는 적절한 경우 및 X++ 코드 예제를 설명합니다.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
이 게시물의 정보는 Dynamics AX 2012 R3을 기준으로 작성되었습니다. 다른 버전에서는 유효하지 않을 수 있습니다.
Dynamics AX에서 한 테이블 버퍼의 모든 필드 값을 다른 테이블 버퍼로 복사해야 할 때 일반적으로 다음과 같은 방법을 사용합니다.
이 방법은 효과가 좋으며 대부분의 경우에 적합한 방법입니다.
하지만, 대신 buf2Buf 함수를 사용하는 옵션도 있습니다.
이것도 잘 작동합니다. 그렇다면 차이점은 무엇일까요?
buf2Buf는 시스템 필드를 복사하지 않는다는 점이 차이점입니다. 시스템 필드에는 RecId, TableId, 그리고 이 맥락에서 가장 중요한 DataAreaId와 같은 필드가 포함됩니다. DataAreaId가 가장 중요한 이유는 buf2Buf()를 data() 대신 사용하는 가장 일반적인 경우가 changeCompany 키워드를 사용하여 회사 계정 간에 레코드를 복제할 때이기 때문입니다.
예를 들어, "dat" 회사에 소속되어 있고 "com"이라는 다른 회사의 CustTable에 있는 모든 레코드를 복사하려는 경우를 생각해 보겠습니다.
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
이 경우 buf2Buf는 시스템 필드를 제외한 모든 필드 값을 새 버퍼로 복사하기 때문에 정상적으로 작동합니다. 만약 data() 함수를 사용했다면, 해당 값도 새 버퍼로 복사되므로 새 레코드가 "com" 회사 계정에 삽입되었을 것입니다.
(사실, 그렇게 하면 키 중복 오류가 발생하겠지만, 그것도 원하는 결과는 아니겠죠.)
추가 자료
이 글이 마음에 드셨다면 다음 제안도 마음에 드실 겁니다.
- SysExtension 프레임워크를 사용하여 Dynamics AX 2012에서 인스턴스화할 하위 클래스 찾기
- Dynamics AX 2012에서 X++에서 AIF 문서 서비스 직접 호출
- Dynamics AX 2012에서 매크로 및 strFmt를 사용한 문자열 포맷팅
