Dynamics 365의 X++ 코드에서 재무 차원 값 업데이트
게시됨: 2025년 2월 16일 오후 12시 1분 18초 UTC
이 문서에서는 코드 예제를 포함하여 Dynamics 365의 X++ 코드에서 재무 차원 값을 업데이트하는 방법을 설명합니다.
이 페이지는 가능한 한 많은 사람이 이용할 수 있도록 영어에서 기계 번역되었습니다. 안타깝게도 기계 번역은 아직 완성된 기술이 아니므로 오류가 발생할 수 있습니다. 원하시는 경우 여기에서 영어 원문을 보실 수 있습니다:
Update Financial Dimension Value from X++ Code in Dynamics 365
Update Financial Dimension Value from X++ Code in Dynamics 365
이 게시물의 정보는 Dynamics 365를 기반으로 합니다. Dynamics AX 2012에서도 작동해야 하지만, 명시적으로 테스트하지는 않았습니다.
저는 최근 어떤 형식 논리에 기반하여 단일 재무 차원의 값을 업데이트하는 업무를 맡았습니다.
아마도 알고 계시겠지만 Dynamics AX 2012 재무 차원은 별도의 테이블에 저장되고 일반적으로 DefaultDimension 필드에서 RecId를 통해 참조됩니다.
차원을 처리하기 위한 전체적인 프레임워크는 다소 복잡하며, 종종 관련 문서를 다시 읽어야 합니다. 아마도 제가 이 주제를 자주 다루지 않기 때문일 수도 있습니다.
어쨌든, 기존 차원 집합의 필드를 업데이트하는 일은 자주 발생하는 일이므로, 제가 가장 좋아하는 요리법을 적어보려고 합니다 ;-)
정적 유틸리티 메서드는 다음과 같습니다.
public static DimensionDefault updateDimension( DimensionDefault _defaultDimension,
Name _dimensionName,
DimensionValue _dimensionValue)
{
DimensionAttribute dimAttribute;
DimensionAttributeValue dimAttributeValue;
DimensionAttributeValueSetStorage dimStorage;
DimensionDefault ret;
;
ret = _defaultDimension;
ttsbegin;
dimStorage = DimensionAttributeValueSetStorage::find(_defaultDimension);
dimAttribute = DimensionAttribute::findByName(_dimensionName);
if (_dimensionValue)
{
dimAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue( dimAttribute,
_dimensionValue,
true,
true);
dimStorage.addItem(dimAttributeValue);
}
else
{
dimStorage.removeDimensionAttribute(dimAttribute.RecId);
}
ret = dimStorage.save();
ttscommit;
return ret;
}
Name _dimensionName,
DimensionValue _dimensionValue)
{
DimensionAttribute dimAttribute;
DimensionAttributeValue dimAttributeValue;
DimensionAttributeValueSetStorage dimStorage;
DimensionDefault ret;
;
ret = _defaultDimension;
ttsbegin;
dimStorage = DimensionAttributeValueSetStorage::find(_defaultDimension);
dimAttribute = DimensionAttribute::findByName(_dimensionName);
if (_dimensionValue)
{
dimAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue( dimAttribute,
_dimensionValue,
true,
true);
dimStorage.addItem(dimAttributeValue);
}
else
{
dimStorage.removeDimensionAttribute(dimAttribute.RecId);
}
ret = dimStorage.save();
ttscommit;
return ret;
}
이 메서드는 새(또는 동일한) DimensionDefault RecId를 반환하므로 레코드의 차원 값을 업데이트하는 경우(아마도 가장 일반적인 시나리오일 듯) 해당 레코드의 차원 필드를 새 값으로 업데이트해야 합니다.