从 Dynamics 365 中的 X++ 代码更新财务维度值
已出版: 2025年2月16日 UTC 12:01:43
最后更新 2025年11月13日 UTC 13:37:57
本文解释了如何在 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 起,财务维度存储在单独的表中,并通过 RecId 进行引用,通常在 DefaultDimension 字段中。
处理维度的整个框架有些复杂,我经常需要重新阅读相关文档,这可能是因为我不经常使用它。
总之,更新现有维度集中的字段是一个经常会遇到的问题,所以我决定写一篇我最喜欢的教程 ;-)
一个静态实用方法可能如下所示:
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,因此,如果要更新记录的维度值(这可能是最常见的情况),则应确保使用新值更新该记录上的维度字段。
进一步阅读
如果您喜欢这篇文章,您可能还会喜欢这些建议:
