微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 X++ 过滤我的记录以在 D365 FO 处显示主表中的所有记录?

如何解决如何使用 X++ 过滤我的记录以在 D365 FO 处显示主表中的所有记录?

我需要使用 onlookup 事件根据表单中的另一个表过滤我的数据。 我有 inventsite 表单和 2 个表,其中有 1:N 关系。其中之一是 SitePI,另一个是 PITrans。

这里是场景:我转到 InventSite 表单并添加一个名为 test 的站点,然后转到 SitePI 表(它在快速选项卡中)我添加了记录(001、004、005),我添加了另一个名为 test2 的站点并为其 SitePI 添加记录 003,006,007。最后,我转到 PITrans 表(它在另一个快速选项卡中),当我按下下拉菜单时,我需要能够选择属于 SitePI 表的记录作为查找。

但我只能看到选中的记录。

Image of my tables and issue

选择记录时需要看到 001、004 和 005。

这是我的代码(PICode 是我查找表的 RefRecId)

[FormControlEventHandler(formControlStr(InventSite,PITrans_PICode),FormControlEventType::Lookup)]
public static void PITrans_PICode_OnLookup(FormControl sender,FormControlEventArgs e)
{
    SysReferenceTableLookup tableLookup = SysReferenceTableLookup::newParameters(tableNum(SitePI),sender);
    Query query = new Query();

    SitePI sitePI = sender.formRun().dataSource('SitePI').cursor();
    InventSite inventSite = sender.formRun().dataSource('InventSite').cursor();

    QueryBuildDataSource qbds = query.addDataSource(tableNum(SitePI));
    
    qbds.addRange(fieldNum(SitePI,PICode)).value(queryValue(sitePI.PICode));
   

    query.dataSourceTable(tableNum(SitePI)).addOrderByField(fieldNum(SitePI,PICode),SortOrder::Ascending);

    tableLookup.addLookupField(fieldNum(SitePI,PICode));
    
    tableLookup.parmQuery(query);
    tableLookup.performFormlookup();

    FormControlCancelableSuperEventArgs ce = e as FormControlCancelableSuperEventArgs;
    ce.CancelSuperCall();

如果有人能帮助我,我将不胜感激。

问候

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。