跳转至

打开当前文档函数

方法清单

函数名 参数 功能
getId() 获取当前打开文档的ID
getItemValue(fieldName) fieldName:当前打开文档的字段名 获取当前打开文档中Item的值
getItemValueAsString(fieldName) fieldName:当前打开文档的字段名 获取当前打开文档中Item的值,且以字符串形式返回
getItemValueAsDate(fieldName) fieldName:当前打开文档的字段名 获取当前打开文档中Item的值,且以日期形式返回
getItemValueAsDouble(fieldName) fieldName:当前打开文档的字段名 获取当前打开文档中Item的值,且以double形式返回
getItemValueAsInt(fieldName) fieldName:当前打开文档的字段名 获取当前打开文档中Item的值,且以整型形式返回
countSubDocument(formName) formName: 当前打开文档的子文档名 根据子文档名,获取当前文档的子文档个数
getCurrentDocument() 返回当前打开文档对象
getStateLabel() 获取当前文档的状态标签,返回当前文档的状态标签
isFirtNode() 获取当前文档是否处在第一个节点,返回值为:true|false
sumSubDocument(formName, fieldName) formName: 当前打开文档的子文档名;fieldName: 子文档的字段名 根据子文档名和字段名,获取当前打开文档的子文档中字段的值总和
getParentDocument() 返回当前打开文档的父文档对象
getRelateDocument() 获取关联的文档,当包含元素不存在父子关系时生效
isComplete() 获取当前文档是否审批完成,返回值为:true|false
getParentFlowDoc() 获取父流程文档
getSubFlowDocList() 获取子流程文档
getLastApprover() 获取当前文档的最后审批人对象
getLastApproverId() 获取当前文档的最后审批人ID
getLastApproverName() 获取当前文档的最后审批人名称
getLastApprovedTime() 获取当前文档的最后审批时间
getSelectUsers4SubFlowNode(subflowNodeId) subflowNodeId:子流程节点Id,子流程节点Id(可选参数);如果传入子流程节点id,则只获取指定给该子流程节点的审批人id,否则获取所有子流程节点的审批人id 获取前台用户设定的指定子流程节点审批人Id的集合
getSelectUsers4ManualNode(manualNodeId) manualNodeId:子流程节点Id(可选参数);如果传入手工节点id,则只获取指定给该手工节点的审批人id,否则获取所有手工节点的审批人id 获取前台用户设定的指定手工节点审批人Id的集合
getAllExecuteableNodesByFlowId(flowId) flowId:流程id 获取流程图表中所有可执行的节点(包含人工节点、自动节点、子流程节点)
getCurrentProcessingNode() 获取用户正在审批的节点对象

方法示例

1.实现getId()函数的应用,获取当前打开文档ID

作用:实现getId()函数的应用,获取当前打开文档ID

脚本示例:

// 表单某字段值为当前打开文档Id
(() => {
    const rtn = getItemValue("code");
    if (rtn == null || (rtn.length && rtn.length <= 0)) {
        return CURDOC.getId();
    }
    return rtn;
})();

2.getItemValue(fieldName)

作用:实现getItemValue(fieldName)函数的应用, 获取当前打开文档Item值

脚本示例:

// 判断表单某控件值为空值,就生成自动编号
(() => {
    const rtn = CURDOC.getItemValue("编号");

    if (rtn == null || (typeof rtn === 'string' && rtn.trim().length <= 0)) {
        return countNext2("TK", false, false, false, 5);
    }

    return rtn;
})();

3.getItemValueAsString(fieldName)

作用:实现getItemValueAsString(fieldName)函数的应用,获取当前文档Item值,且以字符串形式返回

脚本示例:

// 判断表单某字段不能为空
(() => {
    const value = CURDOC.getItemValueAsString("编号");
    let retvar = "";

    if (value == null || (typeof value === 'string' && value.trim().length <= 0)) {
        retvar = "编号字段必须填写!";
    }

    return retvar;
})();

4.getItemValueAsDate(fieldName)

作用:实现getItemValueAsDate(fieldName)函数的应用,获取当前文档Item值,且以日期形式返回

脚本示例:

// 判断表单结束时间不能为空,且结束时间必须晚于开始时间
(() => {
    const starttime = CURDOC.getItemValueAsDate("开始日期");
    const deadline = CURDOC.getItemValueAsDate("结束日期");
    let retvar = "";

    if (deadline === null) {
        retvar = "结束时间必须填写!";
    } else {
        const formattedStart = starttime ? format(starttime, "yyyy-MM-dd HH:mm:ss") : null;
        const formattedDeadline = format(deadline, "yyyy-MM-dd HH:mm:ss");

        if (formattedStart && formattedDeadline) {
            const startDate = new Date(formattedStart);
            const endDate = new Date(formattedDeadline);

            if (!isNaN(startDate.getTime()) && !isNaN(endDate.getTime())) {
                if (startDate >= endDate) {
                    retvar = "开始时间必须早于结束时间!";
                }
            }
        }
    }
    return retvar;
})();

5.getItemValueAsDouble(fieldName)

