Miklix

Dynamics AX 2012에서 data()와 buf2Buf()의 차이점

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

이 문서에서는 Dynamics AX 2012의 buf2Buf() 및 data() 메서드의 차이점을 설명하며, 각 메서드를 사용하는 것이 적합한 경우와 X++ 코드 예제도 설명합니다.


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

The Difference Between data() and buf2Buf() in Dynamics AX 2012

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

Dynamics AX에서 한 테이블 버퍼의 모든 필드 값을 다른 테이블 버퍼로 복사해야 하는 경우 일반적으로 다음과 같은 작업을 수행합니다.

toTable.data(fromTable);

이 방법은 효과적이며 대부분의 경우에 가장 적합한 방법입니다.

하지만 buf2Buf 함수를 대신 사용할 수도 있습니다.

buf2Buf(fromTable, toTable);

이것도 잘 작동해요. 그럼 차이점은 뭐죠?

차이점은 buf2Buf가 시스템 필드를 복사하지 않는다는 것입니다. 시스템 필드에는 RecId, TableId와 같은 필드가 포함되며, 아마도 이 맥락에서 가장 중요한 것은 DataAreaId입니다. 후자가 가장 중요한 이유는 data() 대신 buf2Buf()를 사용하는 가장 일반적인 경우가 회사 계정 간에 레코드를 복제할 때이기 때문이며, 일반적으로 changeCompany 키워드를 사용합니다.

예를 들어, "dat" 회사에 있고 CustTable의 모든 레코드를 복사하려는 "com"이라는 다른 회사가 있는 경우:

while select crossCompany : ['com'] custTableFrom
{
    buf2Buf(custTableFrom, custTableTo);
    custTableTo.insert();
}

이 경우, buf2Buf가 시스템 필드를 제외한 모든 필드 값을 새 버퍼에 복사하기 때문에 작동합니다. 대신 data()를 사용했다면, 해당 값이 새 버퍼에도 복사되었기 때문에 새 레코드가 "com" 회사 계정에 삽입되었을 것입니다.

(실제로는 중복 키 오류가 발생했을 겁니다만, 이것도 원하는 결과는 아닙니다).

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

미켈 방 크리스텐슨

저자 소개

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