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

 找回密码
 注册成为天翎用户
楼主: 索昂软件

[已解决] 删除按钮动作执行前脚本报错

[复制链接]
7bou 发表于 2023-1-4 14:50:43 | 显示全部楼层
索昂软件 发表于 2023-1-4 13:21
我们发现问题在于  :删除后没有刷新视图, 导致再次删除时取到的还是刚才已经删除的文档id,所以无法继续 ...

什么版本?  删除按钮会刷新视图的呀。
 楼主| 索昂软件 发表于 2023-1-4 15:32:24 | 显示全部楼层
希望有工程师能远程协助一下我们, 这样更容易再现问题,谢谢!
 楼主| 索昂软件 发表于 2023-1-4 16:42:33 | 显示全部楼层
myapp5.0 sp1   2022.12.21 日刘经理发给我的版本,删除的时候没有刷新视图,再次删除时, 又取到了刚才已经删除的文档id, 导致无法继续删除其他的文档,我们进行调试模式, 反复取值试验过的
 楼主| 索昂软件 发表于 2023-1-5 13:45:13 | 显示全部楼层
希望远程协助
 楼主| 索昂软件 发表于 2023-1-5 17:08:29 | 显示全部楼层
就是我们在删除动作执行前, 有一段脚本, 这段脚本首次删除可以执行, 删除后 ,接着选择其他的文档进行删除, 就无法删除了,我们发现是刚才已经删除的文档又被取出来了。所以找不到文档,导致无法继续删除
var params = getParameter("_selects");
var docids = splitText(params,";");   
println("zhangnn=params :"+docids.length+"条");
var process = getDocProcess(getApplication());//Document操作类     
for(var i=0;i<docids.length;i++){
        var doc = process.doView(docids[i]);
println("zhangnn=docids[i]:i"+i+"fdff"+docids[i]);
println("zhangnn=getStateLabel:"+doc.getStateLabel());
if (!doc.getStateLabel().equals("Creator")){
         return createAlert("您只能删除Creator状态下的数据!(You can only delete status of Creator!)");        
            }
      
}
lillian828 发表于 2023-1-5 18:51:06 | 显示全部楼层
您好,请待验证回复,编号:25736
 楼主| 索昂软件 发表于 2023-1-9 15:45:57 | 显示全部楼层
就是我们在删除动作执行前, 有一段脚本,限制只有Creator状态的记录可以删除。 这段脚本首次删除可以执行, 删除后 ,接着选择其他的文档进行删除, 就无法删除了,我们发现是刚才已经删除的文档id又被(var params = getParameter("_selects");)取出来了。所以找不到该已经删除的文档,导致无法继续删除。代码如下:
var params = getParameter("_selects");
var docids = splitText(params,";");   
println("params :共选择"+docids.length+"条");
var process = getDocProcess(getApplication());
for(var i=0;i<docids.length;i++){
        var doc = process.doView(docids[i]);
        println("i:"+i+"分隔docids[i]:"+docids[i]);
        println("getStateLabel:"+doc.getStateLabel());
        if (!doc.getStateLabel().equals("Creator")){
             return createAlert("您只能删除Creator状态下的数据!(You can only delete status of Creator!)");        
            }
}
Wendy 发表于 2023-1-9 16:22:06 | 显示全部楼层
索昂软件 发表于 2023-1-4 10:31
脚本是写在函数库里的,删除按钮的动作施行前脚本调用函数库中的这个函数。函数内容如下:

/*用于主 ...

暂时没遇到过您这个问题,但是根据错误提示猜测是您第二次删除的时候后台已经没有这个doc了,所以会导致报doc.gerstatelabel()这个method 为null的问题(但是您这个更新的版本估计是有问题所以第一次删除后该条数据依旧显示在视图里,不知道我的理解是否正确),建议您加个判断取出来的这个doc是否为非空的条件,若不为空再调用gerstatelabel()函数,应该可以暂时解决这个问题,要想从根源解决还是需要联系天翎
 楼主| 索昂软件 发表于 2023-1-10 11:59:26 | 显示全部楼层
第一次删除后该条数据不再显示在视图里,但是第二次点击删除按钮时, 用这个 var params = getParameter("_selects");   依然能取到刚才已经删除的记录的docid。  这个问题最直接的验证方式, 就是在删除动作执行前,执行下列脚本(脚本的作用是只允许删除Creator状态的数据),第一次删除可以成功, 然后第二次再点删除按钮, 就报错, 发现是把刚才已经删除的记录的docid又取到了params结果里面  。
var params = getParameter("_selects");
var docids = splitText(params,";");   
println("params :共选择"+docids.length+"条");
var process = getDocProcess(getApplication());
for(var i=0;i<docids.length;i++){
        var doc = process.doView(docids[i]);
        println("i:"+i+"分隔docids[i]:"+docids[i]);
        println("getStateLabel:"+doc.getStateLabel());
        if (!doc.getStateLabel().equals("Creator")){
             return createAlert("您只能删除Creator状态下的数据!(You can only delete status of Creator!)");        
            }
}
 楼主| 索昂软件 发表于 2023-1-11 13:30:56 | 显示全部楼层
good  皮肤下出现的问题

本版积分规则

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

GMT+8, 2026-8-12 18:04

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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