天翎MyApps技术社区 - 低代码平台 | 流程管理系统 | BPM软件

 找回密码
 注册成为天翎用户
查看: 1338|回复: 10

[已解决] 获取审批人字段问题

[复制链接]
吉林志达软件 发表于 2013-12-6 10:44:21 | 显示全部楼层 |阅读模式
本帖最后由 sophie 于 2013-12-6 13:56 编辑

您好:流程从A-到B-到C...
表单字段想实现获取当前节点的审批人名字,A审批完后 A审批人字段变为A的名字,之后到B,B审批完后B审批人字段为B的名字,...  
我用的是这个脚本:
var doc = $CURRDOC.getCurrDoc();
        var processor = "";
        if(doc.getState() != null) {
                var actors = doc.getState().getActors();
               
                if (actors != null) {
                        for(var it = actors.iterator(); it.hasNext(); ) {
                                var actorrt = it.next();
                                if (actorrt.getIsprocessed()) {
                                        continue;
                                }
                                processor += actorrt.getName() +",";//获取审批人姓名
                                //processor += actorrt.getActorid() + ",";//获取审批人ID
                               //processor += getUserById(actorrt.getActorid()).getLoginno()+ ",";//获取审批人登录账号名                              
                        }
                       processor.substring(0,processor.length-1);//去除最后一个多余的单引号
               }
        }
         processor;


但是到B节点了,看到的A审批人字段并不是A是B的名字了,并没有锁定;
不知道怎么来解决。
kimi 发表于 2013-12-6 10:49:24 | 显示全部楼层
您好:请问您这段脚本是写在表单中某个控件中的值脚本中么,如果是您加一个判断就行,类似代码如下:

  1. var value1=getItemValueAsString("A节点审批人");
  2. if(value1.trim().length()<=0){
  3.   var doc = $CURRDOC.getCurrDoc();
  4.         var processor = "";
  5.         if(doc.getState() != null) {
  6.                 var actors = doc.getState().getActors();
  7.                
  8.                 if (actors != null) {
  9.                         for(var it = actors.iterator(); it.hasNext(); ) {
  10.                                 var actorrt = it.next();
  11.                                 if (actorrt.getIsprocessed()) {
  12.                                         continue;
  13.                                 }
  14.                                 processor += actorrt.getName() +",";//获取审批人姓名
  15.                                 //processor += actorrt.getActorid() + ",";//获取审批人ID
  16.                                //processor += getUserById(actorrt.getActorid()).getLoginno()+ ",";//获取审批人登录账号名                              
  17.                         }
  18.                        processor.substring(0,processor.length-1);//去除最后一个多余的单引号
  19.                }
  20.         }
  21.          value1=processor;
  22. }value1;
复制代码
您先尝试,有问题我们再沟通。
 楼主| 吉林志达软件 发表于 2013-12-6 10:59:39 | 显示全部楼层
您好,我尝试了一下,到A节点时审批人字段名字显示的是A审批人,但是提交后,在查询这个表单时,A字段名字又变为B节点审批人的名字了,麻烦能否远程看一下。谢谢
sophie 发表于 2013-12-6 11:09:22 | 显示全部楼层
您好,您是说用了我同事提供的代码,还是没有效果么?您把您的代码,前台a节点 b节点信息截图出来看一下
 楼主| 吉林志达软件 发表于 2013-12-6 11:19:16 | 显示全部楼层
到A节点如图 555.jpg 到B节点如图 6.jpg

正确方式:到B节点后所看到的A节点审批人应该为A节点审批人,不应该是B节点的审批人啊
A节点代码:var value1=getItemValueAsString("工程处");
if(value1.trim().length()<=0){
  var doc = $CURRDOC.getCurrDoc();
        var processor = "";
        if(doc.getState() != null) {
                var actors = doc.getState().getActors();
               
                if (actors != null) {
                        for(var it = actors.iterator(); it.hasNext(); ) {
                                var actorrt = it.next();
                                if (actorrt.getIsprocessed()) {
                                        continue;
                                }
                                processor += actorrt.getName() +",";//获取审批人姓名
                                //processor += actorrt.getActorid() + ",";//获取审批人ID
                               //processor += getUserById(actorrt.getActorid()).getLoginno()+ ",";//获取审批人登录账号名                              
                        }
                       processor.substring(0,processor.length-1);//去除最后一个多余的单引号
               }
        }
         value1=processor;
}value1;


B节点代码:
var value1=getItemValueAsString("公司领导");
if(value1.trim().length()<=0){
  var doc = $CURRDOC.getCurrDoc();
        var processor = "";
        if(doc.getState() != null) {
                var actors = doc.getState().getActors();
               
                if (actors != null) {
                        for(var it = actors.iterator(); it.hasNext(); ) {
                                var actorrt = it.next();
                                if (actorrt.getIsprocessed()) {
                                        continue;
                                }
                                processor += actorrt.getName() +",";//获取审批人姓名
                                //processor += actorrt.getActorid() + ",";//获取审批人ID
                               //processor += getUserById(actorrt.getActorid()).getLoginno()+ ",";//获取审批人登录账号名                              
                        }
                       processor.substring(0,processor.length-1);//去除最后一个多余的单引号
               }
        }
         value1=processor;
}value1;
sophie 发表于 2013-12-6 11:24:21 | 显示全部楼层
您好,不明白您为什么要在2个节点用两个控件写代码呀,您具体是哪个字段是获取当前节点审批人的?您为什么会在两个不同的字段中写代码获取。
 楼主| 吉林志达软件 发表于 2013-12-6 11:26:41 | 显示全部楼层
不是两个字段都得写上吗,才能获取到,不是吗
工程管理处审批人,获取工程处的审批人,领导审批那个获取领导审批人;
sophie 发表于 2013-12-6 11:27:16 | 显示全部楼层
你找我吧,我远程帮你看。。。。
sophie 发表于 2013-12-6 13:31:50 | 显示全部楼层
Q上客户反馈的需求是:当点击提交按钮后,往表单的审批人字段插入当前审批人的名称,客户的需求,建议客户在提交的动作执行前脚本实现,代码类似:
  1. var doc = getCurrentDocument();
  2. var value = doc.getItemValueAsString("审批人");
  3. var value1 = doc.getStateLabel()
  4. if(value == null  ||  value.trim().length() <= 0 && "流程审批".equals(value1)){
  5.     var user=getWebUser().getName();
  6.     doc.findItem("审批人").setValue(user);
  7.     var process = getDocProcess(getApplication());   //Document操作类
  8.     process.doUpdate(doc);
  9. }
复制代码
 楼主| 吉林志达软件 发表于 2013-12-6 13:52:39 | 显示全部楼层
谢谢,已尝试,问题已解决;

本版积分规则

QQ|手机版|天翎MyApps技术社区 ( 粤ICP备11093750号 )

GMT+8, 2026-8-13 08:56

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表