使用场景:通过预先录入产品信息,之后在采购单中打开弹窗勾选若干产品,之后勾选的产品信息会在采购单的子表中显示,并可以修改数量,核算总价之后进行流程审批。
主要通过用三张表来实现,采购清单、采购主表、采购子表,采购清单用来记录产品信息,主表用来勾选和展示数据,子表用来映射主表中勾选的采购清单信息(子表可以新建一张新的表单作为子表,也可以直接用采购清单的视图也可以)。
配置步骤:
第一步:创建采购清单,并一键生成视图,录入若干条数据。
第二步:创建采购子表,表单控件除了数量其他的都设置为只读,并一键生成视图,视图打开方式设置为网格类型。
第三步:创建采购主表,添加基础字段,然后添加一个产品名称控件(该控件主要作用于被视图选择框进行字段映射),如果表单中会用到该控件可以直接显示,用不到该控件则直接隐藏即可。
第四步:在采购主表中,添加视图查询框,用来查询采购清单的数据,并添加确定后执行脚本。- var process = getDocumentProcess();
- var formProcess = getFormProcess(); //申明表单业务处理类
- var form = formProcess.doViewByFormName("采购子表",getApplication());
- var webuser = getWebUser();
- var sid = getParameter("_selects");
- var aa =getCurrentDocument().getId();
- var arr = splitText(sid, ";");
- for (var i=0;i<arr.length;i++) {
- var fd=findDocument(arr[i]);
- var value = fd.getItemValueAsString("产品名称"); //这个是视图选择框中的视图字段
- var value1 = fd.getItemValueAsString("产品单价");
- var value2 = fd.getItemValueAsString("产品规格");
- var doc1 = process.doNew(form,webuser,createParamsTable());//创建记
- doc1.findItem("产品名称").setValue(value);
- doc1.findItem("产品单价").setValue(value1);
- doc1.findItem("产品规格").setValue(value2);
- doc1.setParent(aa);
- doc1.setIstmp(false);
- process.doCreate(doc1);
- }
复制代码
效果展示:
|