2.2.2. 表单控件

设置表单控件的值

位置 触发时机 可以获取的环境变量(参数) 返回值
表单->表单控件->值 表单打开时触发 WebUserCurrentDocumentRelateDocumentParentDocument 类型:String含义:新建表单时,需要默认显示当前用户姓名

示例代码:

//用当前用户名填充控件默认值
(function () {
    var applicant = getItemValueAsString("报销人");
    if (applicant == null || applicant == "") {
        applicant = getWebUser().getname();
    }
    return applicant;
})()

设置表单选项类控件的选项

位置 触发时机 可以获取的环境变量(参数) 返回值
表单->表单控件->选项 表单打开时触发 WebUserCurrentDocumentRelateDocumentParentDocument 类型:String或Options对象含义:选项内容

示例代码:

//用t_user表的数据填充选项,可以返回Options对象,或者 "1:A;2:B" 或者 "A;B"格式字符串
(function () {
    //创建指定类对象
    var opts = createOptions();
    opts.add("", "");
    var sql = "select id, name from t_user";
    var datas = queryByDSName("MY_DS", sql);//MY_DS为数据源
    if (datas != null) {
        for (var iterator = datas.iterator(); iterator.hasNext();) {
            var map1 = iterator.next();//取值
            var name = map1.get("name");
            var value = map1.get("id");
            opts.add(name, value);
        }
    }
    return opts;
})()

对表单控件输入进行校验

位置 触发时机 可以获取的环境变量(参数) 返回值
表单->表单控件->校验 表单打开时触发 WebUserCurrentDocumentRelateDocumentParentDocument 类型:String含义:校验失败时提示语

示例代码:

//校验控件值不能为空
(function () {
    var rt = getItemValueAsString("职务");
    if (rt == null || "".equals(rt)) {
        return "'职务'不能为空";
    }
    return "";
})()

判断表单控件是否只读

位置 触发时机 可以获取的环境变量(参数) 返回值
表单->表单控件->只读条件 表单打开时触发 WebUserCurrentDocumentRelateDocumentParentDocument 类型:Boolean含义:true(只读)|false(可编辑)

示例代码:

//当控件IsStartup值为“02”时,则当前字段只读
(function () {
    var doc = getCurrentDocument();
    var IsSartup = doc.getItemValueAsString("IsStartup");
    var flag = true;
    if ("02".equals(IsSartup)) {
        flag = false;
    }
    return flag;
})()

判断表单控件是否需要隐藏

位置 触发时机 可以获取的环境变量(参数) 返回值
表单->表单控件->隐藏条件 表单打开时触发 WebUserCurrentDocumentRelateDocumentParentDocument 类型:Boolean含义:true(隐藏)|false(可见)

示例代码:

//当控件IsStartup值为“02”时,则当前字段隐藏
(function () {
    var doc = getCurrentDocument();
    var IsSartup = doc.getItemValueAsString("IsStartup");
    var flag = true;
    if ("02".equals(IsSartup)) {
        flag = false;
    }
    return flag;
})()

判断表单控件打印时是否需要隐藏

位置 触发时机 可以获取的环境变量(参数) 返回值
表单->表单控件->打印时隐藏条件 点击打印按钮时触发 WebUserCurrentDocumentRelateDocumentParentDocument 类型:Boolean含义:true(隐藏)|false(可见)

示例代码:

//当前用户的角色为非“系统管理员”时,则当前控件隐藏
(function () {
    var roleid = getRoleIdByName("系统管理员");
    var roles = getWebUser().getRoles();
    var isHidden = true;
    if (roles != null && roles.size() > 0) {
        for (var it = roles.iterator(); it.hasNext();) {
            var roleVO = it.next();
            if (roleid.equals(roleVO.getId())) {
                isHidden = false;
                break;
            }
        }
    }
    return isHidden;
})()

表单按钮类控件动作执行前脚本

