【问题标题】:Adding a Tracking Spec Line through AL Code?通过 AL 代码添加跟踪规范行?
【发布时间】:2020-12-26 14:05:26
【问题描述】:

我正在尝试通过代码添加 Tracking Spec 条目;

rec_trackingspec.init();

                                                      if rec_trackingspec2.FindLast() then
                                                          rec_trackingspec."Entry No." := rec_trackingspec2."Entry No." + 1 else
                                                          rec_trackingspec."Entry No." := 1;
                                                     

                                                      rec_trackingspec."Creation Date" := WorkDate();
                                                      rec_trackingspec.Positive := true;
                                                      rec_trackingspec.Validate("Item No.", rec_SalesLine."No.");
                                                      rec_trackingspec.Validate("Lot No.", rec_itemledgerentry."Lot No.");
                                                      rec_trackingspec."Location Code" := 'MAIN';
                                                
                                                      rec_trackingspec.Validate("Quantity (Base)", rec_SalesLine.Quantity);
                                                      rec_trackingspec.Validate("Bin Code", rec_SalesLine."Bin Code");
                                                      rec_trackingspec."Source Ref. No." := rec_SalesLine."Line No.";
                                                
                                                      rec_trackingspec.Insert(true);

通过调试器检查,我看到 Insert(true) 被执行,但是当我去检查 Tracking Spec 是否有我要插入的行时,它没有在那里显示条目。

【问题讨论】:

  • 您如何/何时以及何时检查您的线路是否实际插入?

标签: dynamics-nav microsoft-dynamics-nav dynamics-business-central dynamics-nav-2016


【解决方案1】:

检查 INSERT 之后是否有代码可以像 ERROR 命令一样反转所有更改。

【讨论】:

    【解决方案2】:

    对于这类问题,我通常倾向于使用 SQL Server。

    • 使用调试器,调试插入
    • 在 SQL Server 上运行,您应该会看到插入的记录。

    SELECT * FROM [Table Name] with (nolock) WHERE [KeyFields]

    • 然后在调试器中按 F5,它应该会在发生错误并删除记录的地方停止,如果没有发生类似的情况,请使用 F11 检查一些代码行并检查数据库中的记录是否仍然存在,直到找到哪一行删除了记录。

    但可能这几天你已经想通了。

    【讨论】:

    • 如果在实例上启用了批量插入,在执行 C/AL 代码后您可能看不到 SQL 插入。
    • @flo 是的,你是对的。最后,我们可以建议 OP 遵循 MS 文档上的指南来遵循临时禁用它们的指南来解决这个棘手的问题。 link 据我所知,这种行为在早期版本的 NAV 中更常见,因为我从 NAV2016 开始从事 NAV 工作,这从未发生在我身上,但感谢您的建议。另一种解决方案是在插入后执行一次findset/findfirst,使BC调用SQL并完成插入。
    猜你喜欢
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    • 2018-05-20
    相关资源
    最近更新 更多