Axapta 仅允许在状态草稿中更改文档,因为更改管理已激活

Axapta 仅允许在状态草稿中更改文档,因为更改管理已激活,axapta,dynamics-ax-2012,dynamics-ax-2012-r3,Axapta,Dynamics Ax 2012,Dynamics Ax 2012 R3,我有几个POs处于“已批准”状态 当我打开它只是为了查看(我不打算更改任何内容,只是为了查看一些详细信息)无论我做什么,它都会给我一条错误消息“只允许在状态草稿中更改文档,因为更改管理已激活””,无论我单击何处。这正常吗?我们不能打开已批准的采购订单查看它吗 另一件奇怪的事情是,在我收到这个错误后,我无法关闭表单,即使使用esc按钮也会显示相同的错误消息 以下是调用堆栈: (S)\Classes\VersioningDocument\change 33 (S)\Classes\Versio

我有几个POs处于“已批准”状态

当我打开它只是为了查看(我不打算更改任何内容,只是为了查看一些详细信息)无论我做什么,它都会给我一条错误消息“只允许在状态草稿中更改文档,因为更改管理已激活””,无论我单击何处。这正常吗?我们不能打开已批准的采购订单查看它吗

另一件奇怪的事情是,在我收到这个错误后,我无法关闭表单,即使使用esc按钮也会显示相同的错误消息

以下是调用堆栈:

(S)\Classes\VersioningDocument\change   33 
(S)\Classes\VersioningPurchaseOrder\change  26 
(S)\Data Dictionary\Tables\PurchLineForeignTradeCategory\Methods\Update 3 
(S)\Classes\xRecord\dbOpInTransaction   0 
(C)\Classes\FormDataSource\write    0 
(C)\Forms\PurchTable\Data Sources\PurchLineForeignTradeCategory\Methods\write   0 
(C)\Classes\FormDataSource\leaveRecord  0 
(C)\Classes\FormDataSource\leaveRecord  0 
(C)\Classes\FormRun\selectControl   0 
(C)\Forms\PurchTable\Methods\selectControl 0

是否有人遇到过相同的问题?我可以做些什么来解决它?

使用以下代码禁用更改管理,然后重试

PurchTable       purchTable;

;

select forUpdate purchTable where purchTable.PurchId == '000532';

if(purchTable) {

    purchTable.ChangeRequestRequired = NoYes::No;
    purchTable.update();

}

我相信这个错误发生在AX试图更新采购订单总余额时,这意味着它在提交采购订单之前没有继续“总计”

当您打开采购订单时,在另一种情况下,当您试图在“请求更改”后重新提交采购订单并进行任何更改会影响采购订单余额时,AX正在尝试计算余额并尝试在相应字段中键入余额,同时AX阻止在“草稿”之外的任何字段中进行任何更改,这就是为什么AX会给你这个错误

决议
创建采购订单后,用户必须单击“总计”按钮,然后提交采购订单工作流。或者,如果适用,您可以在提交操作中添加这段代码。

您是否尝试分析生成错误消息的代码?它从VersioningDocument.change()方法中给出错误,但我不尝试更改任何内容,我只需要打开PO并查看一些值。我无法在系统上重现此行为。您确定没有可能影响此操作的自定义设置吗?您还可以在生成错误的代码行中添加断点,然后将调试器的调用堆栈发布到问题中。您还可以调试必须满足的条件,以便生成此错误。此错误来自Prepod环境,不幸的是,我们无法使用调试器,因此我使用以下代码获得了调用堆栈:S)\Classes\VersioningDocument\change 33(S)\Classes\VersioningPurchaseOrder\change 26(S)\数据字典\Tables\PurchLineForeignTradeCategory\Methods\Update 3(S)\Classes\xRecord\dbOpInTransaction 0(C)\Classes\FormDataSource\write 0(C)\Forms\PurchTable\datasources\PurchLineForeignTradeCategory\Methods\write 0(C)\Classes\FormDataSource\leaveRecord 0(C)\Classes\FormRun\selectControl 0(C)\Forms\PurchTable\Methods\selectControl 0首先,请编辑您的问题以将堆栈跟踪添加到其中,因为它是重要信息,其他人在尝试回答您的问题时可能无法阅读所有注释。其次,尝试在可以使用调试器的系统中重现问题。第三,堆栈跟踪现在向您显示表
PurchLineForeignTradeCategory
(它是表单
PurchTable
的数据源之一)的更新导致了问题。如果您确定没有任何更改,则可以尝试阻止此更新。我们在过帐到货日记账后收到采购订单时收到此错误。我认为您的解决方案是可行的,但我的问题是,在到货概述中发生了什么导致出现此错误?