位置 触发时机 可以获取的环境变量(参数) 返回值
表单->按钮 表单按钮动作执行前触发 WebUserCurrentDocumentRelateDocumentParentDocument 类型:String|Message含义:无返回值,不做处理|String(弹出警告框内容)|Message(Comfirm、Alert)

示例代码:

//按钮触发时,弹出对话框
(function () {
    return createConfirm("确定要提交文档?");
})()

表单按钮类控件动作执行后脚本

位置 触发时机 可以获取的环境变量(参数) 返回值
表单->按钮 表单按钮动作执行后触发 WebUserCurrentDocumentRelateDocumentParentDocument

示例代码:

//表单按钮动作执行成功后给用户发送邮件通知
(function () {
    var from = getItemValueAsString("from");//发送人地址
    var to = getItemValueAsString("to");//接受人地址
    var host = getItemValueAsString("host");//邮件SMTP服务器地址
    var user = getItemValueAsString("user");//邮件用户名
    var password = getItemValueAsString("password");//用户密码
    var bbc = getItemValueAsString("bbc");//秘密抄送地址
    var subject = getItemValueAsString("subject");//主题
    var body = getItemValueAsString("body");//内容
    sendMail(from, to, subject, body, host, user, password, bbc, false);
})()

在表单视图选择框控件确定动作前触发执行脚本

位置 触发时机 可以获取的环境变量(参数) 返回值
表单->视图选择框->确定条件 点击视图选择框确认按钮时触发 WebUserCurrentDocumentRelateDocumentParentDocumentParams:”_selects” 类型:String|Message含义:无返回值,不做处理|String(弹出警告框内容)|Message(Comfirm、Alert)

示例代码:

//对视图中选中的值ID进行校验
(function () {
    var doc = getRelateDocument();
    var type = doc.getItemValueAsString("类型");  //视图选择框控件所在表单字段值
    var selectId = getParameterAsText("_selects");  //视图选择框勾选记录ID
    var sel = selectId.replace(";", "','");
    if (null != sel && sel.trim().length() > 0) {
        sel = "('" + sel + "')";
        var countSql = " SELECT DOMAINID FROM TLK_DATA WHERE ID IN " + sel + " AND ITEM_TYPE <>'" + type + "' ";
        var count = countBySQL(countSql);
        if (null != count && count > 0) {
            return "所选记录与类型不符,请重新选择!";
        }
    }
})()

在表单视图选择框控件确定动作后触发执行脚本

位置 触发时机 可以获取的环境变量(参数) 返回值
表单->视图选择框->确定后执行脚本 点击视图选择框确认按钮时触发 WebUserCurrentDocumentRelateDocumentParentDocumentParams:”_selects”

示例代码:

//视图选择确认后,根据选择的ID创建记录
(function () {
    var doc = getRelateDocument();  //视图选择框控件所在表单对象
    var selectId = getParameterAsText("_selects");  //视图选择框勾选记录ID
    var sel = selectId.replace(";", "','");
    if (null != sel && sel.trim().length() > 0) {
        var parentId = doc.getId();
        var docProcess = getDocumentProcess();
        var formProcess = getFormProcess();
        //需要新建记录的表
        var newForm = formProcess.doViewByFormName("DATA", getApplication());
        sel = "('" + sel + "')";
        var sql = " SELECT * FROM TLK_DATA WHERE ID IN " + sel + " AND ID NOT IN (SELECT ITEM_CONTENT_ID FROM TLK_DATA_DETAIL WHERE PARENT='" + parentId + "') ";
        var datas = queryBySQL(sql);
        if (null != datas && datas.size() > 0) {
            for (var it = datas.iterator(); it.hasNext();) {
                var newDoc = docProcess.doNew(newForm, getWebUser(), createParamsTable());
                var data = it.next();
                var dataId = data.getId();
                var type = data.getItemValueAsString("METERIAL_TYPE"); newDoc.setParent(parentId);
                newDoc.addStringItem("METERIAL_TYPE", type);
                docProcess.doCreate(newDoc);
            }
        }
    }
})()

