如何实现选单时过滤数据原创
金蝶云社区-陈来珍
陈来珍
3人赞赏了该文章 1059次浏览 未经作者许可,禁止转载编辑于2023年07月06日 17:09:42

关键词:botp、选单(draw)、过滤

一、需求

采购订单上有一个选单功能,根据当前页面物料的数据进行过滤,即再次选单时,不能选择已有物料Item-00000001和Item-00000003的数据。

image.png

二、思路与方案

在执行选单操作前,通过操作前操作事件beforeDoOperation去获取当前页面物料字段的值,然后通过传递操作参数数据draw.getOption().setVariableValue,到转换插件中的beforeBuildRowCondition时间中设置数据过滤范围,从而实现选单数据的过滤

三、实现过程

1、选单操作前传条件值

public class ApplyEditPlugin extends AbstractBillPlugIn implements Plugin {
    @Override
    public void beforeDoOperation(BeforeDoOperationEventArgs args) {
        if (args.getSource() instanceof Draw){
            Draw draw= (Draw) args.getSource();
            if (draw.getOperateKey().equals("draw")){
                int count = this.getModel().getEntryRowCount("entryentity");
                StringBuilder numbers = new StringBuilder();
                for (int i = 0; i < count; i++) {
                    DynamicObject materielObj = (DynamicObject) this.getModel().getValue("sunp_materielfield",i);
                    if (materielObj!=null) {
                        String number = materielObj.getString("number");
                        numbers.append(number).append(",");
                    }
                }
                //传递当前已选物料信息到操作参数中
                draw.getOption().setVariableValue("numbers",numbers.toString());
            }
        }
        super.beforeDoOperation(args);
    }
}

2、转换插件设置过滤条件

public class ApplyordConvertPlugin extends AbstractConvertPlugIn implements Plugin {
    @Override
    public void beforeBuildRowCondition(BeforeBuildRowConditionEventArgs e) {
    //获取页面插件传递过来的操作参数
        String numbers = this.getOption().getVariableValue("numbers");
        if (!numbers.isEmpty()&&numbers!=""){
            String[] split = numbers.split(",");
            QFilter numberQFilter = new QFilter("entryentity.sunp_materielfield.number", QCP.not_in, split);
            e.getCustQFilters().add(numberQFilter);
        }
        super.beforeBuildRowCondition(e);
    }
    }

四、效果图

通过前面开发步骤,实现了选单操作时,过滤掉已选物料的数据。

image.png

五、开发环境版本

V5.0.011

六、参考资料


开发平台

学习成长中心

SDK接口

开发必备100个小知识

开发案例库


drawdemo.zip(17.62KB)

赞 3