为了方便日常开发,特对myApps常用API做了汇总整理。

一、当前打开文档函数

1、getId()

【概述】获取当前文档ID

【返回值】String

【参数】

【示例】脚本代码

// 实现getId()函数的应用,获取当前文档ID(值脚本)var rtn = getItemValue("code");
if (rtn==null || rtn.lenth()<=0){rtn = getId();
}
rtn;

2、getItemValue(fieldName)

【概述】获取当前打开文档中Item的值

【返回值】String

【参数】fieldName // 当前打开文档的字段名  String

【示例】脚本 代码

// 实现getItemValue(fieldName)函数的应用, 获取当前文档Item值(值脚本)var rtn = getItemValue("code");
if(rtn == null || rtn.trim().length() <= 0){rtn = countNext2("TK", false, false, false, 5);
}
rtn;

3、getItemValueAsString(fieldName)

【概述】获取当前打开文档中Item的值,且以字符串形式返回

返回值】String

参数】fieldName // 当前打开文档的字段名 String

示例】脚本 代码

// 实现getItemValueAsString(fieldName)函数的应用,获取当前文档Item值(值脚本)var value = getItemValueAsString("starttime");
var retvar = "";
if(value==null || value.trim().length()<=0) {retvar = "开始时间必须填写!";
}
retvar;

4、getItemValueAsDate(fieldName)

概述】获取当前打开文档中Item的值,且以日期形式返回

返回值】java.util.Date

参数】fieldNameString // 当前打开文档的字段名

示例】脚本 代码

// 实现getItemValueAsDate(fieldName)函数的应用,获取当前文档Item值(值脚本)var starttime = getItemValueAsDate("starttime");
var deadline = getItemValueAsDate("deadline");
var retvar = "";
if(deadline==null) {retvar = "过期时间必须填写!";
}else{var starttime = format(starttime,"yyyy-MM-dd HH:mm:ss"); var deadline =  format(deadline,"yyyy-MM-dd HH:mm:ss");if(starttime != null && deadline != null) {if(starttime >= deadline) {retvar = "开始时间必须早于过期时间!";}}
}
retvar;

5、getItemValueAsDouble(fieldName)

概述】获取当前打开文档中Item的值

返回值】Double

参数】fieldName  // 当前打开文档的字段名  String

示例】脚本 代码

//描述:实现getItemValueAsDouble(fieldName)函数的应用,获取当前文档Item值(值脚本)var value=getItemValueAsDouble("金额");
if (value<0){value=1;
}
value;

6、getItemValueAsInt(fieldName)

概述】获取当前打开文档中Item的值,且以整型值形式返回

返回值】Int

参数】fieldName  // 当前打开文档的字段名  Stirng

示例】脚本 代码

// 描述:实现getItemValueAsInt(fieldName)函数的应用,获取当前文档Item值(值脚本)var value=getItemValueAsInt("数量");
if (value<0){value=1;
}
value;

7、countSubDocument(formName)

概述】根据子文档名,获取当前文档的子文档个数

返回值】Int

参数】formName  // 根据子文档名,获取当前文档的子文档个数。 String

示例】脚本 代码

// 描述:实现countSubDocument(formName)函数的应用,统计当前文档的子文档个数(值脚本)var total = countSubDocument("TicketSystem/Ticket/fm_ticket_sub");
total;

8、getCurrentDocument()

概述】返回当前打开文档对象

返回值】Document

参数】无

示例】脚本 代码

// 描述:实现getCurrentDocument()函数的应用,获取当前打开文档对象var doc =getCurrentDocument();  //获取当前打开文档对象
var id = doc.getId();
getDocItemValue(id, "字段一");

9、getStateLabel()

概述】获取当前文档的状态标签,返回当前文档的状态标签。

返回值】String

参数】无

示例】脚本 代码

// 描述:实现getStateLabel()函数的应用,获取当前文档的状态标签,返回当前文档的状态标签var statelabel = getStateLabel();
var rtn = false;
if (“审批中”.equals(statelabel)){rtn = true;
}
rtn;

10、isFirtNode()

概述】获取当前文档是否处在第一个节点

返回值】true|first

参数】无

示例】脚本 代码

// 描述:实现isFirtNode()函数的应用,获取当前文档是否处在第一个节点,返回值为:true|falsevar isFirtNode = isFirtNode();
var value = getItemValueAsString(“username”);
if (isFirtNode){if (value==null || value.trim().length()<=0){value = getWebUser().getName();}
}
value;

11、sumSubDocument(formName, fieldName)

概述】根据子文档名和字段名,获取当前打开文档的子文档中字段的值总和。

返回值】double

参数】formNameString // 当前打开文档的子文档名

fieldNameString // 子文档的字段名

示例】脚本 代码

// 描述:实现sumSubDocument(formName, fieldName)函数的应用,据子文档名和字段名,获取当前打开文档的子文档中字段的值总和var formName="子表一";
var fieldname="字段一";
sumSubDocument(formName, fieldName);

12、getParentDocument()

概述】获取当前打开文档的父文档对象

返回值】cn.myapps.core.dynaform.document.ejb.Document

参数】无

示例】脚本 代码

// 描述:实现getParentDocument()函数的应用,获取当前文档的父文档对象var value = "";
var options = "0%;20%;40%;60%;80%;100%";
var parent = getParentDocument();             //getParentDocument()
if(parent != null){value = parent.getItemValueAsString("finishdegree");if(value != null) {if(value == "0%"){value += ";20%;40%;60%;80%;100%";}if(value == "20%"){value += ";0%;40%;60%;80%;100%";}if(value == "40%"){value += ";0%;20%;60%;80%;100%";}if(value == "60%"){value += ";0%;20%;40%;80%;100%";}if(value == "80%"){value += ";0%;20%;40%;60%;100%";}if(value == "100%"){value += ";0%;20%;40%;60%;80%";}if(value != "") {options = "";options = value;}}
}
options;

13、getRelateDocument()

概述】获取关联的文档,当包含元素不存在父子关系时生效。

返回值】cn.myapps.core.dynaform.document.ejb.Document

参数】无

示例】脚本 代码

// 描述:实现getRelateDocument()函数的应用,获取关联的文档,当包含元素不存在父子关系时生效(在视图内容中使用DQL)var dql = "$formname ='/fm_apply_materials_item'";
var rdoc = getRelateDocument();
dql += " and 物品编号=’ "+rdoc.getItemValueAsString("物品编号");+"’";
dql;

14、isComplete()

概述】获取当前文档是否审批完成,返回值为:true|false。

返回值】boolean

参数】无

示例】脚本 代码

// 描述:实现isComplete()函数的应用,获取当前文档是否审批完成,返回值为:true|falsevar isComplete = isComplete();
var rtn=true; //默认隐藏按钮
if (isComplete){rtn = false;//当前审批完成时,显示按钮
}
rtn;

15、getParentFlowDoc()

概述】获取父流程文档对象。

返回值】cn.myapps.core.dynaform.document.ejb.Document

参数】无

示例】脚本 代码

// 描述:实现getParentFlowDoc()函数的应用,获取父流程文档对象var pfdocid = getItemValueAsString("pf_docid");
if (pfdocid==null || pfdocid.trim().length()<=0){var pfdoc = getParentFlowDoc();pfdocid = pfdoc.getId();
}
pfdocid;

16、getSubFlowDocList()

概述】获取子流程文档列表。

返回值】java.util.Collection

参数

示例】脚本 代码

// 描述:实现getSubFlowDocList()函数的应用,获取子流程文档列表var subfdocs = getSubFlowDocList();
var rtn = "";
if (subfdocs!=null){for (var it = subfdocs.iterator();it.hasNext();){var doc = it.next();rtn += doc.getItemValueAsDouble("金额");}
}
rtn;

17、getLastApprover(doc)

概述】获取当前文档的最后审批人对象。

返回值】cn.myapps.core.dynaform.document.ejb.Document

参数】DOCDocument // 文档DOC

示例】脚本 代码

// 描述:实现getLastApprover(doc)函数的应用,获取当前文档的最后审批人对象//表单某字段值为当前文档的最后审批人对象名(值脚本)
(function(){var doc = getCurrentDocument();var lastApprover = getLastApprover(doc);if(lastApprover !=null){rtn=lastApprover.getName();}return rtn;
})()

18、getLastApproverId(doc)

概述】获取当前文档的最后审批人ID。

返回值】cn.myapps.core.dynaform.document.ejb.Document

参数】DOCDocument // 文档DOC

示例】脚本 代码

// 描述:实现getLastApproverId(doc)函数的应用,获取当前文档的最后审批人ID//表单某字段值为当前文档的最后审批人ID(值脚本)
(function(){var lastApproverid = "";if(getLastApprover()!=null){var lastApprover = getLastApprover(doc);lastApproverid =getLastApproverId(doc);}return lastApproverid ;
})()

19、getLastApproverName(doc)

概述】获取当前文档的最后审批人名称。

返回值】cn.myapps.core.dynaform.document.ejb.Document

参数】DOCDocument // 文档DOC

示例】脚本 代码

// 描述:实现getLastApproverName(doc)函数的应用,获取当前文档的最后审批人名称//表单某字段值为当前文档的最后审批人对象名(值脚本)
(function(){var lastApproverName ="";if(getLastApprover()!=null){var lastApprover = getLastApprover(doc);lastApproverName=getLastApproverName(doc);}return lastApproverName;
})()

20、getLastApproverTime(doc)

概述】获取当前文档的最后审批时间。

返回值】cn.myapps.core.dynaform.document.ejb.Document

参数】DOCDocument // 文档DOC

示例】脚本 代码

// 描述:实现getLastApproverTime(doc)函数的应用,获取当前文档的最后审批时间。//流程提交时更新表单某字段值为当前文档最后审批时间等(动作执行后脚本)
(function(){var lastApprovedTime ="";if(getLastApprover()!=null){var doc=getCurrentDocument();lastApprovedTime =getLastApprovedTime(doc);var contents="审批人:"+getWebUser().getName();contents+="  审批时间:"+ lastApprovedTime;doc.findItem("备注").setValue(contents);var process=getDocumentProcess();process.doUpdate(doc);}
})()

二、文档函数

1、getDocItemValue(docid, fieldName)

概述】获取文档中Item的值,且以字符串形式返回。

返回值】String

参数】docid    // 文档的id标识 String类型

fieldName     // 文档的字段名

示例】脚本 代码

// 实现getDocItemValue(docid, fieldName)函数的应用,获取指定文档的Item值var doc =getCurrentDocument();
var id = doc.getId();
getDocItemValue(id, "字段一");

2、getDocItemValueAsString(docid, fieldName)

概述实现getDocItemValue(docid, fieldName)函数的应用,获取指定文档的Item值

【返回值】String

参数docid  // 文档的id标识 String

fieldName // 文档的字段名 String

【示例】脚本代码

// 实现getDocItemValueAsString(docid, fieldName)函数的应用,获取指定文档的Item值var doc =getCurrentDocument();
var id = doc.getId();
getDocItemValueAsString(id, "字段一");

3、getDocItemValueAsDouble(docid, fieldName)

概述】获取文档中Item的值,且以double形式返回。

【返回值】double

参数docid  // 文档的id标识 String

fieldName // 文档的字段名 String

【示例】脚本代码

// 实现getDocItemValueAsDouble(docid, fieldName)函数的应用,获取指定文档的Item值var doc =getCurrentDocument();
var id = doc.getId();
getDocItemValueAsDouble(id, "字段一");

4、getDocItemValueAsDate(docid, fieldName)

概述】获取文档中Item的值,且以日期形式返回。

【返回值】java.util.Date

参数docid  // 文档的id标识 String

fieldName // 文档的字段名 String

【示例】脚本代码

// 实现getDocItemValueAsDate(docid, fieldName)函数的应用,获取指定文档的Item值var doc =getCurrentDocument();
var id = doc.getId();
getDocItemValueAsDate(id, "字段一");

5、getDocItemValueAsInt(docid, fieldName)

概述】获取文档中Item的值,且以整型值形式返回。

【返回值】int

参数docid  // 文档的id标识 String

fieldName // 文档的字段名 String

【示例】脚本代码

// 实现getDocItemValueAsInt(docid, fieldName)函数的应用,获取指定文档的Item值var doc =getCurrentDocument();
var id = doc.getId();
getDocItemValueAsInt(id, "字段一");

6、findDocument(docid)

概述】根据给定的docid,获取Document对象。

【返回值】cn.myapps.core.dynaform.document.ejb.Document

参数docid  // 文档标识ID  String

【示例】脚本代码

// 实现findDocument(docid)函数的应用,获取Document对象var id = getItemValueAsString("关联字段");
var doc = findDocument(id);
doc.getItemValueAsString("字段一");

7、queryByDQL(dql)

概述】根据dql查询符合条件的Document,结果以Collection对象返回。

【返回值】java.util.Collection

参数dqlString   // 查询符合条件语句 String

【示例】脚本代码

// 实现queryByDQL(dql)函数的应用,查询文档记录(DQL)var value = "";
var temp = "";
var temp1 = "";
var temp2 = "";
var docid = getId();    //getId()
var w1 = " and $parent.$id = '" + docid + "'";
var w2 = "";
var dql1 = "$formname  = 'fm_ticket_sub'" + w1;
var subdocs1 = queryByDQL(dql1);   //queryByDQL(dql)
if(subdocs1 != null && subdocs1.size() > 0) {for (var iter1 = subdocs1.iterator(); iter1.hasNext();) {var subdoc1 = iter1.next();temp1 = subdoc1.getLastmodified();if(temp1 > temp2) {temp2 = temp1;temp = subdoc1;}}subdoc2 = temp;value = subdoc2.getItemValueAsString("finishdegree");
}else{value = "0%";
}
value;

8、queryBySQL(sql)

概述】根据sql查询符合条件的Document,结果以Collection对象返回。

【返回值】java.util.Collection

参数】sql  // 查询符合条件语句  String

【示例】脚本代码

// 实现queryBySQL(sql)函数的应用,查询文档记录(SQL)//表单某字段值为根据SQL姓名字段的值查询出对应的电话(值脚本)
(function(){
var user = getItemValue("SQL姓名");
var rtn = '';
if(user!=null && user.trim().length()>0){
var sql="select * from tlk_查询文档记录SQL where item_SQL姓名='"+user+"'";
var query = queryBySQL(sql);
if(query!=null){var iter  =query.iterator();if(iter != null && iter.hasNext()){doc = iter.next();rtn = doc.getItemValueAsString("SQL电话");   }
}
}
return rtn;
})()

9、queryByDQLWithCache(dql)

概述】根据dql查询符合条件的Document,结果以Collection对象返回,并启用缓存。

【返回值】java.util.Collection

参数】dql  // 查询符合条件语句  String

【示例】脚本代码

// 实现queryByDQLWithCache(dql)函数的应用,带缓存查询文档记录(DQL)var docid = getId();
var w1 = " and $parent.$id = '" + docid + "'";
var temp1="";
var dql1 = "$formname  = 'queryByDQLDomain子表'" + w1;
var subdocs1 = queryByDQLWithCache(dql1);
if(subdocs1 != null && subdocs1.size() > 0) {
for (var iter1 = subdocs1.iterator(); iter1.hasNext();) {
var subdoc1 = iter1.next();temp1 += subdoc1 .getItemValueAsString("路径四")+";";
}
}
temp1;

10、queryBySQLWithCache(sql)

概述】根据sql查询符合条件的Document,结果以Collection对象返回,并启用缓存。

【返回值】java.util.Collection

参数】sql  // 查询符合条件语句  String

【示例】脚本代码

// 实现queryBySQLWithCache(sql)函数的应用,带缓存查询文档记录(SQL)//主子表单,主表单某字段值为当前子文档列表某字段值总和 (值脚本)
(function(){var docid = getId();var temp="";var sql="select * from tlk_带缓存查询文档记录SQL子表 where parent='"+docid+"'"var subdocs = queryBySQLWithCache(sql);if(subdocs!= null && subdocs.size() > 0) {println("subdocs----> "+subdocs.size());for (var iter = subdocs.iterator(); iter.hasNext();) {var subdoc = iter.next();temp += subdoc .getItemValueAsString("缓存子单价");println("temp-----> "+temp);}}return temp;
})

11、findByDQL(dql)

概述】根据DQL获取文档。

【返回值】cn.myapps.core.dynaform.document.ejb.Document

参数】dql  // 查询符合条件语句  String

【示例】脚本代码

// 实现findByDQL(dql)函数的应用,查找文档对象(DQL)var docid = getItemValueAsString("关联字段");
var w1 = " and $id = '" + docid + "'";
var temp1="";
var dql1 = "$formname  = '关联表单'" + w1;
var doc = findByDQL (dql1);
if(doc != null) {temp1=doc.getItemValueAsString("字段一");
}
temp1;

12、findBySQL(sql)

概述】根据SQL获取文档。

【返回值】cn.myapps.core.dynaform.document.ejb.Document

参数】sql  // 查询符合条件语句  String

【示例】脚本代码

//实现findBySQL(sql)函数的应用,查找文档对象(SQL)//两个表单A、B,B表单某字段值为A表单某字段值 (值脚本)
(function(){
var sql="select * from tlk_查找文档A对象SQL"
var datas=findBySQL(sql);
println(datas);
var temp=datas.getItemValueAsString("A编号");
return temp;
})()

13、queryByDQLDomain(dql, domainName)

概述】根据dql和域名查询符合条件的Document,结果以Collection对象返回。

【返回值】java.util.Collection

参数

dql  // 查询符合条件语句 String

domainName  // 企业域名称 String

【示例】脚本代码

// 实现queryByDQLDomain(dql, domainName)函数的应用,根据域名查询文档集合(DQL)var docid = getId();
var w1 = " and $parent.$id = '" + docid + "'";
var temp1="";
var dql1 = "$formname  = 'queryByDQLDomain子表'" + w1;
var subdocs1 = queryByDQLDomain(dql1, "domain");
if(subdocs1 != null && subdocs1.size() > 0) {for (var iter1 = subdocs1.iterator(); iter1.hasNext();) {var subdoc1 = iter1.next();temp1 += subdoc1 .getItemValueAsString("路径四")+";";
}
}
temp1;

14、countByDQL(dql)

概述】根据dql统计符合条件的Document数量。

【返回值】long

参数dql  // 查询符合条件语句 String

【示例】脚本代码

// 实现countByDQL(dql)函数的应用,根据域名查询文档集合(DQL)var dql = "$formname=’queryByDQLDomain子表’";
var t_count = countByDQL(dql);
var rtn = "";
if(t_count > 0) {rtn = "表中存在记录。";
}
rtn;

15、countBySQL(sql)

概述】根据sql统计符合条件的Document数量。

【返回值】long

参数dql  // 查询符合条件语句 String

【示例】脚本代码

实现countBySQL(sql)函数的应用,根据域名查询文档集合(SQL)HTML 代码:
脚本 代码:
?
var sql = "select count(*) from tlk_queryByDQLDomain子表";
var t_count = countBySQL(sql);
var rtn = "";
if(t_count > 0) {rtn = "表中存在记录。";
}
rtn;

16、sumByDQL(dql, fieldName)

概述】根据dql汇总符合条件的Document的指定字段。

【返回值】double

参数dql  // 查询符合条件语句  String

fieldName  // 文档的字段名  String

【示例】脚本代码

// 实现sumByDQL(dql, fieldName)函数的应用,根据dql汇总符合条件的Document的指定字段(DQL)var docid = getId();
var w1 = " and $parent = '" + docid + "'";
var temp1="";
var dql1 = "$formname  = 'queryByDQLDomain子表'" + w1;
var value = sumByDQL(dql1, "汇总字段");
value;

17、sumBySQL(sql)

概述】根据sql汇总符合条件的Document指定字段。

【返回值】double

参数sql  // 汇总符合条件语句  String

【示例】脚本代码

// 实现sumBySQL(sql)函数的应用,根据sql汇总符合条件的Document指定字段(SQL)var docid = getId();
var w1 = " and parent = '" + docid + "'";
var temp1="";
var sql = "select sum(‘item_汇总字段’) ";
sql+="from tlk_queryByDQLDomain子表 where istmp=0" + w1;
var value = sumBySQL(sql);
value;

18、checkFieldUnique(fieldName, fieldValue, msg)

概述】判断字段的唯一性。

【返回值】String

参数fieldName  // 文档的字段名  String

fieldValue  // 文档的字段值  String

msg // 提示信息内容  String

【示例】脚本代码

// 实现checkFieldUnique(fieldName, fieldValue, msg)函数的应用,判断字段的唯一性(校验脚本)var value=getItemValueAsString("名称");
var msg = "名称"+value+ "已经存在,请输入其它内容。";
checkFieldUnique("名称", value, msg);

19、isFirtNodeByDocId(docid)

概述】获取当前文档是否处在第一个节点,返回值为:true|false。

【返回值】boolean

参数docid  // 文档标识ID  String

【示例】脚本代码

// 实现isFirtNodeByDocId(docid)函数的应用,获取当前文档是否处在第一个节点,返回值为:true|falsevar docid = getItemValueAsString(“订单ID”);
var isFirtNode = isFirtNodeByDocId(docid);
var value = getItemValueAsString(“username”);
if (isFirtNode){
if (value==null || value.trim().length()<=0){value = getWebUser().getName();
}
}
value;

20、isCompleteByDocId(docid)

概述】获取当前文档是否审批完成,返回值为:true|false。

【返回值】boolean

参数docid  // 文档标识ID  String

【示例】脚本代码

// 实现isCompleteByDocId(docid)函数的应用,获取当前文档是否审批完成,返回值为:true|falsevar docid = getItemValueAsString(“订单ID”);
var isComplete = isCompleteByDocId(docid);
var rtn=true; //默认隐藏按钮
if (isComplete){rtn = false;//当前审批完成时,显示按钮
}
rtn;

三、邮件函数

1、sendMail(from, to, subject, body, host, user, password, bbc, validate)

概述】发送邮件给指定用户。

【返回值】无

参数from  // 发送人地址  String

to  // 接收人地址  String

subject   // 主题  String

body  // 内容  String

host  // 邮件SMTP服务器地址  String

user  // 邮件用户名  String

password  // 用户密码  String

bcc  // 秘密抄送地址 String

validate // 是否校验 boolean

【示例】脚本代码

// 实现sendMail(from, to, subject, body, host, user, password, bbc, validate)函数的应用,发送邮件给指定用户//注意要使用:user.isUseEamil() == true 来判断该用户是否后台开启了邮件发送功能
var from=getItemValueAsString("from");
var to=getItemValueAsString("to");
var host=getItemValueAsString("host");
var user=getItemValueAsString("user");
var password=getItemValueAsString("password");
var bbc=getItemValueAsString("bbc");
var validate=getItemValueAsString("validate");
var subject=getItemValueAsString("subject");
var body=getItemValueAsString("body");
sendMail(from, to, subject, body, host, user, password, bbc,  validate);