表单选项卡控件设置页签选中状态

位置 触发时机 可以获取的环境变量(参数) 返回值
表单->选项卡->页签选中脚本 表单打开时触发 WebUserCurrentDocumentRelateDocumentParentDocument 类型:String含义:返回的字符串为该选项卡默认选中的页签名称

示例代码:

//当前打开表单的人为表单作者时标签页默认选中"标签页A"
(function () {
    var user = getWebUser();//获取当前对象
    var userId = user.getId();//当前用户的id 
    var author = doc.getAuthor();//获取表单作者
    var authorId = author.getId();//表单作者的id 
    var name = "";
    if (userId.equals(authorId)) {
        name = "标签页A";
    } else if (isComplete()) {//判断当前文档是否审批完成
        name = "标签页B";
    } else {
        name = "标签页C";
    }
    return name;
})()

表单选项卡控件页签选中时判断是否触发刷新动作

位置 触发时机 可以获取的环境变量(参数) 返回值
表单->选项卡->页签->选中是否刷新内容 页签打开时触发 WebUserCurrentDocumentRelateDocumentParentDocument 类型:Boolean含义:返回输出一个布尔值,true代表刷新,false代表不刷新

示例代码:

//当前表单控件A的值在表单B存在时,则返回true,即标签页刷新
(function () {
    var doc = getCurrentDocument();
    var value = doc.getItemValueAsString("控件A");
    var sql = "select * from tlk_表单B where ITEM_Value = '+value+'";
    var data = findBySQL(sql);
    if (data != null) {
        return true;
    }
    return false;
})()

判断表单选项卡控件页签是否隐藏

位置 触发时机 可以获取的环境变量(参数) 返回值
表单->选项卡->页签->隐藏条件 表单打开时触发 WebUserCurrentDocumentRelateDocumentParentDocument 类型:Boolean含义:返回输出一个布尔值,true代表隐藏,false代表不隐藏

示例代码:

//根据控件"隐藏控制"的值,空值当控件是否隐藏
(function () {
    var doc = getCurrentDocument();
    var value = doc.getItemValueAsString("隐藏控制")
    if ("不隐藏".equals(value)) {
        return false;
    }
    return true;
})()

判断表单选项卡控件页签是否只读

位置 触发时机 可以获取的环境变量(参数) 返回值
表单-》选显卡->页签->只读条件 页签打开时触发 WebUserCurrentDocumentRelateDocumentParentDocument 类型:Boolean含义:返回输出一个布尔值,true代表只读,false代表不只读

示例代码:

//当用户为“张三”时可编辑,否则只读
(function () {
    var userName = getWebUser().getName();
    if ("张三".equals(userName)) {
        return false;
    }
    return true;
})()

判断表单选项卡控件页签是否在打印时隐藏

位置 触发时机 可以获取的环境变量(参数) 返回值
表单-》选显卡->页签->打印时隐藏条件 页签打开时触发 WebUserCurrentDocumentRelateDocumentParentDocument 类型:Boolean含义:返回输出一个布尔值,true代表隐藏,false代表已隐藏

示例代码:

//当用户为“张三”时,打印时隐藏,否则可见
(function () {
    var userName = getWebUser().getName();
    if ("张三".equals(userName)) {
        return false;
    }
    return true;
})()

设置调查控件问卷选项

位置 触发时机 可以获取的环境变量(参数) 返回值
表单->调查控件->问卷脚本 表单打开时触发 WebUserCurrentDocumentRelateDocumentParentDocument 类型:Question对象含义:问卷内容

示例代码:

//调查控件
(function () {
    var q = createQuestion(1, "你的爱好(“多选”)");
    q.addCheckboxOption("羽毛球", "羽毛球");
    q.addCheckboxOption("游泳", "游泳");
    var qs = new java.util.ArrayList();
    qs.add(q);
    return qs;
})()

