xRecord.data方法生成具有相同RecId的记录

时间:2015-10-29 08:57:47

标签: axapta dynamics-ax-2012 x++

我了解表的数据方法会创建包含系统字段的记录的副本。通常它应该生成一个新的RecID,这是合理的,否则你不能在同一个表中插入记录。

现在我遇到数据方法正在创建具有相同RecId 的副本的情况,导致插入操作期间出错。我不确定为什么会发生这种情况,并希望对此主题有任何意见。

我在做什么:

  • 复制现有产品配置模型 Screenshot
  • 当我运行调试器时,执行线程在某个时刻到达表方法PCClass.duplicateTranslation() enter image description here
  • 在第20行和第22行中,我们可以看到创建了一个重复的记录,然后尝试插入,这会失败,因为它们具有相同的RecId(参见下一个屏幕截图) enter image description here

这是一种标准的AX方法,为什么它不起作用?

1 个答案:

答案 0 :(得分:4)

表对象的from collections import OrderedDict OrderedDict(sorted(IdSet.items(), key = lambda e: int(e[0].split('_')[-1]))) 方法复制所有字段,包括data和其他系统字段。 RecId方法负责insert的生成。

根据上述逻辑,您的代码不会因RecId索引而失败 也许另一个独特的指数在起作用? 很可能你在调用方法时传递了错误或零RecId

你使用两个记录缓冲区,这是不必要的,只需更改记录键字段并插入:

RecId