2、sendMailtoAllUser(from, subject, host, user,password, bbc, validate)

概述】发送邮件提醒给所有用户。

【返回值】无

参数from  // 发送人地址  String

subject  // 主题  String

host  // 邮件SMTP服务器地址  String

user  // 邮件用户名 String

password  // 用户密码  String

bcc  // 秘密抄送地址  String

validate  // 是否校验  boolean

【示例】脚本代码

// 实现sendMailtoAllUser(from, subject, host, user,password, bbc, validate)函数的应用,发送邮件提醒给所有用户//注意要使用:user.isUseEamil() == true 来判断该用户是否后台开启了邮件发送功能
var from=getItemValueAsString("from");
var to=getItemValueAsString("to");
var host=getItemValueAsString("host");
var user=getItemValueAsString("user");
var password=getItemValueAsString("password");
var bbc=getItemValueAsString("bbc");
var validate=getItemValueAsString("validate");
var subject=getItemValueAsString("subject");
var body=getItemValueAsString("body");
sendMailtoAllUser(from, subject, host, user, password, bbc,  validate);

3、sendEmailBySystemUser(to, subject, content)

概述】发送邮件给指定用户。

【返回值】无

参数to  // 接收人地址  String

subject  // 主题  String

content  // 内容  String

【示例】脚本代码

// 实现sendEmailBySystemUser(to, subject, content)函数的应用,以系统配置的用户发送邮件//在平台系统设置中配置好了邮件,想点表单某操作时给表单中的某控件值对应的邮箱发送邮件,可在操作按钮的动作执行前写脚本
//注意要使用:user.isUseEamil() == true 来判断该用户是否后台开启了邮件发送功能
(function(){
var to=getItemValueAsString("接收人地址");
var subject=getItemValueAsString("主题");
var content=getItemValueAsString("邮件内容");
sendEmailBySystemUser(to,subject,content);
})()

四、信息函数

1、sendMessage(senderid, receiverid, title, content)

概述】发送站内短信给指定用户。

【返回值】无

参数senderid  // 发送用户Id  String

receiverid  // 接收用户Id  String

title  // 主题  String

context  // 内容  String

【示例】脚本代码

// 实现sendMessage(senderid, receiverid, title, content)函数的应用,发送站内短信给指定用户var senderid=getItemValueAsString("senderid");
var receiverid=getItemValueAsString("receiverid");
var title=getItemValueAsString("title");
var content1=getItemValueAsString("content1");
sendMessage(senderid, receiverid, title, content1);

2、sendMessageByDept(departmentid, title, content)

概述】根据部门ID发送站内短信给指定部门下所有用户。

【返回值】无

参数departmentid  // 接收用户部门ID  String

title  // 主题  String

content  // 内容  String

【示例】脚本代码

// 实现sendMessageByDept(departmentid, title, content)函数的应用,根据部门ID发送站内短信给指定部门下所有用户var departmentid =getItemValueAsString("departmentid");
var title=getItemValueAsString("title");
var content1=getItemValueAsString("content1");
sendMessageByDept(departmentid, title, content1);

3、sendMessageByRole(roleid, domainid, title, content)

概述】根据角色ID发送站内短信给指定角色下的所有用户。

【返回值】无

参数

roleid  // 接收用户角色ID  String

domainid  // 企业域ID  String

title  // 主题  String

context  // 内容  String

【示例】脚本代码

// 实现sendMessageByRole(roleid, domainid, title, content)函数的应用,根据角色ID发送站内短信给指定角色下的所有用户var roleid =getItemValueAsString("roleid");
var domainid =getItemValueAsString("domainid");
var title=getItemValueAsString("title");
var content1=getItemValueAsString("content1");
sendMessageByRole(roleid, domainid, title, content1);

4、sendSMS(docid,title,content,receiver,isReply,isMass)

概述】发送手机短信

【返回值】无

参数docid  // 文档标识ID  String

title  // 标题  String

context  // 发送内容  String

receiver  // 接收者电话列表,有多个接收者,使用","做分隔符  String

isReply  // 是否需要收到回复  boolean

isMass   // 标识是否为群发,即是否有多位接收者  boolean

【示例】脚本代码

// 实现sendSMS(docid,title,content,receiver,isReply,isMass)函数的应用,根据角色ID发送手机短信给指定角色下的所有用户var docid =getItemValueAsString("文档编号"); //(这个值可以为空)
var subject=getItemValueAsString("标题");
var content=getItemValueAsString("内容");
var datas=getItemValueAsString("接收者"); //用户 Id
println("datas------> "+datas);
var usersid = splitText(datas,";");
println("usersid--------->"+usersid+"---------------");
var telephone="";
for(var i=0; i< usersid.length;i++){var user=getUserById(usersid[i]); //根据用户 Id 获取用户对象println("user--------> "+user);if(user!=null){if(user.getTelephone()!="" && user.isUseSMS() == true){telephone=user.getTelephone()+","; //获取用户电话,user.isUseSMS() == true指后台是否指定可以发送短信}}
}
telephone=telephone.substr(0,telephone.length-1);
println("电话: "+telephone+"-------------");
var isReply=getItemValueAsString("是否收到需回复");
var rtn=false;
if(isReply.equals("是")){rtn=true;
}else{rtn=false;
}
var isMass=getItemValueAsString("是否群发");
var rtn2=false;
if(isMass.equals("是")){rtn2=true;
}else{rtn2=false;
}
sendSMS(docid,subject,content, telephone,rtn,rtn2);

5、sendWeixinTextMessage(agentid,touser,content)

概述】给指定的微信用户发送图文消息

【返回值】如果发送成功,返回 true,发送失败,返回 false;

参数agentid  // 如果是企业号是智能托管模式,则用appId是微信企业号-应用中心定义的应用ID,例如是"1";(null 表示发送到企业小助手) String

touser  // 用户账号列表(消息接收者,多个接收者用‘|’分隔)。特殊情况:指定为@all,则向关注该企业应用的全部成员发送  String

content  // 发送的内容  String

【示例】脚本代码

// 实现sendWeixinTextMessage(agentid,touser,content)函数的应用,发送微信信息给指定用户var userids=getCurrentDocument().getItemValueAsString("接收人");//表单,获取接收人的值
var touser="";
if(userids!=""&&userids!=null){
userids = userids.split(';');
for (var i=0; i < userids.length; i++ ) {var user = getUserById(userids[i]);if(user!=null && user.isUseWEI() == true){  //user.isUseWEI() == true后台设置该用户是否发送微信touser+= user.getLoginno()+"|";}
}
touser=touser.substring(0,touser.length-1);
}
var formid=getCurrentDocument().getFormid();
var agentid="1";
var docid=getCurrentDocument().getId();
var request = $WEB.getParamsTable().getHttpRequest();//获取当前 request
//如果服务器本身就可以访问,就可以通过函数获取
var url0="http://"+request.getServerName()+":"+request.getServerPort()+getContextPath();
var url1="http://ws.jhkj.com/jhkj/portal/dynaform/document/view.action?_docid="+docid+"&_formid="+formid+"&application="+applicationId;//打开的 url 需要转码
url1=encodeURIComponent(url1);
var  url  = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxe36ce2ae5ff0a86c&redirect_uri="+url1+"&response_type=code&scope=snsapi_base&state="+domainId+"#wechat_redirect";
var content="发送的内容(http://xxxxx)";
var flag=sendWeixinTextMessage(agentid,touser,content);
println("flag==========="+flag);

6、sendWeixinRichTextMessage(agentid,touser,title,description,url,picUrl)

概述】给指定的微信用户发送图文消息

【返回值】如果发送成功,返回 true,发送失败,返回 false;

参数agentid  // 如果是企业号是智能托管模式,则用appId是微信企业号-应用中心定义的应用ID,例如是"1";(null 表示发送到企业小助手)  String

touser  // 用户账号列表(消息接收者,多个接收者用‘|’分隔)。特殊情况:指定为@all,则向关注该企业应用的全部成员发送  String

title  // 标题 String

description  //发送的内容描述  String

url  // 消息 url(可无) String

picUrl  // 图片 url(可无) String

【示例】脚本代码

// 实现sendWeixinRichTextMessage(touser,title,description,url,picUrl)函数的应用,发送微信信息给指定用户var userids=getCurrentDocument().getItemValueAsString("接收人");//表单,获取接收人的值
var touser="";
if(userids!=""&&userids!=null){
userids = userids.split(';');
for (var i=0; i < userids.length; i++ ) {var user = getUserById(userids[i]);if(user!=null && user.isUseWEI() == true){  //user.isUseWEI() == true后台设置该用户是否发送微信touser+= user.getLoginno()+"|";}
}
touser=touser.substring(0,touser.length-1);
}
var formid=getCurrentDocument().getFormid();
var agentid="1";
var docid=getCurrentDocument().getId();
var request = $WEB.getParamsTable().getHttpRequest();//获取当前request
//如果服务器本身就可以访问,就可以通过函数获取
var url0="http://"+request.getServerName()+":"+request.getServerPort()+getConte
xtPath();
var url1="http://ws.jhkj.com/jhkj/portal/dynaform/document/view.action?_docid="+docid+"&_formid="+formid+"&application="+applicationId;
//打开的url需要转码
url1=encodeURIComponent(url1);
var url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxe36ce2ae5ff0a86c&redirect_uri="+url1+"&response_type=code&scope=snsapi_base&state="+domainId+"#wechat_redirect";
var title="发送的标题";
var description="发送的内容";
var picUrl=url1+"/resource/image/photo.png";
var flag=sendWeixinRichTextMessage(agentid,touser,title,description,url,picUrl);
println("flag==========="+flag);

7、sendWeixinMessage(json)

概述】给指定的微信用户发送图文消息

【返回值】如果发送成功,返回 true,发送失败,返回 false;

参数content   // 发送的内容,微信消息(JSON 格式 参考微信平台 API 文档)  String

消息类型及数据格式 - 企业号开发者接口文档

【示例】脚本代码

// 实现sendWeixinMessage(json)函数的应用,发送微信信息给指定用户var userids=getCurrentDocument().getItemValueAsString("接收人");//表单,获取接收人的值
var sendcontent=getCurrentDocument().getItemValueAsString("主题");
var touser="";
if(userids!=""&&userids!=null){
userids = userids.split(';');
for (var i=0; i < userids.length; i++ ) {var user = getUserById(userids[i]);if(user!=null && user.isUseWEI() == true){  //user.isUseWEI() == true后台设置该用户是否发送微信touser+= user.getLoginno()+"|";}
}
touser=touser.substring(0,touser.length-1);
}
/*
var content={
"touser": "karrman",
"toparty": " PartyID1 | PartyID2 ",
"totag": " TagID1 | TagID2 ",
"msgtype": "text",
"agentid": 1,
"text": {
"content": "Holiday Request For Pony(http://xxxxx)"
},
"safe":"0"
}
*/
// 因为发送的内容就需要像上面格式,touser 是接收人的账号,如果是发送全部则@all,
//toparty 是微信企业号通讯录中部门定义的 ID,可以为空,
//totag 是微信企业号通知中定义的标签 ID,可以为空
//msgtype 消息的类型,可以是文本,也可以图文
//"agentid" 是微信企业号-应用中心对应的应用 ID
var content="{"
+ " touser: '"+touser+"',"
+ " toparty: '' ,"
+" msgtype: 'text',"
+ " agentid: 1,"
+" text: {content: '"+sendcontent+"'},"
+ " safe:'0'"
+ "}";
var jsonArray= new Packages.cn.myapps.util.json.JsonUtil();//实例化类
content =jsonArray.toJson(content);
println("joson=====0"+content);
var flag=sendWeixinMessage(content);
println("flag==========="+flag);

五、数字函数

1、isPositive(num)

概述】判断是否为正数。

【返回值】boolean

参数num  // 数字型参数  number

【示例】脚本代码

// 实现isPositive(num)函数的应用,正数校验//判断是否为正数
var c = getItemValueAsString("num");
var n = isPositive(c);
n;

2、isNegative(num)

概述】判断是否为负数。

【返回值】boolean

参数num  // 数字型参数  number

【示例】脚本代码

// 实现isNegative(num)函数的应用,负数校验//判断是否为负数
var c = getItemValueAsString("num");
var n = isNegative(c);
n;

3、round(num, pos)

概述】提供精确的小数位四舍五入处理。

【返回值】double

参数num  // 需要四舍五入的数字  number

pos  // 小数点后保留几位  int

【示例】脚本代码

// 实现round(num, pos)函数的应用,四舍五入函数//提供精确的小数位四舍五入处理
var c  = getItemValueAsString("num");
var n = round(c, 2);
n;

4、toCeil(num)

概述】返回大于等于其数字参数的最小整数。

【返回值】int

参数num  // 数字参数  number

【示例】脚本代码

// 实现toCeil(num)函数的应用,取最小整数//获取大于等于c的最小整数
var c  = getItemValueAsString("num");
var n = toCeil(c);
n;

5、toFloor(num)

概述】返回小于等于其数字参数的最大整数。

【返回值】int

参数num  // 数字型参数  number

【示例】脚本代码

// 实现toFloor(num)函数的应用,取最大整数//获取小于等于c的最大整数
var c  = getItemValueAsString("num");
var n = toFloor(c);
n;

六、字符串函数

1、isNumberText(str)

概述】检查其参数是否为数字格式的字符串。是,返回true;否,则返回false。

【返回值】boolean

参数str  // 字符串型参数  String

【示例】脚本代码

// 实现isNumberText(num)函数的应用,数字字串校验(写在控件校验脚本中)//数字字串校验
var c  = getItemValueAsString("field");
var flag = isNumberText(c);
flag;

2、isDateText(str)

概述】检查其参数是否为日期格式的字符串。是,返回true;否,则返回false。

【返回值】boolean

参数str  // 字符串型参数  String

【示例】脚本代码

// 实现isDateText(num)函数的应用,日期字串校验(写在控件校验脚本中)//日期字串校验
var c  = getItemValueAsString("field");
var flag = isDateText(c);
flag;

3、isMailAddressText(str)

概述】检查其参数是否为电子邮箱地址格式的字符串。是,返回true;否,则返回false。

【返回值】boolean

参数str  // 字符串型参数  String

【示例】脚本代码

// 实现isMailAddressText(num)函数的应用,Email字串校验(写在控件校验脚本中)// Email字串校验
var c  = getItemValueAsString("field");
var flag = isMailAddressText(c);
flag;

4、splitText(str,separator)

概述】按照指定的分割符,切割文本,将分割好的结果通过数组返回

【返回值】java.util.Array

参数str  // 待拆分字符串  String

separator  // 分割符  char

【示例】脚本代码

// 实现splitText(num)函数的应用,分割字符串//分割字符串
var spString = getItemValueAsString("field");
var arr = splitText(spString, ";");
var doc = getCurrentDocument();
var flag = false;
for (var i=0;i<arr.length;i++){ if="" (arr[i].equals(doc.getauthor().getid())){="" flag="true;" break;="" }="" flag;<="" pre=""><h5 xmlns="">结果:</h5><pre xmlns=""><code></code></pre>                      </arr.length;i++){>

5、splitString(str, separator)

概述】按照指定的分割字串,切割文本,将分割好的结果通过数组返回。

【返回值】java.util.Array

参数str  // 待拆分字符串  String

separator  // 分割字串  String

【示例】脚本代码

// 实现splitString(num)函数的应用,以指定字串分割字符串//以指定字串分割字符串
var spString = getItemValueAsString("field");
var arr = splitString (spString, "$@$");
var doc = getCurrentDocument();
var flag = false;
for (var i=0;i<arr.length;i++){
if="" (arr[i].equals(doc.getauthor().getid())){="" flag="true;" break;="" }="" flag;<="" pre=""><h5 xmlns="">结果:</h5><pre xmlns=""><code></code></pre>                      </arr.length;i++){>

6、joinText(strs)

概述】将指定的字符串数组按照指定的分隔符“;”组合成字符串,返回字符串。

【返回值】String

参数strs  // 字符串数组  Array

【示例】脚本代码

// 实现joinText(num)函数的应用,数据转换成字符串并以分割符连接//数据转换成字符串并以分割符连接
var spString = getItemValueAsString("field");
var arr = splitString (spString, "$@$");
//以“;”组合成字符串
joinText(arr);

7、leftString(str,separator)

概述】按照指定的分割符,从最左边截取文本,将截取好的最左边的值返回。

【返回值】String

参数str  // 待截取字符串  String

separator  // 分割字串  String

【示例】脚本代码

// 实现leftString(str, separator)函数的应用,以指定字串截取字符串var str = leftString("sssdf$kjl$kj", "$");
str
结果:sssdf

8、rightString(str,separator)

概述】按照指定的分割符,从最右边截取文本,将截取好的最右边的值返回。

【返回值】String

参数str  // 待截取字符串  String

separator  // 分割字串 String

【示例】脚本代码

// 实现rightString(str, separator)函数的应用,以指定字串截取字符串var str = rightString("sssdf$kjl$kj", "$");
str
结果:kj

9、replaceString(sourcelist,fromlist,tolist)

概述】按照指定的fromlist字符, 替换所有符合的字符串,返回替换后的值。

【返回值】String

参数sourcelist  // 待替换字符串  String

fromlist  // 需替换字串  String

tolist  // 替换后字串  String

【示例】脚本代码

// 实现replaceString(sourcelist,fromlist,tolist)函数的应用,以指定字串替换字符串var str = rightString("sssdf$kjl$kj", "$","");
str
结果:sssdfkjlkj

10、isNotNull(val)

概述】判断值是否不为空,为数字时不为0,为字符串时长度大于0,为日期时不为null。

【返回值】boolean

参数val  // 要作判断的值

【示例】脚本代码

// 实现isNotNull(num)函数的应用,非空值校验(写在控件校验脚本中)//非空值校验
var c  = getItemValue ("field");
var flag = isNotNull(c);
flag;

11、parseInt(text)

概述】将数字文本转换成整型并返回。

【返回值】int

参数text  // 数字文本参数

【示例】脚本代码

// 实现parseInt(text)函数的应用,将数字文本转换成整型并返回//表单有A、B两个字段,B字段值为A字段转换成整型后的值(值脚本)
(function(){
var value=getItemValueAsString("价格");
var rtn=0;if(value!=null && value.trim().length()>0){rtn=parseInt(value);}
return rtn;
})()

12、parseLong(text)

概述】将数字文本转换成长整型并返回。

【返回值】long

参数text  // 数字文本参数

【示例】脚本代码

// 实现parseLong(text)函数的应用,将数字文本转换成长整型并返回//表单有A、B两个字段,B字段值为A字段转换成长整型后的值(值脚本)
(function(){
var value=getItemValueAsString("价格");
var rtn=0;if(value!=null && value.trim().length()>0){rtn=parseLong(value);}return rtn;
})()

13、parseDouble(text)

概述】将数字文本转换成浮点型并返回

【返回值】double

参数text  // 数字文本参数

【示例】脚本代码

// 实现parseDouble(text)函数的应用,将数字文本转换成浮点型并返回//表单有A、B两个字段,B字段值为A字段转换成浮点型后的值(值脚本)
(function(){var value=getItemValueAsString("价格");var rtn=0;if(value!=null && value.trim().length()>0){rtn=parseDouble(value);}    return rtn;
})()

七、创建JAVA类实例函数

1、createProcess(pathText)

概述】生成系统类对象。

【返回值】Object

参数pathText  // 类的名字空间,如"cn.myapps.core.department.ejb.DepartmentProcess"  String

【示例】脚本代码

// 实现createProcess(pathText)函数的应用,创建系统操作类对象//创建系统操作类对象
var dprocess = createProcess(
"cn.myapps.core.user.ejb.DepartmentProcess");
var depts = dprocess.queryByDomain(getDomainid());
var depts="";
for (var it = depts.iterator(); it.hasNext(); ) {var dept = it.next();depts=dept.getName();break;
}
depts;

2、createObject(pathText)

概述】生成系统类对象。

【返回值】Object

参数pathText  // 类的名字空间,如"cn.myapps.util.DateUtil"  String

【示例】脚本代码

// 实现createObject(pathText)函数的应用,创建指定类对象//创建指定类对象
var opts = createObject(
"cn.myapps.core.dynaform.form.ejb.Options");
opts.add("A","A");
opts.add("B","B");
opts.add("C","C");
opts;

3、getDocProcess(applicationid)

概述】获取软件Id号对应数据文档操作类对象。

【返回值】cn.myapps.core.dynaform.document.ejb.DocumentProcess

参数applicationid  // 应用软件标识ID  String

【示例】脚本代码

// 实现getDocProcess(applicationid)函数的应用,创建文档操作类对象var rtn = "";
var dql ="$formname=Demo3";
var process = getDocProcess(getApplication());//创建文档操作类对象
var docs = queryByDQL(dql);
if (docs != null && docs.size() > 0) {rtn = docs.size();
}
rtn;

4、getUploadProcess(applicationid)

概述】获取软件Id号对应文件上传对象。

【返回值】cn.myapps.core.dynaform.document.ejb.UploadProcess

参数applicationid  // 应用软件标识ID  String

【示例】脚本代码

// 实现getUploadProcess(applicationid)函数的应用,创建文件上传对象//使用文件上传对象根据列名和列值获取文件对象
(function(){
var process = getUploadProcess(getApplication());
var UploadVO=process.findByColumnName1("path","/uploads/item/Testing25.xls");
println(UploadVO+"======UploadVO======");
return UploadVO;
})()

5、createOptions()

概述】生成选项对象。

【返回值】cn.myapps.core.dynaform.form.ejb.Options

参数

【示例】脚本代码

// 实现createOptions()函数的应用,创建指定类对象var opts = createOptions(); //创建指定类对象
opts.add("A","A");
opts.add("B","B");
opts.add("C","C");
opts;

【实例】

var opts=createOptions();
opts.add("","");
var dql = "$formname='Fm_JobStatus'";
var datas  =queryByDQL(dql);
if(datas!=null && datas.size()>0){for(var iter = datas.iterator();iter.hasNext();){var doc = iter.next(); var k = doc.getItemValueAsString("Fd_TypeName");var v = doc.getItemValueAsString("Fd_TypeName");opts.add(k,v);}
}
opts;

6、createParamsTable()

概述】生成参数对象。

【返回值】cn.myapps.base.action.ParamsTable

参数

【示例】脚本代码

// 实现createParamsTable()函数的应用,创建指定类对象var params = createParamsTable(); //创建指定类对象
params.setParameter("starttime",getCurDate("yyyy-MM-dd HH:mm:ss"));

7、getUserProcess()

概述】生成用户操作对象。

【返回值】

参数

【示例】脚本代码

// 实现createParamsTable()函数的应用,创建指定类对象var process = getUserProcess(); //创建指定类对象
var userAccount = getItemValueAsString("userAccount");
var user = process.getUserByLoginno(userAccount, getDomainid());

8、getDepartmentProcess()

概述】生成部门操作对象。

【返回值】cn.myapps.core.department.ejb.DepartmentProcess

参数

【示例】脚本代码

// 实现getDepartmentProcess()函数的应用,创建指定类对象var opts=createOptions();
opts.add("","");
var process = getDepartmentProcess();
var dpts=  process.queryByDomain(getDomainid());
for(var it=dpts.iterator();dpts!=null && it.hasNext();){var dpt = it.next();opts.add(dpt.getName(),dpt.getId());
}
opts;

9、getRoleProcess()

概述】生成角色操作对象。

【返回值】cn.myapps.core.role.ejb.RoleProcess

参数

【示例】脚本代码

// 实现getRoleProcess()函数的应用,创建指定类对象var process = getRoleProcess(); //创建指定类对象
var roleVO = process.doViewByName(name, getApplication());

10、getFormProcess()

概述】创建表单业务对象。

【返回值】cn.myapps.core.dynaform.form.ejb.FormProcess

参数

【示例】脚本代码

// 实现getFormProcess()函数的应用,创建指定类对象//视图框确定脚本,刷新子表
var did = getId();
var parentId = getParameterAsText("_selects");
//获取视图选择框对应的doc
var parentDoc = findDocument(parentId);
if(parentDoc!=null && parentId !=null
&& parentId.trim().length()>0){
//获取视图选择框对应的doc的子docvar subDocs1 = parentDoc.getChilds("施工物料明细");var process = getDocumentProcess();var domain = getDomainid();var application = getApplication();var delprocess = getDataSourceProcess();
//如果子doc不为空,遍历子doc,取出每个子doc的值并保存到另一张子doc中。if(subDocs1!=null){var sql = "delete from tlk_施工物料明细 where PARENT='"+did+"'";delprocess.remove("rims",sql,getApplication());var formProcess = getFormProcess();var form = formProcess.doViewByFormName("施工物料明细",application); for(var iter = subDocs1.iterator(); iter.hasNext();){var subdoc = iter.next();
var doc = process.doNew(subform,getWebUser(),createParamsTable());doc.setIstmp(false);doc.setParent(did);doc.findItem("施工物料名称").setValue(subdoc.getItemValueAsString("施工物料名称"));doc.findItem("数量").setValue(subdoc.getItemValueAsString("数量"));doc.addStringItem("单位",subdoc.getItemValueAsString("单位"));doc.findItem("申请人").setValue(subdoc.getItemValueAsString("申请人"));process.doCreate(doc);}}
}

11、getDocumentProcess()

概述】创建文档业务对象。

【返回值】cn.myapps.core.dynaform.document.ejb.DocumentProcess

参数

【示例】脚本代码

// 实现getDocumentProcess()函数的应用,创建指定类对象//视图框确定脚本,刷新子表
var did = getId();
var parentId = getParameterAsText("_selects");
//获取视图选择框对应的doc
var parentDoc = findDocument(parentId);
if(parentDoc!=null && parentId !=null && parentId.trim().length()>0){
//获取视图选择框对应的doc的子docvar subDocs1 = parentDoc.getChilds("施工物料明细");var process = getDocumentProcess();var domain = getDomainid();var application = getApplication();var delprocess = getDataSourceProcess();
//如果子doc不为空,遍历子doc,取出每个子doc的值并保存到另一张子doc中。if(subDocs1!=null){var sql = "delete from tlk_施工物料明细 where PARENT='"+did+"'";delprocess.remove("rims",sql,getApplication());var formProcess = getFormProcess();var form = formProcess.doViewByFormName("施工物料明细",application); for(var iter = subDocs1.iterator(); iter.hasNext();){var subdoc = iter.next();
var doc = process.doNew(subform,getWebUser(),createParamsTable());doc.setIstmp(false);doc.setParent(did);doc.findItem("施工物料名称").setValue(subdoc.getItemValueAsString("施工物料名称"));doc.findItem("数量").setValue(subdoc.getItemValueAsString("数量"));doc.addStringItem("单位",subdoc.getItemValueAsString("单位"));doc.findItem("申请人").setValue(subdoc.getItemValueAsString("申请人"));process.doCreate(doc);}}
}

12、getDataSourceProcess()

概述】创建数据源操作对象。 注:数据源操作对象应用需要,软件->高级工具->数据源的支持。首先需要开发者在软件的数据源模块创建数据源。

【返回值】cn.myapps.core.dynaform.dts.datasource.ejb.DataSourceProcess

参数

【示例】脚本代码

// 实现getDataSourceProcess()函数的应用,创建指定类对象//省份。用户首先需要创建"kd"数据源。
var opts = createOptions();
opts.add("","");
try{
var process = getDataSourceProcess(); //创建指定类对象
var appid = getApplication();
var sql = "select cityid,cityname from cityinfo where rootid=0";
var datas = process.queryDataSourceSQL("kd",sql ,appid);
if(datas!=null){for(var iterator = datas.iterator();iterator.hasNext();){var map1 = iterator.next();//取值var name= map1.get("cityname");var value = map1.get("cityid");opts.add(name,value);}
}
}catch(e){}
opts;

13、getDomainProcess()

概述】创建企业域业务对象。

【返回值】cn.myapps.core.domain.ejb.DomainProcess

参数

【示例】脚本代码

// 实现getDomainProcess()函数的应用,创建指定类对象var process = getDomainProcess(); //创建指定类对象
var domainName = "demo";
var domain = process.getDomainByName(domainName);

14、getViewProcess()

概述】创建视图业务对象

【返回值】cn.myapps.core.dynaform.view.ejb.ViewProcess

参数

【示例】脚本代码

// 实现getViewProcess()函数的应用,创建视图业务对象。//通过创建视图业务对象,然后根据名称获取视图对象
(function(){
var process = getViewProcess(); //视图业务对象
var applicationId=getApplication();
var view= process.getViewByName("表单控件测试单行文本框",applicationId);
println(view);
return view;
})()

15、getLastRelationHis(docid, flowid)

概述】根据文档ID与流程ID获取文档最后审批记录对象

【返回值】cn.myapps.core.dynaform.document.ejb.Document

参数docid  // 文档IDString

flowid  // 流程ID  String

【示例】脚本代码

// 实现getLastRelationHis(docid,flowid)函数的应用,根据文档ID与流程ID获取文档最后审批记录对象(function(){
var doc = getCurrentDocument();
var docid=doc.getId();
var flowid=doc.getFlowid();
var process="";
if(flowid!=null && flowid.trim().length()>0){process=getLastRelationHis(docid,flowid);
}
return process;
})()

16、getDefaultDepartment()

概述】user.getDefaultDepartment(),获得当前用户对象的默认部门

【返回值】当前用户对象的默认部门id

参数】user 用户对象

flowid  // 流程ID  String

【示例】脚本代码

// 获取当前登录用户的默认部门
getWebUser().getDefaultDepartment();

八、日期函数

1、getToday()

概述】获取当日日期。

【返回值】java.util.Date

参数

【示例】脚本代码

// 实现getToday()函数的应用,当前日期var starttime = getItemValueAsDate("starttime");
if(starttime==null) {starttime= getToday();  //当前日期
}
starttime;

2、getDay(date)

概述】获取日期。

【返回值】int

参数date  // 日期型参数  Date

【示例】脚本代码

// 实现getDay(date)函数的应用,日期天var starttime = getItemValueAsDate("starttime");
var day = getDay(getToday());
if(starttime!=null) {day= getDay (starttime);  //日期天
}
day;

3、getMonth(date)

概述】获取月份。

【返回值】int

参数date  // 日期型参数  Date

【示例】脚本代码

// 实现getMonth(date)函数的应用,取月份//表单某字段值为当前日期中的月份  (值脚本)
(function(){
var starttime = getItemValueAsDate("日期");
var month = getMonth(getToday());
if(starttime!=null) {month = getMonth (starttime);  //取月份
}
return month;
})()

4、getYear(date)

概述】获取年份。

【返回值】int

参数date  // 日期型参数  Date

【示例】脚本代码

// 实现getYear(date)函数的应用,取月份var starttime = getItemValueAsDate("starttime");
var year = getYear(getToday());
if(starttime!=null) {year= getYear(starttime);  //取年份
}
year;

5、parseDate(str, format)

概述】将字符串按给定格式转换为日期型。

【返回值】java.util.Date

参数str  // 待转换的字符串,需符合format指定的格式  String

format  // 日期格式  String

【示例】脚本代码

// 实现parseDate (str,fromat)函数的应用,日期转换函数var starttime = "2010-07-26 12:35:50";
var startdate = parseDate(starttime,"yyyy-MM-dd HH:mm:ss");
starttime;

6、diffYears(startDate, endDate)

概述】获取相隔年份数。

【返回值】int

参数startDate  // 开始时间  Date

endDate  // 结束时间  Date

【示例】脚本代码

// 实现diffYears(startDate, endDate)函数的应用,相隔年份函数var starttime = getItemValueAsDate("starttime");
var endtime = getItemValueAsDate("endtime");
var diff = diffYears(starttime,endtime);
diff;

7、diffMonths(startDate, endDate)

概述】获取相隔月份数。

【返回值】long

参数startDate  // 开始时间  Date

endDate  // 结束时间  Date

【示例】脚本代码

// 实现diffMonths(startDate, endDate)函数的应用,相隔月份函数var starttime = getItemValueAsDate("starttime");
var endtime = getItemValueAsDate("endtime");
var diff = diffMonths(starttime,endtime);
diff;

8、diffDays(startDate, endDate)

概述】获取相隔天数。

【返回值】long

参数startDate  // 开始时间  Date

endDate  // 结束时间  Date

【示例】脚本代码

// 实现diffDays(startDate, endDate)函数的应用,相隔天数函数var starttime = getItemValueAsDate("starttime");
var endtime = getItemValueAsDate("endtime");
var diff = diffDays(starttime,endtime);
diff;

9、diffHours(startDate, endDate)

概述】相隔小时数

【返回值】long

参数startDate  // 开始时间  Date

endDate  // 结束时间  Date

【示例】脚本代码

// 实现diffHours(startDate, endDate)函数的应用,相隔小时数函数var starttime = getItemValueAsDate("starttime");
var endtime = getItemValueAsDate("endtime");
var diff = diffHours(starttime,endtime);
diff;

10、adjustYear(date, num)

概述】日期年份校正。

【返回值】java.util.Date

参数date  // 日期型参数  Date

num  // 整数型参数  int

【示例】脚本代码

// 实现adjustYear(date, num)函数的应用,日期年份校正函数var starttime = getItemValueAsDate("starttime");
var newtime= adjustYear(starttime,1);
newtime;

11、adjustMonth(date, num)

概述】日期月份校正。

【返回值】java.util.Date

参数date  // 日期型参数  Date

num  // 整型参数  int

【示例】脚本代码

// 实现adjustMonth(date, num)函数的应用,日期月份校正函数var starttime = getItemValueAsDate("starttime");
var newtime= adjustMonth(starttime,1);
newtime;

12、adjustDay(date, num)

