從 Dynamics 365 中的 X++ 程式碼更新財務維度值
已發佈: 2025年2月16日 中午12:01:45 [UTC]
最後更新: 2025年11月13日 下午1:38:06 [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 起,財務維度儲存在單獨的表中,並透過 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,因此,如果要更新記錄的維度值(這可能是最常見的情況),則應確保使用新值更新該記錄上的維度欄位。
進一步閱讀
如果您喜歡這篇文章,您可能也會喜歡這些建議:
