业务中心页面上的选定/标记记录

问题描述

在 AL 扩展代码单元中,您如何使用“选择更多”功能遍历用户列表页面上选择/标记/勾选的记录?例如,某个数据类型中是否有 IsMarked / IsSelected / IsTicked 属性?或者,能不能把已经下钻的列表传给codeunit?

解决方法

有几种方法可以做到这一点。

您有方法 MarkMarkedOnly

使用 Mark 您可以看到 Mark 条记录,而 MarkedOnly 则只能看到已标记的记录。

一旦它们被标记,您就可以遍历它们并将它们分配给一个临时表,然后您可以将该表传递给 codeunit 方法。 或者您可以将类似于 VAR 的参数传递给 codeunit 方法,然后执行循环。

此处为 Mark 和 MarkedOnly 的定义

https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/methods-auto/record/record-mark-method

https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/methods-auto/record/record-markedonly-method

,

要将给定页面上的选择传递给代码单元或过程,请使用 SetSelectionFilter 函数。此函数将当前选择复制到另一个记录变量,然后您可以对其进行迭代或作为参数传递。

在下面的示例中,假设相关页面以 Sales Line 表作为其来源:

local procedure CallMyCodeunit();
var
    SalesLine: Record "Sales Line";
    MyCodeunit: Codeunit "My Codeunit";
begin
    CurrPage.SetSelectionFilter(SalesLine);
    MyCodeunit.DoSomething(SalesLine);
end;