概述】日期天份校正。

【返回值】java.util.Date

参数date  // 日期型参数  Date

num  // 整型参数  int

【示例】脚本代码

// 实现adjustDay(date, num)函数的应用,日期天校正函数var starttime = getItemValueAsDate("starttime");
var newtime= adjustDay(starttime,1);
newtime;

13、format(date,formatText)

概述】把其日期参数转化成指定格式的字符串。

【返回值】String

参数date  // 日期型参数  Date

formatText  // 指定字串格式  String

【示例】脚本代码

// 实现parseDate (str,fromat)函数的应用,日期转换函数var starttime = getItemValueAsDate("starttime");
var deadline = getItemValueAsDate("deadline");
var retvar = "";
if(deadline==null) {retvar = "过期时间必须填写!";
}else{var starttime = format(starttime,"yyyy-MM-dd HH:mm:ss"); var deadline =  format(deadline,"yyyy-MM-dd HH:mm:ss");if(starttime != null && deadline != null) {if(starttime >= deadline) {retvar = "开始时间必须早于过期时间!";}}
}
retvar;

14、getCurDate(formatText)

概述】按其参数指定的格式获取当前时间,并以字符串的形式返回。

【返回值】String

参数formatText  // 字符串型参数,指定需要显示的格式,如"yyyy-MM-dd HH:mm:ss"  String

【示例】脚本代码

// 实现getCurDate(formatText)函数的应用,获取当前日期并以指定格式字符串返回var starttime = getItemValueAsDate("starttime");
if(starttime==null) {
//当前日期var curdate = getCurDate("yyyy-MM-dd HH:mm:ss");starttime= parseDate(curdate, "yyyy-MM-dd HH:mm:ss");
}
starttime;

九、计算器函数

1、countNext(countLabel)

概述】每次调用时指定计数器都会自动增长1(根据计算器名,以0为基元),可用作生成增长序列号。

【返回值】int

参数countLabel  // 字符串型参数  String

【示例】脚本代码

// 实现countNext(countLabel)函数的应用,获取计算器的下一个增长序列值var rtn = getItemValue("序号1");
if(rtn == null || rtn.trim().length() <= 0){rtn = countNext("a");//计算器的下一个增长序列值
}
rtn;

2、getLastCount(countLabel)

概述】根据计数器名称获取计数器的当前计数值。

【返回值】int

参数countLabel  // 字符串型参数  String

【示例】脚本代码

// 实现getLastCount(countLabel)函数的应用,获取计算器的当前计数值//自动生成编码
var prefix = "QJD";
var val = getItemValue("表单编号");
if(val == null || val.trim().length() <= 0){ var code = getLastCount(prefix);if(code<=0) code=countNext(prefix); val =prefix+code;var dql = "$formname='请假单' and 表单编号='" + val + "' and $id <>'" + getId() + "'";var datas = queryByDQL(dql);if (datas !=null && datas.size()>0){var seq = countNext(prefix); val = prefix + seq; }
}
val;

3、countNext2(headText, isYear, isMonth, isDay, digit)

概述】返回“前缀 +年月日+ 计数器的下一个计数值”。

【返回值】String

参数headText  // 计数器名称,同时作为前缀的字符串  String

isYear  // 前缀中是否包含年份  boolean

isMonth  // 前缀中是否包含月份  boolean

isDay  // 前缀中是否包含日期  boolean

digit  // 整数型,指定计数器序列号的位数,如长度不足在计数值前面补0  int

【示例】脚本代码