作用:实现getItemValueAsDouble(fieldName)函数的应用,获取当前文档Item值,且以double形式返回

脚本示例:

// 判断表单某字段值小于0时,默认值就为1
(() => {
    let value = CURDOC.getItemValueAsDouble("金额");

    if (Number.isNaN(value) || value < 0) {
        value = 1;
    }

    return value;
})();

6.getItemValueAsInt(fieldName)

作用:实现getItemValueAsInt(fieldName)函数的应用,获取当前文档Item值,且以整型形式返回

脚本示例:

// 数量字段值脚本:数量 = 金额字段转为整型后的值
(() => {
    let amountValue = CURDOC.getItemValueAsInt("金额");
    println(`浮点型金额转化成整数数量:${amountValue}-----------`);

    if (Number.isNaN(amountValue)) {
        amountValue = 0; // 可根据业务需求调整默认值(如1、null等)
    }

    return amountValue;
})();

7.countSubDocument(formName)

作用:实现countSubDocument(formName)函数的应用,统计当前文档的子文档个数

脚本示例:

// 主表单某控件值脚本:获取当前文档的子文档个数
(() => {
    const formname = "被统计的子文档A表单";
    const total = CURDOC.countSubDocument(formname);
    return total;
})();

8.getCurrentDocument()

作用:实现getCurrentDocument()函数的应用,获取当前打开文档对象

脚本示例:

// 表单控件值脚本:获取当前文档对象
(() => {
    const doc = CURDOC.getCurrentDocument();
    return doc;
})();

9.getStateLabel()

作用:实现getStateLabel()函数的应用,获取当前文档的状态标签,返回当前文档的状态标签

脚本示例:

// 表单控件隐藏脚本:根据文档状态标签控制控件显示/隐藏
(() => {
    const statelabel = CURDOC.getStateLabel();
    let rtn = true;

    if (statelabel && statelabel === "流程登记") {
        rtn = false;
    }
    return rtn;
})();

10.isFirtNode()

作用:实现isFirtNode()函数的应用,获取当前文档是否处在第一个节点,返回值为:true|false

脚本示例:

// 值脚本:判断当前文档是否在第一个节点,控制单行文本框赋值(首节点填当前用户名,否则置空)
(() => {
    const doc = getCurrentDocument();
    const isFirstNode = doc.isFirstNode();
    println(`是否处在第一个节点:${isFirstNode}--------------`);

    let value = getItemValueAsString("单行文本框");
    if (isFirstNode) {
        if (value == null || (typeof value === 'string' && value.trim().length <= 0)) {
            value = getWebUser().getName();
        }
    } else {
        value = "";
    }

    return value;
})();

11.sumSubDocument(formName, fieldName)

作用:实现sumSubDocument(formName, fieldName)函数的应用,根据子文档名和字段名,获取当前打开文档的子文档中字段的值总和

脚本示例:

// 主表单控件值脚本:计算当前文档子文档指定字段值的总和
(() => {
    const formName = "被汇总字段值的子文档B";
    const fieldName = "金额";
    const totalValue = CURDOC.sumSubDocument(formName, fieldName);
    return totalValue;
})();

12.getParentDocument()

作用:实现getParentDocument()函数的应用,获取当前文档的父文档对象

脚本示例:

// 子表单控件选项脚本:根据父文档完成度动态调整选项值
(() => {
    const DEFAULT_OPTIONS = "0%;20%;40%;60%;80%;100%";
    const COMPLETION_MAP = {
        "0%": ";20%;40%;60%;80%;100%",
        "20%": ";0%;40%;60%;80%;100%",
        "40%": ";0%;20%;60%;80%;100%",
        "60%": ";0%;20%;40%;80%;100%",
        "80%": ";0%;20%;40%;60%;100%",
        "100%": ";0%;20%;40%;60%;80%"
    };

    const parentDoc = CURDOC.getParentDocument();
    let options = DEFAULT_OPTIONS;

    if (parentDoc) {
        const completionValue = parentDoc.getItemValueAsString("完成度");

        println(`完成度:${completionValue}---------------`);

        if (completionValue && COMPLETION_MAP[completionValue]) {
            options = COMPLETION_MAP[completionValue];
        }
    }

    return options;
})();

13.getRelateDocument()

作用:实现getRelateDocument()函数的应用,获取关联的文档,当包含元素不存在父子关系时生效(在视图内容中使用DQL)

脚本示例:

