维度查找挂起 AX 客户端?

Dimension lookup hangs AX client?

我有一个导入接口(不是我编码的)导入 XML 数据并创建 LedgerJournalTable (1) 和 LedgerJournalTrans (1..n) 记录。

在处理 LJT 维度时,代码首先检查维度是否存在于 AX 中,然后将数据插入到维度 [x] 字段中。但是,在维度不存在的情况下,导入 运行 结束后会向用户显示警告,但数据仍按原样 插入

并且当用户在导入完成后转到 LJT 行时,错误值显示在维度字段中。单击此维度的 lookup/drop-down 时,查找不会打开并且 AX 客户端挂起。 Ctrl+break 将恢复它,但查找永远不会打开。您可以删除该值,保存,问题仍然存在。您可以手动输入现有值并保存,问题仍然存在。 问题也扩展到 table 浏览器。

知道为什么会发生这种情况以及如何解决它,除了首先不保存错误值(我不知道为什么首先要这样做)?

提前致谢。

如果我没看错请告诉我。

  1. 用户运行一些进程从 XML 导入 LJ table/trans 记录。
  2. 如果 XML 内有错误维度,它会将数据推送到 LJ trans 维度 [x] 字段,即使它是无效的,并向用户发出警告。
  3. 用户查看日志并看到错误数据并尝试使用查找来更正它,但是查找 hangs/crashes.

在我看来,问题可能是您一直在将一堆错误数据推入 AX 并且查找正在尝试使用无效的 table/edt 关系。

如果我是对的,你需要直接去SQL查询分类帐交易table并寻找任何坏维度数据和correct/remove它。

我怀疑现有的错误数据导致查找失败,而不仅仅是您导入和正在查看的任何错误数据。

可能导致问题的原因是,用户导入了错误数据,收到警告,忽略警告,按原样单击 "post"(数据错误),然后现在它在 AX 中?现在,当您进行第二次导入并尝试使用查找时,它会因错误的数据关系而崩溃。

已编辑:因此,虽然数据库中存在损坏,但找到了真正的罪魁祸首:标准 AX 代码为维度查找创建临时数据 - [=15= 中有一个 mod 代码]() 编写了一个 XML 文件,每个维度都被更新或插入。在这种情况下,这花了很长时间,以至于挂断了客户端。我将代码放在 if 子句中,如下所示:

if(!this.isTemp())
{
  // offending code
}

问题已解决。