【问题标题】:Status code in microsoft dynamics navision 2009microsoft dynamics navision 2009 中的状态码
【发布时间】:2016-02-02 20:20:54
【问题描述】:

我试图找出状态代码将在哪里更改。因为如果我尝试预订订单。出了点问题。然后会有一个回滚。但是在今天,状态码将被更改,不必更改。因为你不能在之后预订整个订单。状态码必须不变。

谢谢

出现此错误后状态码将更改:

是的,我调试了代码

并且在代码单元中:这一行的 7301:

END ELSE
    IF FromBinContent."Quantity (Base)" + "Qty. (Base)" < 0 THEN
      FromBinContent.FIELDERROR(
        "Quantity (Base)",STRSUBSTNO(Text000,FromBinContent."Quantity (Base)"));
END;

我会得到错误

谢谢

好的,我找到了要更改状态码的那段代码。

lRecStatus.FILTERGROUP(4);
lRecStatus.SETRANGE("Change Status",lRecStatus."Change Status"::Released);
lRecStatus.FILTERGROUP(0);
IF NOT lFncNextStatus2(vRecSalesHeader,lRecStatus,FALSE,FALSE) THEN
  ERROR(lCtx000,vRecSalesHeader."Document Type",vRecSalesHeader."No.",vRecSalesHeader."Status Code");
  lRecStatus.SETRANGE("Change Status",lRecStatus."Change Status"::01-NEW);

vRecSalesHeader.FIND('=');

所以我添加了这个:

 lRecStatus.SETRANGE("Change Status",lRecStatus."Change Status"::01-NEW);

但是如何设置值 New - 它是怎样的?而不是代码转到“vrijgegeven”?

谢谢

好的。我在代码单元中找到:1107570 这个:

lRecStatus.FILTERGROUP(4);
lRecStatus.SETRANGE("Change Status",lRecStatus."Change Status"::Released);
lRecStatus.FILTERGROUP(0);
IF NOT lFncNextStatus2(vRecSalesHeader,lRecStatus,FALSE,FALSE) THEN
  ERROR(lCtx000,vRecSalesHeader."Document Type",vRecSalesHeader."No.",vRecSalesHeader."Status Code");
vRecSalesHeader.FIND('=');

如果我对此发表评论:

IF NOT lFncNextStatus2(vRecSalesHeader,lRecStatus,FALSE,FALSE) THEN
  ERROR(lCtx000,vRecSalesHeader."Document Type",vRecSalesHeader."No.",vRecSalesHeader."Status Code");

那么状态码不会改变。但我不知道这是否正确,因为也许其他地方出了问题。

谢谢

【问题讨论】:

  • 我不确定您是要完全删除状态更改,还是仅处理更新的情况,即使事务由于错误而回滚。代码单元 1107570 表示这应该是 ISV 解决方案Numbering Conventions;与代码的原始作者讨论您尝试完成的工作,您将获得最佳结果。如果您仍然希望这样做,则需要查看 lFncNextStatus2 中的代码,然后对更改的系统进行一些测试。

标签: microsoft-dynamics


【解决方案1】:

如果状态码在出现错误消息后保持更新,那么最可能的原因是在调用发布路由之后但在错误消息之前发出了COMMIT

您的销售订单上的 OMS 选项卡似乎是 ISV 插件或数据库特定自定义的结果,因此很难确定可疑代码在哪里,有多种方法可以找到它。

查找代码最直接的方法是使用调试器(工具 -> 调试器 -> 触发器上的活动/断点),同时重复该过程并单步执行/处理事务,直到遇到 COMMIT 语句。

如果您更熟悉 C/AL 代码(并且拥有足够的许可证/权限),您可以打开表单进行修改并手动跟踪用于发布文档的代码。

重构代码以删除 COMMIT 可能非常棘手,如果在发布路由中更改它,则可能需要您的 Dynamics 合作伙伴或 ISV 进行修改,因为开发许可结构的工作方式。

【讨论】:

  • 嗨,Akedren。感谢你的回复。编辑帖子
  • 您还有其他建议吗?
猜你喜欢
  • 1970-01-01
  • 2019-02-09
  • 2016-07-21
  • 1970-01-01
  • 2018-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
相关资源
最近更新 更多