在Navision中通过引用运行代码单元

时间:2016-10-04 01:46:39

标签: navision dynamics-nav

我有一个代码单元,其中生产订单行表作为源,而运行时触发器显示这两行代码:

ProdOrderLine.GET(Status,'xxxx',10000);
ExecuteFunction(ProorderLine);

XXXX代表生产订单编号,但有人硬编码,如您所见。我如何将这个代码称为其他地方(例如在表格上),但是根据我所在的生产订单行参考?我试着直接调用SetRANGE例程或调用codeunit.run方法,到目前为止没有运气。帮助!

2 个答案:

答案 0 :(得分:4)

在设计模式下打开代码单元或其副本进行测试,并设置表格号。 codeunit的属性。然后你可以在OnRun函数中引用传递给codeunit.run的记录作为Rec。

传入记录的方式各不相同,但一种方法是使用以下语法:

Codeunit.RUN(CodeUnitNumber, Record)

SetRange对传入的变量是不够的,因为它只过滤但不选择记录。如果我正确理解您的问题,您将不需要OnRun中的ProdOrderLine.GET。只需调用ExecuteFunction(Rec)。

您没有提及版本号或ExecuteFunction函数的功能,但请尝试一下。

您可以在以下位置找到更多信息: https://msdn.microsoft.com/en-us/library/dd301214(v=nav.90).aspxhttps://msdn.microsoft.com/en-us/library/dd355035(v=nav.90).aspx

我为Navision开发已经有几年了,而且我再也没有办法测试了。希望这会指出你正确的方向,我没有忘记任何重要的事情。

答案 1 :(得分:0)

根据生产订单行表的主键是否实际上是[状态],[订货号],[行号],您需要使用FIND(' - ')或FINDSET,具体取决于哪个版本的NAV。

看来行号no也是硬编码的......这个过程只涉及订单的第一行吗?

您是否对订单号或文件编号感兴趣?

在任何情况下,我都会将其写为条件语句,除非您更喜欢在过滤器产生0行时将错误消息返回给UI:

 IF ProdOrderLine.GET(Status,"Order No.", "Line No.") THEN
   ExecuteFunction(ProdOrderLine);