官方提供了一个获取数据定位的方法(MWE.Obj.getFieldPosition),但是返回的是'1,3,4,3'格式的字符串坐标,每次拆分再取值十分繁琐,下面提供一个获取内容思路,以及可复用的方法。

  • 登录网页端后打开任意一个模板,填报、修改、查看方式都可以。

  • F12打开开发者工具,切换到控制台,复制下面代码后,把产品档案_主表产品编码替换成实际的表名及字段名。

    MWE.Obj.getFieldPosition('产品档案_主表','产品编码')

    输出:
    第一组是正常获取到的内容,第二组是表名或字段名有误的返回,空字符

  • 获取到的4,4,4,4分别为,起始行,起始列,结束行,结束列,且每个数字都比在Excel中-1。

  • 然后需要处理后利用

    MWE.Obj.getActiveSheet().getValue()

    提取当前表单内的实际内容。

  • 完整代码:

    function getFieldValue(tabName, fieldName) {
    function getValue(row, col) {
        let sheet = MWE.Obj.getActiveSheet()
        return sheet.getValue(row, col)
    }
    if (!tabName || !fieldName) return "" //如果参数为空,则返回空字符串,避免无效计算和不必要的错误
    let posArr = MWE.Obj.getFieldPosition(tabName, fieldName).split(",")
    posArr = posArr.map(Number) //将字符串数组转化为数字数组
    if (posArr.length != 4) return "" //如果数组长度不等于4,则返回空字符
    if (posArr[0] === posArr[2] && posArr[1] === posArr[3]) { //如果起始截止行、列相同,则返回单个值
        return getValue(posArr[0], posArr[1])
    } else { //如果起始截止行、列不同,则返回数组,此处默认取向下扩展明细行
        let data = []
        for (let i = posArr[0]; i <= posArr[2]; i++) {
            data.push(getValue(i, posArr[1]))
        }
        return data
    }
    }
  • 重复调用的步骤:

    • 打开服务端安装目录/SSSoft/WEB/MyWeb
    • 右键新建一个文本文件,重命名为plugs.js(任意名字+.js都可以)
    • 把上面的代码复制粘贴进去,保存关闭
    • 找到同目录./index.html文件,右键以记事本方式打开,然后滚动到底部,在</body>上一行插入一行空行,填入:
      <script src="plugs.js"></script>
    • 如果刚才新建的文件名是其他名字,plugs.js也要是对应名字
    • 保存Index.html文件
    • 这时候已经可以在模板内的Web JS设置内添加代码了,调用方法
      let a = getFieldValue('你的表名','你的字段名')

      在WEB端生效需要刷新缓存:浏览器重新打开
      http://你的IP/SSMISDIYWeb/MyWeb/
      在登录之前按下shift+F5强制刷新清空本页缓存

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。