设置二维码控件内容

位置 触发时机 可以获取的环境变量(参数) 返回值
表单->二维码控件->内容脚本 表单打开时触发 WebUserCurrentDocumentRelateDocumentParentDocument 类型:String含义:内容字符串,如内容为url地址,则扫码后会跳转到此url地址

示例代码:

//手机扫描二维码可跳转到百度搜索
(function () {
    var url = "https://www.baidu.com/";
    return url;
})()

2.2.3. 表单操作

通过脚本设置操作按钮的名称

位置 触发时机 可以获取的环境变量(参数) 返回值
表单/视图->操作->按钮->名称标签脚本 获取按钮时执行 WebUserCurrentDocumentRelateDocumentParentDocument 类型:String含义:按钮名称

示例代码:

//流程状态为空,则按钮的名称为“发起申请”,否则为“提交”
(function () {
    var statelabel = getStateLabel();
    var rtn = "提交";
    if ("".equals(statelabel))
    {
        rtn = "发起申请";
    }
    return rtn;
})()

在按钮动作执行前时机触发脚本

位置 触发时机 可以获取的环境变量(参数) 返回值
表单/视图操作->按钮->动作执行前脚本 动作触发前执行 WebUserCurrentDocumentRelateDocumentParentDocument 类型:String|Message含义:无返回值,不做处理|String(弹出警告框内容)|Message(Comfirm、Alert)

示例代码:

//控件值为空,不允许触发
(function () {
    var val = getItemValue("控件");
    if ("".equals(val))
    {
        rtn = "请填写控件值!";
    }
    return "";
})()

在按钮动作执行后时机触发脚本

位置 触发时机 可以获取的环境变量(参数) 返回值
表单/视图操作->按钮->动作执行后脚本 动作触发后执行 WebUserCurrentDocumentRelateDocumentParentDocument 无返回

示例代码:

//更新表单字段值
(function () {
    var process = getDocumentProcess();
    var doc = getCurrentDocument();
    doc.findItem("状态").setValue("合格");
    process.doUpdate(fdoc)
})()

通过脚本判断按钮是否只读

位置 触发时机 可以获取的环境变量(参数) 返回值
表单操作->编辑操作按钮->只读条件 表单打开时触发 WebUserCurrentDocumentRelateDocumentParentDocument 类型:Boolean含义:true代表只读,false代表不只读

示例代码:

//根据表单控件"只读控制"的值,决定当前控件是否只读
(function () {
    var doc = getCurrentDocument();
    var value = doc.getItemValueAsString("只读控制");
    if ("不只读".equals(value)) {
        return false;
    }
    return true;
})()

通过脚本判断按钮是否隐藏

位置 触发时机 可以获取的环境变量(参数) 返回值
表单操作->编辑操作按钮->隐藏条件 表单打开时触发 WebUserCurrentDocumentRelateDocumentParentDocument 类型:Boolean含义:返回输出一个布尔值,true代表隐藏,false代表不隐藏

示例代码:

//根据控件"名称"的值,决定当前控件是否隐藏
(function () {
    var doc = getCurrentDocument();
    var value = doc.getItemValueAsString("名称");
    if ("1".equals(value)) {
        return false;
    }
    return true;
})()

2.2.4. 表单摘要

通过脚本设置摘要内容

位置 触发时机 可以获取的环境变量(参数) 返回值
表单摘要->类型->脚本 生成摘要时触发 WebUserCurrentDocumentRelateDocumentParentDocument 类型:String含义:摘要的内容文本

示例代码:

//根据控件"名称"的值,决定当前控件是否隐藏
(function () {
    var doc = getCurrentDocument();
    var value = doc.getItemValueAsString("名称");
    return "用户名称为:" + value;
})()
文档更新时间: 2022-11-02 13:36   作者:admin