// 子关联文档过滤脚本:根据主关联文档字段值筛选子关联文档
(() => {
    const BASE_DQL = "$formname='fm_price' ";
    const rdoc = CURDOC.getRelateDocument();
    let dql = BASE_DQL;

    if (rdoc) {
        const linkmanName = rdoc.getItemValueAsString("商机名") || "";

        if (linkmanName) {
            const escapedLinkmanName = linkmanName.replace(/'/g, "''");
            dql += ` and 商机名='${escapedLinkmanName}'`;
            dql += " and (商机名 <> null and 商机名 <> '')";
        }
    }

    return dql;
})();

14.isComplete()

作用:实现isComplete()函数的应用,获取当前文档是否审批完成,返回值为:true|false

脚本示例:

// 单行文本框隐藏脚本:审批完成则隐藏(返回true),未完成则显示(返回false)
(() => {
    const isApprovalCompleted = CURDOC.isComplete();
    return isApprovalCompleted;
})();

15.getParentFlowDoc()

作用:实现getParentFlowDoc()函数的应用,获取父流程文档对象

脚本示例:

// 子流程表单控件值脚本:获取父流程文档ID(为空时兜底获取)
(() => {
    let pfdocid = getItemValueAsString("获取ID") || "";

    if (pfdocid.trim().length <= 0) {
        const pfdoc = CURDOC.getParentFlowDoc();
        if (pfdoc) {
            pfdocid = pfdoc.getId();
        }
    }

    return pfdocid;
})();

16.getSubFlowDocList()

作用:实现getSubFlowDocList()函数的应用,获取子流程文档列表

脚本示例:

// 主流程表单控件值脚本:累加子流程实例指定字段值的总和
(() => {
    let totalAmount = 0;
    const subfdocs = CURDOC.getSubFlowDocList();

    if (subfdocs && subfdocs.iterator) {
        const iterator = subfdocs.iterator();
        while (iterator.hasNext()) {
            const doc = iterator.next();
            const subAmount = doc.getItemValueAsDouble("子金额") || 0;
            totalAmount += Number(subAmount);
        }
    }

    return totalAmount;
})();

17.getLastApprover()

作用:实现getLastApprover()函数的应用,获取当前文档的最后审批人对象

脚本示例:

// 表单控件值脚本:获取当前文档的最后审批人对象名
(() => {
    const lastApprover = FLOW.getLastApprover();
    let rtn = "";

    if (lastApprover) {
        rtn = lastApprover.getName() || "";
    }

    return rtn;
})();

18.getLastApproverId()

作用:实现getLastApproverId()函数的应用,获取当前文档的最后审批人ID

脚本示例:

// 表单控件值脚本:获取当前文档的最后审批人ID
(() => {
    let lastApproverId = "";
    const lastApprover = FLOW.getLastApprover();

    if (lastApprover) {
        lastApproverId = FLOW.getLastApproverId() || "";
    }

    return lastApproverId;
})();

19.getLastApproverName()

作用:实现getLastApproverName()函数的应用,获取当前文档的最后审批人名称

脚本示例:

// 表单控件值脚本:获取当前文档的最后审批人对象名
(() => {
    let lastApproverName = "";
    const lastApprover = FLOW.getLastApprover();

    if (lastApprover) {
        lastApproverName = FLOW.getLastApproverName() || "";
    }

    return lastApproverName;
})();

20.getLastApprovedTime()

作用:实现getLastApproverTime()函数的应用,获取当前文档的最后审批时间

脚本示例:

// 流程提交动作执行后脚本:更新表单备注字段为最后审批人+审批时间
(() => {
    let lastApprovedTime = "";
    const lastApprover = FLOW.getLastApprover();

    if (lastApprover) {
        lastApprovedTime = FLOW.getLastApprovedTime() || "";
        const doc = getCurrentDocument();
        if (doc) {
            const currentUserName = getWebUser()?.getName() || "未知审批人";
            const contents = `审批人:${currentUserName}  审批时间:${lastApprovedTime}`;

            const remarkItem = doc.findItem("备注");
            if (remarkItem) {
                remarkItem.setValue(contents);
                const process = getDocumentProcess();
                if (process) {
                    process.doUpdate(doc);
                }
            }
        }
    }
})();

21.getSelectUsers4SubFlowNode()

作用:实现getSelectUsers4SubFlowNode()函数的应用,获取前台用户设定的指定子流程节点审批人Id的集合

脚本示例:

// 获取前台用户设定的指定子流程节点审批人Id的集合
(() => {
    const subflowNodeId = "1758774272174";  //子流程指定节点id
    return getSelectUsers4SubFlowNode(subflowNodeId)
})();

22.getSelectUsers4ManualNode()

作用:实现getSelectUsers4ManualNode()函数的应用,获取前台用户设定的指定手工节点审批人Id的集合

脚本示例:

// 获取前台用户设定的指定手工节点审批人Id的集合
(() => {
    const manualNodeId = "1758774272174";   //子流程指定节点id
    return getSelectUsers4ManualNode(manualNodeId);
})();

23.getAllExecuteableNodesByFlowId(flowId)

作用:实现getAllExecuteableNodesByFlowId()函数的应用,获取流程图表中所有可执行的节点(包含人工节点、自动节点、子流程节点)

脚本示例:

//获取流程图表中所有可执行的节点(包含人工节点、自动节点、子流程节点
(() => {
    const flowId = "__vBKKVjkRPpbuvJVh4Tj";     //请假申请流程id
    return getAllExecuteableNodesByFlowId(flowId);
})();

24.getCurrentProcessingNode()

作用:实现getCurrentProcessingNode()函数的应用,获取用户正在审批的节点对象

脚本示例:

//获取用户正在审批的节点对象
(() => {
    return getCurrentProcessingNode();
})();