开发者社区> 问答> 正文

钉钉发起OA审批实例报错:Missingvalue

钉钉企业内部应用开发,官方OA审批,新版服务端api,发起审批实例报错:code:Missingvalue,message:value is mandatory for this action; 测试后,如果表单数据内容填写不全会报错: 创建审批实例失败,如果填写全了,就会报错:value is mandatory for this action。其中使用了控件:TableField=》明细控件,感觉和这个有关。 本人用的php开发,使用了官方的例子; 有几点不太明白的: 1、表单数据内容中的子控件列表的用途,比如我的数据是这样的:

$formValue=[
            ['name'=>'项目','value'=>'测试项目'],
            ['name'=>'系统单据号','value'=>'CESHI123213132'],
            ['name'=>'报销人','value'=>'测试报销人'],
            ['name'=>'单据金额汇总','value'=>300.01],
            ['name'=>'单据说明','value'=>'测试流程单据'],
            ['name'=>'单据明细','value'=>[
                [['name'=>'费用归类','value'=>'材料'],
                ['name'=>'名称','value'=>'测试材料'],
                ['name'=>'税金合计','value'=>20],
                ['name'=>'数量','value'=>2],
                ['name'=>'计量单位','value'=>'台'],
                ['name'=>'未税单价','value'=>100],
                ['name'=>'未税合计','value'=>200],
                ['name'=>'供应商','value'=>'测试供应商'],
                ['name'=>'发生日期','value'=>'2022-6-27'],
                ['name'=>'原始凭证号','value'=>'12313213'],
                ['name'=>'凭证照片','value'=>'http://u.cn/123123.png'],
                ['name'=>'项备注','value'=>'测试备注']],
            ]],
        ];

单据明细是使用了明细控件,那么它里面的内容算是子控件列表吗?需不需要用new details()来处理下? 2、我用官方的api测试接口测试,当我输入 name=项目,value=测试项目 这一条数据时,生成的效果是

$formComponentValues0Details0Details0 = new details([
            "name" => "项目",
            "value" => "测试项目"
        ]);
        $formComponentValues0Details0 = new \AlibabaCloud\SDK\Dingtalk\Vworkflow_1_0\Models\StartProcessInstanceRequest\formComponentValues\details([
            "name" => "项目",
            "value" => "测试项目",
            "details" => [
                $formComponentValues0Details0Details0
            ]
        ]);
        $formComponentValues0 = new formComponentValues([
            "name" => "项目",
            "value" => "测试项目",
            "details" => [
                $formComponentValues0Details0
            ]
        ]);

看了这个数据,没法理解子控件列表的意思,不知道我上面的数据怎么在系统里生成。按照我的理解,将我的数据用new formComponentValues()循环生成,并赋值给一个数组变量就行,我觉得我不需要使用子控件列表这个东西,但是确实在报错。 希望快速得到官方、道友们的慷慨解答,感谢

展开
收起
游客r4zsegjly3um4 2022-06-28 09:13:21 2233 0
1 条回答
写回答
取消 提交回答
  • 测试已解决,方案:``` $detail=[ [['name'=>'费用归类','value'=>'材料'], ['name'=>'名称','value'=>'测试材料'], ['name'=>'税金合计','value'=>'20'], ['name'=>'数量','value'=>'2'], ['name'=>'计量单位','value'=>'台'], ['name'=>'未税单价','value'=>'100'], ['name'=>'未税合计','value'=>'200'], ['name'=>'供应商','value'=>'测试供应商'], ['name'=>'发生日期','value'=>'2022-6-27'], ['name'=>'原始凭证号','value'=>'12313213'], ['name'=>'凭证照片','value'=>['http://test.univoa.com/storage/bxpz/62b6596e7af37.png']], ['name'=>'项备注','value'=>'测试备注']], ]; $formValue=[ ['name'=>'项目','value'=>'测试项目'], ['name'=>'系统单据号','value'=>'CESHI123213132'], ['name'=>'报销人','value'=>'测试报销人'], ['name'=>'单据金额汇总','value'=>'300.01'], ['name'=>'单据说明','value'=>'测试流程单据'], ['name'=>'单据明细','value'=>json_encode($detail,JSON_UNESCAPED_UNICODE)], ];

    
    值需要转换为json格式,其他控件只要是数组的应该都需要转,比如图片控件;然后就是没有子控件列表,直接使用循环```$formValue=[];
            foreach($param['formValue'] as $val){
                    $formValue[]=new formComponentValues($val);
            }
    ```  或者有子控件的:```foreach($param['formValue'] as $val){
                if(isset($val['details'])){
                    $formValueDetail=[];
                    foreach($val['details'] as $value){
                        if(isset($value['details'])){
                            $details=[];
                            foreach($value['details'] as $value_1){
                                $details[]=new details($value_1);
                            }
                            $formValueDetail[]=new \AlibabaCloud\SDK\Dingtalk\Vworkflow_1_0\Models\StartProcessInstanceRequest\formComponentValues\details([
                                'name'=>$value['name'],'value'=>$value['value'],'details'=>$details
                            ]);
                        }else{
                            $formValueDetail[]= new \AlibabaCloud\SDK\Dingtalk\Vworkflow_1_0\Models\StartProcessInstanceRequest\formComponentValues\details($value);
                        }
                    }
                    $formValue[]=new formComponentValues(['name'=>$val['name'],'value'=>$val['value'],'details'=>$formValueDetail]);
                }else{
                    $formValue[]=new formComponentValues($val);
                }
            }
    
    2022-06-28 10:35:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
钉钉小程序——为工作方式插上翅膀 立即下载
钉钉客户端自动化的应用 立即下载
《云市场-心选OA解决方案》 立即下载