打开当前文档函数¶
方法清单¶
| 函数名 | 参数 | 功能 |
|---|---|---|
| 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()函数的应用,获取当前打开文档对象
脚本示例:
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()函数的应用,获取用户正在审批的节点对象
脚本示例: