有时,交易会受到税款计算存在的性能问题的影响。 若要解决此问题,请根据需要按照以下部分中的步骤进行操作。
查看交易行计数
确定交易是否有很多行(例如,多于几百行)。 如果没有,请转到下一节。 如果交易确实有几百行,应延迟税款计算。 有关详细信息,请参阅为日记帐启用延迟税款计算。
接下来,您可以确定是否满足以下任何条件:
- 有来自大文件的导入交易。
- 多个会话同时处理同一个交易税款计算。
- 交易有多个行,视图会实时更新。 例如,更改行的字段时,会实时更新普通日记帐页上的计算销售税金额字段。
如果满足这些条件的任何一个,请延迟税款计算。
查看调用堆栈
查看调用堆栈,确定是否多次调用了税款计算。 如果不是,请转到下一节。 如果调用堆栈被多次调用,请按照下列步骤帮助减少税款计算次数。
- 如果日记帐已考虑了交易,请延迟税款计算。 有关详细信息,请参阅为日记帐启用延迟税款计算。
- 如果交易是采购订单,并且应用程序版本晚于 10.0.15,则可以通过启用外部测试
PurchTableChangeMgmtDistributionUpdateOnToggle_KillSwitch
来延迟税务计算,直到最终计算为止。
查看调用堆栈时间线
查看调用堆栈时间线,确定是否存在以下问题。 如果这样做,请启用外部测试以 TaxUncommittedDoIsolateScopeFlighting
解决问题。
- 交易将导致系统停止响应,直到会话结束。 因此,交易无法计算税收结果。
- 这些
TaxUncommitted
方法比其他方法花费的时间要长。 例如,该方法TaxUncommitted::updateTaxUncommitted()
可能需要 43,347.42 秒,但其他方法可能需要 0.09 秒。
自定义和调用税务计算
自定义时,不要对 insert()
每行调用税务计算或 update()
方法。 应在交易级别调用税款计算。
确定是否存在自定义
如果您已经完成了前面几节中的步骤,但未发现问题,请确定是否存在自定义。 如果不存在自定义,请创建 Microsoft 服务请求寻求进一步支持。