D365中显示菜单项中的复制来电查询属性有什么用?
What is the usage of the copy caller query property in display menu item in D365?
有一个链接到显示菜单项的表单。我正在检查菜单项的 属性 并看到两个属性具有 yes 值,(1) neededRecord 和 (2) CopyCallerQuery。我发现当 copyCallerQuery 属性 为真时,从其他表单跳转到此表单失败并出现此错误:
Cannot apply initial query because no form root data source table
matches the query root data source table..
另一方面,在某些情况下,此表单由助手 class 中的代码打开,如下所示:
private void openMyForm(MyTable _myTable)
{
MenuFunction _menuFunction;
Args _args;
_args = new Args();
_args.record(_myTable);
_args.caller(this);
_menuFunction = new MenuFunction(menuItemDisplayStr(MyFormDisplayMenu),MenuItemType::Display);
_menuFunction.openMode(OpenMode::Edit);
_menuFunction.run(_args);
}
当我将 copyCallerQuery 设置为 No 时,打开的表单记录错误,但是当我设置为 yes 时,打开的表单记录正确。
所以我想知道 CopyCallerQuery 属性 的用法是什么?我使用正确吗?
copyCallerQuery
将指定是否应将调用表单的查询复制到目标表单,例如将列表页面查询复制到详细信息表单。
您可以通过
亲眼看到并更好地理解这一点
- 创建表单(
Form1
)
- 向其中添加一个
SalesTable
数据源
- 在
\Forms\Form1\Methods\init
处覆盖 init
方法并在 super();
调用之后放置 info(SalesTable_ds.query().toString());
- 使用 属性
Object = Form1
和 CopyCallerQuery = Yes
创建一个 Display
菜单项 (\Menu Items\Display\Form1
)。
- 转到
\Forms\SalesTable
的 SalesTable
表单,然后在 SalesTable
在操作窗格中形成一个按钮,并将数据源 属性 设置为 SalesTable
- 打开
SalesTable
表格并按下按钮。将信息日志复制到某处的记事本。
- 修改
\Menu Items\Display\Form1
并设置 CopyCallerQuery = No
然后再次打开 SalesTable
表格并将查询复制到记事本中并比较两者。
您收到的错误是因为调用方表单的根数据源需要与目标表单的根数据源匹配才能复制它。
有一个链接到显示菜单项的表单。我正在检查菜单项的 属性 并看到两个属性具有 yes 值,(1) neededRecord 和 (2) CopyCallerQuery。我发现当 copyCallerQuery 属性 为真时,从其他表单跳转到此表单失败并出现此错误:
Cannot apply initial query because no form root data source table matches the query root data source table..
另一方面,在某些情况下,此表单由助手 class 中的代码打开,如下所示:
private void openMyForm(MyTable _myTable)
{
MenuFunction _menuFunction;
Args _args;
_args = new Args();
_args.record(_myTable);
_args.caller(this);
_menuFunction = new MenuFunction(menuItemDisplayStr(MyFormDisplayMenu),MenuItemType::Display);
_menuFunction.openMode(OpenMode::Edit);
_menuFunction.run(_args);
}
当我将 copyCallerQuery 设置为 No 时,打开的表单记录错误,但是当我设置为 yes 时,打开的表单记录正确。 所以我想知道 CopyCallerQuery 属性 的用法是什么?我使用正确吗?
copyCallerQuery
将指定是否应将调用表单的查询复制到目标表单,例如将列表页面查询复制到详细信息表单。
您可以通过
亲眼看到并更好地理解这一点- 创建表单(
Form1
) - 向其中添加一个
SalesTable
数据源 - 在
\Forms\Form1\Methods\init
处覆盖init
方法并在super();
调用之后放置info(SalesTable_ds.query().toString());
- 使用 属性
Object = Form1
和CopyCallerQuery = Yes
创建一个Display
菜单项 (\Menu Items\Display\Form1
)。 - 转到
\Forms\SalesTable
的SalesTable
表单,然后在SalesTable
在操作窗格中形成一个按钮,并将数据源 属性 设置为SalesTable
- 打开
SalesTable
表格并按下按钮。将信息日志复制到某处的记事本。 - 修改
\Menu Items\Display\Form1
并设置CopyCallerQuery = No
然后再次打开SalesTable
表格并将查询复制到记事本中并比较两者。
您收到的错误是因为调用方表单的根数据源需要与目标表单的根数据源匹配才能复制它。