代码是在客户端运行还是作为批处理作业?

时间:2014-02-27 16:10:23

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

有没有办法确定代码是在客户端还是在批处理作业中执行?我想过使用curUserId并检查用户是否是我们用于批处理作业的用户,但是如果用户被更改,这种方法就会失败。

我试图在运行到客户端时使用“是/否”对话框修改表update的{​​{1}}方法,但是当代码作为批处理运行时我不希望发生这种情况

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

在扩展runbasebatch的批次类中,您可以使用this.isInBatch()。如果代码以批处理方式运行,则返回true;如果未以批处理方式运行,则返回false然后,您可以将此参数作为参数传递给其他类。 (我建议这样做)。

但是请注意,您不应该在update表的VendTable方法中显示对话框,因为您应该永远不会在事务中进行用户交互,我认为是这种情况。

如果您希望在用户在表单上写入记录时进行用户交互,请尝试覆盖表单数据源的write方法。这将在写入(插入,更新)记录时执行。您可以在此处询问用户输入。例如,检查purchtable表单(purchtable ds,write方法),它应该包含类似的东西(它要求从头到行复制字段)