// 实现countNext2(headText, isYear, isMonth, isDay, digit)函数的应用,获取新自动编号//自动生成编码
var prefix = "QJD";
var val = getItemValue("表单编号");
if(val == null || val.trim().length() <= 0){ var code = getLastCount(prefix);if(code<=0){val=countNext2(prefix,true,false,false,5); //新自动编号}else{val =getLastCount2(prefix,true,false,false,5);}var dql = "$formname='请假单' and 表单编号='" + val + "' and $id <>'" + getId() + "'";var datas = queryByDQL(dql);if (datas !=null && datas.size()>0){val = countNext2(prefix,true,false,false,5); }
}
val;

4、getLastCount2(headText, isYear, isMonth, isDay, digit)

概述】返回“前缀 +年月日+ 计数器的当前计数值”。

【返回值】String

参数headText  // 计数器名称,同时作为前缀的字符串  String

isYear  // 前缀中是否包含年份  boolean

isMonth  // 前缀中是否包含月份  boolean

isDay  // 前缀中是否包含日期  boolean

digit  // 整数型,指定计数器序列号的位数,如长度不足在计数值前面补0  int

【示例】脚本代码

// 实现getLastCount2(headText, isYear, isMonth, isDay, digit)函数的应用,自动编号的最后编号//自动生成编码
var prefix = "QJD";
var val = getItemValue("表单编号");
if(val == null || val.trim().length() <= 0){ var code = getLastCount(prefix);if(code<=0){val=countNext2(prefix,true,false,false,5); }else{val =getLastCount2(prefix,true,false,false,5); //自动编号的最后编号}var dql = "$formname='请假单' and 表单编号='" + val + "' and $id <>'" + getId() + "'";var datas = queryByDQL(dql);if (datas !=null && datas.size()>0){val = countNext2(prefix,true,false,false,5); }
}
val;

5、resetCounter(base)

概述】重置计数器的值,使其归0。

【返回值】无

参数base  // 计数器名称,字符串型参数  String

【示例】脚本代码

// 实现resetCounter(base)函数的应用,重置计数器的值,使其归0//自动生成编码
var prefix = "QJD";
var val = getItemValue("表单编号");
if(val == null || val.trim().length() <= 0){ var code = getLastCount(prefix);if(code<=0){val=countNext2(prefix,true,false,false,5); }else if (code>10000){resetCounter(prefix);  //重置计数器的值
val=countNext2(prefix,true,false,false,5);}else{val =getLastCount2(prefix,true,false,false,5); }var dql = "$formname='请假单' and 表单编号='" + val + "' and $id <>'" + getId() + "'";var datas = queryByDQL(dql);if (datas !=null && datas.size()>0){val = countNext2(prefix,true,false,false,5); }
}
val;

十、系统函数

1、getApplication()

概述】获取应用软件标识ID

【返回值】String

参数

【示例】脚本代码

// 实现getApplication()函数的应用,返回应用软件标识IDvar applicationId=getApplication();
applicationId;

2、getWebUser()

概述】返回当前登录用户对象。

【返回值】cn.myapps.core.user.action.WebUser

参数

【示例】脚本代码

// 实现getWebUser()函数的应用,返回当前登录用户对象var rtn = "";
var val = getItemValue("requestor");
if(val != null && val.trim().length() > 0){ rtn = val;
} else {var webUser = getWebUser();    //返回当前登录用户对象rtn = webUser.getName();
}
rtn;

3、getDomainid()

概述】返回当前登录用户所属的企业域ID。

【返回值】String

参数

【示例】脚本代码

// 实现getDomainid()函数的应用,返回当前登录用户所属的企业域ID//创建系统操作类对象
var dprocess = getDepartmentProcess();
var domainid = getDomainid(); //获取当前登录用户所属的企业域ID
var depts = dprocess.queryByDomain(domainid);
var depts="";
for (var it = depts.iterator(); it.hasNext(); ) {var dept = it.next();depts=dept.getName();break;
}
depts;

4、getParamsTable()

概述】获取参数列表对象,可以对参数进行基本的增,删和格式化参数。

【返回值】cn.myapps.base.action.ParamsTable

参数

【示例】脚本代码

// 实现getParamsTable()函数的应用,获取参数列表对象var value = getItemValueAsString("field1");
if (value==null || value.trim().length()<=0){var params = getParamsTable();  //获取参数列表对象
value = params.getParameterAsString("param1");
}
value;

5、getParameter(paramName)

概述】获取参数值,以字符串的形式返回。

【返回值】String

参数paramName  // 参数名  String

【示例】脚本代码

// 实现getParameter(paramName)函数的应用,获取参数值以字符型返回var value = getItemValueAsString("field1");
if (value==null || value.trim().length()<=0){
value = getParameter("param1");  //获取参数值以字符型返回
}
value;

6、getParameterAsText(paramName)

概述】获取参数值,以";"进行切割格式化成文本型,以字符串的形式返回。

【返回值】String

参数paramName  // 参数名  String

【示例】脚本代码

// 实现getParameterAsText(paramName)函数的应用,获取参数值,以";"进行切割格式化成文本型,以字符串的形式返回var value = getItemValueAsString("field1");
if (value==null || value.trim().length()<=0){
value = getParameterAsText("param1");  //获取参数值
}
value;

7、getParameterAsArray(paramName)

概述】获取参数值,并以字符数组的形式返回。

【返回值】java.util.Array

参数paramName  // 参数名  String

【示例】脚本代码

var value = getItemValueAsString("field1");
if (value==null || value.trim().length()<=0){
var arr = getParameterAsArray("param1");  //获取参数值
for(var i=0;arr!=null && i<arr.length;i++){ value="" +="’" +arr[i]="" "’"="" }="" value;<="" pre=""><h5 xmlns="">结果:</h5><pre xmlns=""><code></code></pre>                      </arr.length;i++){>

8、getContextPath()

概述】获取当前项目请求的URI部分。如:http://localhost/jhkj,获取到的值“/jhkj”。

【返回值】String

参数

【示例】脚本代码

实现getContextPath()函数的应用,获取当前项目请求的URI部分HTML 代码:
脚本 代码:
?
//带参数创建表单(计算脚本控件)
var contextPath = getContextPath();
var q = getItemValueAsString("字段1");
var f = "<a href=""+contextPath;
f+="/core/dynaform/activity/action.action";
f+="?_activityid=11de-9c49-2afcf551-a4bc-bdf898597d7d";
f+="&_tips=false";
f+="&_viewid=11de-9c48-f8660f74-a4bc-bdf898597d7d";
f+="&_backURL=";
f+=contextPath +"/core/dynaform/view/displayView.action";
f+="?_viewid=11de-9c48-f8660f74-a4bc-bdf898597d7d";
f+="&_currpage=1&字段1=";
f+=q+"">新建</a>";
f;

9、getServerHostAddr()

概述】获取当前项目请求的URI部分。如:http://localhost:88/jhkj,获取到的值“/jhkj”。

【返回值】String

参数

【示例】脚本代码

// 实现getServerHostAddr())函数的应用,获取当前项目请求的URI部分//带参数创建表单(计算脚本控件)
var contextPath = getContextPath();
var q = getItemValueAsString("字段1");
var f = "<a href=""+contextPath;
f+="/core/dynaform/activity/action.action";
f+="?_activityid=11de-9c49-2afcf551-a4bc-bdf898597d7d";
f+="&_tips=false";
f+="&_viewid=11de-9c48-f8660f74-a4bc-bdf898597d7d";
f+="&_backURL=";
f+=contextPath +"/core/dynaform/view/displayView.action";
f+="?_viewid=11de-9c48-f8660f74-a4bc-bdf898597d7d";
f+="&_currpage=1&字段1=";
f+=q+"">新建</a>";
f;

10、getSession(sessionName)

概述】获取当前浏览器session。

【返回值】Object

参数sessionName  // session属性名称  String

【示例】脚本代码

//实现getSession(sessionName)函数的应用,获取Session属性值//获取应用ID
getSession("APPLICATION");

11、request

概述】Java类里面获取Request对象。

【返回值】Request对象

参数

【示例】脚本代码

// Request对象var request = $WEB.getParamsTable().getHttpRequest();//获取当前request
request.getServerName();
request.getServerPort();
request.getAttribute("APPLICATION");
request.getParameter("APPLICATION"); //是用来接受用post个get方法传递过来的参数的.
.........

12、getEquipment()

概述】判断用户是在手机还是在PC(电脑)登录。

【返回值】0为PC,1为手机

参数

【示例】脚本代码

// 实现getEquipment()函数的应用var user = getWebUser();
if(user.getEquipment()==1){//用手机设备访问//do something
}

13、getEquipmentName()

概述】判断用户是在手机登录是什么类型。

【返回值】返回值为空时PC登陆,如果是手机直接出类型

参数

【示例】脚本代码

// 实现getEquipmentName()函数的应用var user = getWebUser();var ren = user.getEquipment();
ren;
//还可以直接String userAgent = request.getHeader("user-agent");//值进行分析//结果:android/ipad/ipod/iphone/windows ce/windows phone/mqqbrowser/chrome

14、createAlert(content)

概述】创建警告对话框。

【返回值】无

参数content   // 提示内容。如:“单据填写有误无法保存!”  String

【示例】脚本代码

// 实现createAlert(content)函数的应用,创建警告对话框//保存前,动作执行前脚本,进行单据校验
var name = getItemValueAsString("name");
if (name==null || name.trim().length()<=0){createAlert("姓名字段未填写,不能保存,请输入!");
}

15、createConfirm(content)

概述】点击确定,表示确认提交文档内容;点击取消,表示取消提交文档内容

【返回值】无

参数

【示例】脚本代码

// 实现createConfirm(content)函数的应用,创建提示对话框//提交前,动作执行前脚本,进行提交确认
createConfirm("确认要提交?");

16、getDepartmentByLevel(level)

概述】返回获取到的对应等级的所有部门的集合。

【返回值】cn.myapps.core.department.ejb.DepartmentVO

参数level  //  部门等级值 int

【示例】脚本代码

// 实现getDepartmentByLevel(level)函数的应用,获取指定部门的下级部门,并返回该部门的下级部门集合var opts=createOptions();
var deptUnderList=getDepartmentByLevel(1);
opts.add("","");
for(var iter=deptUnderList.iterator();iter.hasNext();){var deptUnder=iter.next();var deptName=deptUnder.getName();opts.add(deptName, deptName);
}
opts;

17、getDeptIdByNameAndLevel(name,level)

概述】返回对应部门ID。

【返回值】String

参数level  // 部门等级值  int

name   // 部门名称  String

【示例】脚本代码

// 实现getDeptIdByNameAndLevel(name,level)函数的应用,获取指定部门的下级部门,并返回该部门的下级部门集合var deptid=getDeptIdByNameAndLevel("销售部",1);
deptid;

18、getRoleIdByName(name)

概述】返回对应角色ID。

【返回值】String

参数name  // 角色名称  String

【示例】脚本代码

// 实现getRoleIdByName(name)函数的应用,根据角色名获取角色IDvar roleid= getRoleIdByName("销售总监");
roleid;

19、getUserIdByLoginno(loginno)

概述】返回对应用户ID。

【返回值】String

参数loginno  // 用户登录名  String

【示例】脚本代码

// 实现getUserIdByLoginno(loginno)函数的应用,返回对应用户ID//返回用户表中对应name字段值为"张三"记录对象ID
var usid = getUserIdByLoginno("张三");
usid;

20、getDepartmentsByParent(parent)

概述】返回指定部门的下级部门对象的集合。

【返回值】java.util.Collection

参数parent  // 部门ID String

【示例】脚本代码

// 实现getDepartmentsByParent(parent)函数的应用,获取指定部门的下级部门,并返回该部门的下级部门集合var deptId=getItemValue("部门A");
var opts=$TOOLS.createOptions();
var deptUnderList=getDepartmentsByParent(deptId);
opts.add("","");
for(var iter=deptUnderList.iterator();iter.hasNext();){var deptUnder=iter.next();var deptName=deptUnder.getName();opts.add(deptName, deptName);
}
opts;

21、getUsersByDptId(dptid)

概述】返回指定部门下的所有用户对象的集合。

【返回值】java.util.Collection

参数dptid  // 部门ID  String

【示例】脚本代码

// 实现getUsersByDptId(dptid)函数的应用,返回指定部门下的所有用户对象的集合var deptId=getItemValue("部门A");
var opts= createOptions();
var deptUnderList=getUsersByDptId(deptId);
opts.add("","");
for(var iter=deptUnderList.iterator();iter.hasNext();){var deptUnder=iter.next();var name=deptUnder.getName();opts.add(name, name);
}
opts;

22、getUsersByRoleId(roleid)

概述】返回指定角色下的所有用户对象的集合。

【返回值】java.util.Collection

参数roleid  // 角色ID  String

【示例】脚本代码

// 实现getUsersByRoleId(roleid)函数的应用,返回指定角色下的所有用户对象的集合var roleid = getItemValueAsString("角色");
var users = getUsersByRoleId(roleid);
var opts=createOptions();
opts.add("","");
for(var iter=users.iterator();users !=null && iter.hasNext();){var user=iter.next();opts.add(user.getName(), user.getId());
}
opts;

23、getUsersByDptIdAndRoleId(dptid,roleid)

概述】返回指定部门、角色的所有用户对象的集合。

【返回值】java.util.Collection

参数dptid  // 部门ID  String

roleid  // 角色ID  String

【示例】脚本代码

// 实现getUsersByDptIdAndRoleId(dptid,roleid)函数的应用,返回指定部门、角色的所有用户对象的集合var roleid = getItemValueAsString("角色");
var dptid = getItemValueAsString("部门");
var users = getUsersByDptIdAndRoleId(dptid,roleid);
var opts=createOptions();
opts.add("","");
if (users !=null)
for(var iter=users.iterator();iter.hasNext();){var user=iter.next();opts.add(user.getName(), user.getId());
}
opts;

24、getAllUsers()

概述】返回当前域下面的所有用户对象的集合。

【返回值】java.util.Collection

参数

【示例】脚本代码

// 实现getAllUsers()函数的应用,返回当前域下面的所有用户对象的集合var users = getAllUsers();
var opts=createOptions();
opts.add("","");
for(var iter=users.iterator();users !=null && iter.hasNext();){var user=iter.next();opts.add(user.getName(), user.getId());
}
opts;

25、getAllRoles()

概述】返回当前软件下面的所有角色对象的集合。

【返回值】java.util.Collection

参数

【示例】脚本代码

// 实现getAllRoles()函数的应用,返回当前软件下面的所有角色对象的集合var roles = getAllRoles();
var opts=createOptions();
opts.add("","");
for(var iter=roles.iterator();roles !=null && iter.hasNext();){var role=iter.next();opts.add(role.getName(), role.getId());
}
opts;

26、getRoleByRoleNo(roleno,applicationid)

概述】返回当前角色编号和软件id下的角色。

【返回值】string

参数roleno  // 角色编号  String

applicationid  // 软件id  String

【示例】脚本代码

// 实现getRoleByRoleNo(roleno,applicationid)函数的应用,返回当前角色编号和软件id下的角色//表单A字段值为指定角色编号和软件id下的角色
(function(){
var role=getRoleByRoleNo("2",getApplication());
return role;
})()

27、queryByDSName(dsName,sql)

概述】根据数据源名称,执行SQL查询, 返回SQL查询语句执行的结果,以Collection方式返回(存储的是数据记录的Map对象)。

注:数据源操作对象应用需要,软件->高级工具->数据源的支持。

首先需要开发者在软件的数据源模块创建数据源。

【返回值】java.util.Collection

参数dsName  // 数据源名称  String

sql  // SQL查询语句  String

【示例】脚本代码

// 实现queryByDSName(dsName,sql)函数的应用//省份。用户首先需要创建"kd"数据源。
var opts = createOptions();
opts.add("","");
try{
var appid = getApplication();
var sql = "select cityid,cityname from cityinfo where rootid=0";
var datas = queryByDSName("kd",sql);
if(datas!=null){for(var iterator = datas.iterator();iterator.hasNext();){var map1 = iterator.next();//取值var name= map1.get("cityname");var value = map1.get("cityid");opts.add(name,value);}
}
}catch(e){}
opts;

28、insertByDSName(dsName,sql)

概述】根据数据源名称,执行SQL插入操作(SQL语句为:insert into table ......)。

注:数据源操作对象应用需要,软件->高级工具->数据源的支持。

首先需要开发者在软件的数据源模块创建数据源。

【返回值】无

参数dsName  // 数据源名称  String

sql  // SQL查询语句  String

【示例】脚本代码

// 实现insertByDSName(dsName,sql)函数的应用var doc = getCurrentDocument();
var sql = "insert into cityinfo(cityid,cityname,rootid) ";
sql +=" values(‘"+doc.getItemValue("citycode")+"’,’ ";
sql +=doc.getItemValue("cityname")+"’, ";
sql +=doc.getItemValue("cityroot")+")";
insertByDSName("kd",sql);

29、updateByDSName(dsName,sql)

概述】根据数据源名称,执行SQL更新操作(SQL语句为:update table set......)。

注:数据源操作对象应用需要,软件->高级工具->数据源的支持。

首先需要开发者在软件的数据源模块创建数据源。

【返回值】无

参数dsName  // 数据源名称  String

sql  // SQL查询语句  String

【示例】脚本代码

// 实现updateByDSName(dsName,sql)函数的应用var doc = getCurrentDocument();
var sql = "update cityinfo  set cityid = ";
sql +="‘"+doc.getItemValue("citycode")+"’, cityname=’ ";
sql +=doc.getItemValue("cityname")+"’, rootid =";
sql +=doc.getItemValue("cityroot");
updateByDSName("kd",sql);

30、deleteByDSName(dsName,sql)

概述】根据数据源名称,执行SQL删除操作(SQL语句为:delete from table ......)。

注:数据源操作对象应用需要,软件->高级工具->数据源的支持。

首先需要开发者在软件的数据源模块创建数据源。

【返回值】无

参数dsName  // 数据源名称  String

sql  // SQL查询语句  String

【示例】脚本代码

// 实现deleteByDSName(dsName,sql)函数的应用var docid = getId();
var sql = "delete from tlk_施工物料明细 where PARENT='"+docid+"'";
deleteByDSName("kd",sql)

31、getUserByLoginno(loginno)

概述】根据用户登录名取用户对象。

【返回值】cn.myapps.core.user.ejb.UserVO

参数loginno  // 用户登录名  String

【示例】脚本代码

// 实现getUserByLoginno(loginno)函数的应用//返回用户表中对应name字段值为"张三"记录对象
var userVO = getUserByLoginno("张三");
var roles = userVO.getRoles();//获取指定用户的所属角色

32、getUserById(userid)

概述】根据用户ID获取用户对象。

【返回值】cn.myapps.core.user.ejb.UserVO

参数userid  // 用户标识ID  String

【示例】脚本代码

// 实现getUserById(userid)函数的应用//返回用户表中记录对象
var userid = getItemValueAsString("puser");//用户选择框的值
var userVO = getUserById(userid);
var roles = userVO.getRoles();//获取指定用户的所属角色

33、getRoleByName(name)

概述】根据角色名取角色对象。

【返回值】cn.myapps.core.role.ejb.RoleVO

参数name  // 角色名称  String

【示例】脚本代码

// 实现getRoleByName(name)函数的应用//返回角色表中记录对象
var roleVO= getRoleByName("销售总监");//获取“销售总监”的角色对象

34、println(text)

概述】输出文本到控制台,可以在应用服务器的后台和前台调试模式下的控制查看打印内容。

【返回值】无

参数text  // 要输出文本的内容  String

【示例】脚本代码

// 实现println(text)函数的应用//输出文本到控制台,可以在应用服务器的后台和前台调试模式下的控制查看打印内容
var doc = getCurrentDocument();
println("当前审批人:" + doc.getAuditorNames());

十一、其他

1、getXmlWord(templateName,newName,opts)

概述】得到wordXml模版替换的doc文件

【返回值】返回替换后的WORD文件相对路径;

参数templateName  // 要替换的wordxml名字,在软件属性——》高级工具——》wordXml模版导入——新增要导入的模版,这里使用那个名称。 String

newName  // 要输出的文件名,值为空时系统自己命名  String

opts  // 要替换的内容opts对象   cn.myapps.core.dynaform.form.ejb.Options

【示例】脚本代码

// 描述:实现getXmlWord(templateName,newName,opts)函数的应用。
如果需要在word中添加图片,在第一步制作模板时,加入一张图片占位,然后打开xml文档,可以看到如下的一片base64编码后的代码:<w:binData w:name="wordml://03001.png" xml:space="preserve">iVBO……CC</w:binData>
只要将base64的代码替换成例如:Fd_image1,如下:
<w:binData w:name="wordml://03001.png" xml:space="preserve">Fd_image1</w:binData>
这里要注意“>Fd_image1<”这尖括号中间不能加任何其他的诸如空格,tab,换行等符号,否则导出的word将会出错。var opts = createOptions(); //创建指定类对象
opts.add("要替换的字","替换后的值");
opts.add("Fd_projectName","项目名称");
var image1 = new Packages.cn.myapps.util.ImageUtils.encodeImgageToBase64("http://192.168.1.123:88/jhkj/resource/image/editor.png");
opts.add("Fd_image1",image1 );//这种是网络路径替换图片
var image2 = new Packages.cn.myapps.util.ImageUtils.encodeToBase64("/uploads/singe/11e6-c9b1-9d860919-b3ea-3518297e42e7.jpg");
opts.add("Fd_image2",image2);//这种是绝对路径替换图片
getXmlWord("5353","",opts);
//getXmlWord("5353","自定义名称.doc",opts);// 结果:/uploads/wordExp/03b263bc-6fbd-4db8-8713-7ce3e60c09f9/5353_2017-04-05.doc

2、getOptionsByDQL(dql, keyFieldName, blankFirst)

概述】返回符合查询条件语句的文档中keyFieldName字段的所有值集合,作为下拉框控件的选项。

【返回值】cn.myapps.core.dynaform.ejb.Options

参数dql  // 查询符合条件的语句  String

keyFieldname  // 选项名字段名与值字段名  String或Array

blankFirst  // 是否添加空选项  boolean

【示例】脚本代码

// 描述:实现getOptionsByDQL(dql, keyFieldName, blank)函数的应用,返回符合查询条件语句的文档中keyFieldName字段的所有值集合,作为下拉框控件的选项var dql = "$formname  = '数字函数表单'";
var n = getOptionsByDQL(dql, "demoops", false);
n;

3、getWorkingDayCount(startDate, endDate)

概述】获取相隔工作天数。

【返回值】long

参数startDate  // 开始时间字串,“yyyy-MM-dd HH:mm:ss”格式的字符串  String

endDate  // 结束时间字串,“yyyy-MM-dd HH:mm:ss”格式的字符串  String

【示例】脚本代码

// 实现getWorkingDayCount(startDate, endDate)函数的应用,获取相隔工作天数var starttime = getItemValueAsDate("starttime");
var deadline = getItemValueAsDate("deadline");
var retvar = 0;
if (starttime!=null && deadline !=null){var startDate = format(starttime,"yyyy-MM-dd HH:mm:ss"); var endDate =  format(deadline,"yyyy-MM-dd HH:mm:ss");retvar= getWorkingDayCount(startDate, endDate);
}
retvar;

4、getWorkingTimesCount(startDate, endDate)

概述】获取相隔工作小时数。

【返回值】long

参数startDate  // 开始时间字串,“yyyy-MM-dd HH:mm:ss”格式的字符串  String

endDate  // 结束时间字串,“yyyy-MM-dd HH:mm:ss”格式的字符串  String

【示例】脚本代码

// 实现getWorkingTimesCount(startDate, endDate)函数的应用,获取相隔工作小时数var starttime = getItemValueAsDate("starttime");
var deadline = getItemValueAsDate("deadline");
var retvar = 0;
if (starttime!=null && deadline !=null){var startDate = format(starttime,"yyyy-MM-dd HH:mm:ss"); var endDate =  format(deadline,"yyyy-MM-dd HH:mm:ss");retvar= getWorkingTimesCount(startDate, endDate);
}
retvar;

5、isWorkingTime(currentDate)

概述】判断输入的时间是否为工作时间

【返回值】long

参数currentDate  // "yyyy-MM-dd HH:mm:ss"或者"yyyy-MM-dd HH:mm"格式的字符串  String

【示例】脚本代码

// 实现isWorkingTime(currentDate)函数的应用,判断输入的时间是否为工作时间//表单中有一个日期控件,日期的格式为年月日时分,然后单行文本框的值脚本写代码,
//根据日期控件的值是否为工作时间来确实给单行文本框不同的值,具体的代码如下(第二个方法中的第二个参数是工作日历的id)
(function(){
var value=getItemValueAsDate("时间");
var rtn="";
if(value!=null) {var datevalue=$TOOLS.DATE_UTIL.getDateTimeStr(value);if(isWorkingTime(datevalue)){rtn="当前输入的时间是该用户的工作时间";}else {rtn="当前输入的时间是该用户的非工作时间,用户可以自由安排";}
}
return rtn;
})()

6、isWorkingTimeByCalendar(currentDate, calendarId)

概述】判断输入的时间是否为工作时间

【返回值】long

参数currentDate  // "yyyy-MM-dd HH:mm:ss"或者"yyyy-MM-dd HH:mm"格式的字符串  String

calendared  // 工作日历Id  String

【示例】脚本代码

十二、自定义函数

自定义函数调用:

//软件 >> 库 >> 函数库 >> 新建,函数库名:calldll
function calldll(classname, funname, v1, v2){if(name=="" || funname =="" || v1=="" || v2 ==""){return "";}else{var array = new array();array[0]=v1;array[1]=v2;//该方法是结合传递的参数利用Jnative实现对系统dll文件进行处理var result=Packages.exampleinfo.Testdellinfo.calldll(
array,name.funname); // (其中array为参数列表;name为dll名称;funname为dll文件的方法名)return result;}
}//通过脚本语言调用自定义函数
#include " calldll";  //引用函数库,calldll为被引用的函数库名
var classname = doc.getItemValueAsString("类名");
var funname= doc.getItemValueAsString("函数名");
var v1 = doc.getItemValueAsString("参数1");
var v2 = doc.getItemValueAsString("参数2");
calldll(classname, funname, v1, v2) ;

便于学习和日常开发,快速查找。

myApps常用脚本API(一)相关推荐

  1. myApps常用脚本

    //mysql首字母 firstconcat(LEFT(item_fd_name,1)) //删除多余的数据 var sql = " DELETE FROM    tlk_Fm_Attend ...

  2. postman初步及常用脚本

    对接接口参数这块简单省事的设计. Postman简单介绍 Postman是一个 Chrome 扩展,能提供强大的 Web API & HTTP 请求调试功能. Postman能够发送任何类型的 ...

  3. Unity编译器拓展学习总结(一):常用工具API

    Unity编译器拓展学习总结(一):常用工具API 文章目录 Unity编译器拓展学习总结(一):常用工具API 前言 一.常用工具API 1.PrefabUtility 2.AssetDatabas ...

  4. Elasticsearch入常用RESTful API总结

    RESTful API HTTP动词介绍 对于资源的具体操作类型,由HTTP动词表示. 常用的HTTP动词有下面五个(括号里是对应的SQL命令). GET(SELECT):从服务器取出资源(一项或多项 ...

  5. java 常用的api_Java中常用的API(一)——Object

    概述 如果要问Java为什么是用起来非常舒服的语言,那很大一部分的功劳就是JavaAPI的.API定义了许多封装好的类和方法供我们使用,来处理特定的问题,所以学习常用的API是非常重要的. 同时,面向 ...

  6. java+@api_Java 常用的api

    ## 常用的api ## #### 1.概述 #### > API(Application ProgrammingInterface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与 ...

  7. HDFS常用的Api

    HDFS常用的Api: package com.jxd.hdfs;import org.apache.hadoop.conf.Configuration; import org.apache.hado ...

  8. C#和C常用的API操作窗口的代码积累

    C#和C常用的API操作窗口的代码积累 IntPtr awin = MouseHookHelper.FindWindow("WeChatMainWndForPC", "微 ...

  9. mysql员工脚本_mySQL常用脚本汇总

    @ mysql的常用脚本有哪些呢?我们来做个总结 建表语句 sql语句最后指定主键 DROP TABLE IF EXISTS `user_info1`; CREATE TABLE `user_info ...

最新文章

  1. 独家 | 利用Python实现主题建模和LDA 算法(附链接)
  2. 震惊!EfficientDet终于开源了!
  3. C,C++开源项目中的100个Bugs
  4. pyaudio:基于pyaudio利用Python编程从电脑端录制音频保存到指定文件夹+将录音上传服务器+录音进行识别并转为文本保存
  5. elementui的upload组件怎么获取上传的文本流、_抖音feed流直播间引流你还不会玩?实操讲解...
  6. 我对架构师的理解(如何成为一个合格的架构师)
  7. CentOS7.x Hadoop集群搭建
  8. linux nmon 进程io,Linux服务器用iotop命令分析服务器磁盘IO情况
  9. HNUCM 1388:高中数学
  10. 银河麒麟支持php吗,银河麒麟操作系统下载
  11. IDC基础知识-名词解释
  12. keil软件是干嘛的?keil软件怎么用?
  13. 电脑w ndows无法自动修复,电脑无法自动修复,开不了机怎么办
  14. juniper认证(JNCIA,JNCIS,JNCIP,JNCIE)介绍
  15. 关键词生成的相关资源
  16. [ 笔记 ] 计算机网络安全_1_网络安全基础
  17. 【MULTISIM】将spice模型载入multisim详细步骤
  18. 张扬建:遥感与生态学的结合
  19. 《电脑音乐制作实战指南:伴奏、录歌、MTV全攻略》——导读
  20. 【096】2012年总结(流水账式)

热门文章

  1. stackoverflow无法注册解决方案
  2. 可控硅过零导通程序--可控硅驱动程序
  3. 2009春节联欢晚会
  4. 报错Error from chokidar (C:\): Error: EBUSY: resource busy or locked, lstat ‘C:\hiberfil.sys‘
  5. AlarmManager定时不准确
  6. 百度飞桨蜜度文本智能较对大赛经验分享(17/685)
  7. 深圳大数据培训:大数据技术可以解决哪些问题?
  8. android开发:Theme.Light.NoTitleBar和Theme.Light.NoTitleBar.Fullscreen的区别
  9. Python中如何用random模块生成随机数并重现
  10. java查看动态库路径_Linux动态库(.so)搜索路径