You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maximo中通过自动化脚本初始化绑定非持久化对象的对话框问题

问题:绑定非持久化对象的对话框中setWhere()方法未生效

我有一个绑定至非持久化对象(non-persistent object)的对话框,需要通过自动化脚本在对话框中显示过滤后的记录列表。尝试使用setWhere()方法实现过滤,但该方法没有生效,相关代码如下:

receiptInputSet =MXServer.getMXServer().getMboSet("ABC", MXServer.getMXServer().getUserInfo("TEST"))
poLineNum="1"
siteID=mbo.getOwner().getString("SITEID")
receiptInputSet.setWhere("polinenum ='"+poLineNum+"' and SITEID='"+siteID+"'")
receiptInputSet.reset()
解决方案

非持久化对象的MboSet不会从数据库读取数据,setWhere()依赖的SQL过滤逻辑自然无法生效,可通过以下方式实现需求:

  • 手动过滤记录:遍历MboSet所有条目,保留符合条件的记录,移除不符合的
    示例代码:

    receiptInputSet = MXServer.getMXServer().getMboSet("ABC", MXServer.getMXServer().getUserInfo("TEST"))
    poLineNum = "1"
    siteID = mbo.getOwner().getString("SITEID")
    receiptInputSet.reset()
    var mbo = receiptInputSet.moveFirst()
    while (mbo != null) {
        var nextMbo = receiptInputSet.moveNext()
        if (mbo.getString("POLINENUM") != poLineNum || mbo.getString("SITEID") != siteID) {
            receiptInputSet.remove(mbo)
        }
        mbo = nextMbo
    }
    
  • 使用QBE过滤替代:部分场景下,setQbe()方法对非持久化对象的MboSet生效,可替代setWhere()
    示例代码:

    receiptInputSet = MXServer.getMXServer().getMboSet("ABC", MXServer.getMXServer().getUserInfo("TEST"))
    poLineNum = "1"
    siteID = mbo.getOwner().getString("SITEID")
    receiptInputSet.setQbe("POLINENUM", poLineNum)
    receiptInputSet.setQbe("SITEID", siteID)
    receiptInputSet.reset()
    
  • 确认MboSet实例正确性:确保操作的是对话框绑定的MboSet实例,而非重新创建的独立实例。如果对话框已初始化MboSet,应直接获取对话框关联的实例进行操作,避免重复调用getMboSet()创建新对象

内容的提问来源于stack exchange,提问作者max092012

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 11:38:00