gpt4 book ai didi

axapta - 如何在AX 2012中设置单个尺寸值?

转载 作者:行者123 更新时间:2023-12-04 03:09:13 24 4
gpt4 key购买 nike

我的问题是设置一些从外部来源读取的尺寸值。

鉴于AX 2009声明:

ledgerJournalTrans.Dimension    = ledgerTable.Dimension;
ledgerJournalTrans.Dimension[1] = "abc";

与AX 2012中的等效方法是什么?

原因将假定存在“部门”维度作为第一维度。

最佳答案

首先,AX 2009中的旧维度已完全重做,并已替换AX 2012中的。新的LedgerDimension是帐户和基于帐户结构和高级规则结构所需的旧维度值的组合。若要在AX 2012中找到有关新维度框架的更多信息,请尝试阅读有关新维度框架的whitepaper

假设Department是第一个维度,并且两个维度都使用LedgerDimensionAccount EDT大大简化了这种情况,但是新的维度框架非常灵活,因此此假设可能不正确。即使是这样,由于可以设置高级规则结构,因此简单地为Department指定一个新值可能需要对组合的结构进行彻底更改。

坦白地说,我只会将以下代码视为只是一些基础知识的演示,而不是应在生产中使用的代码。 话虽如此,如果使用存储完整组合的LedgerDimensionAccount EDT将LedgerTable上的Dimension字段替换为LedgerDimension字段,则此代码即可完成您想要的操作。

DimensionStorage dimensionStorage;
DimensionAttribute deparmentDimensionAttribute;
DimensionAttributeValue newDepartmentValue;

// Find the deparment dimension attribute
deparmentDimensionAttribute = DimensionAttribute::findByName("Department");

// Find the new department value we want to put in the new combination.
newDepartmentValue = DimensionAttributeValue::findByDimensionAttributeAndValue(deparmentDimensionAttribute, "abc");

// Load a DimensionStorage instance with the old combination and update the first segment with new value
dimensionStorage = DimensionStorage::findById(ledgerTable.LedgerDimension);
dimensionStorage.setSegment(1,DimensionStorageSegment::constructFromValue("abc", newDepartmentValue));
ledgerJournalTrans.LedgerDimension = dimensionStorage.save();

关于axapta - 如何在AX 2012中设置单个尺寸值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8984449/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com