如下面的一段脚本,原来在所有的物资单据中正常运行,但升级到最近的两个版本后,销售单voucher.BB脚本中每次运行都会报错。 int func_before_save() { //can_save=1; int id,r_num; string r_res_id,r_inp_unit_type_name,r_attr.cap.1,r_attr.cap.2,r_attr.cap.3,batch_no; float r_inp_price,r_inp_num,r_discount,SKJE,HJJE;//SKJE=收款金额,HJJE=合计金额; r_num = grid_row_num('MG_Item'); for(id=1;id<r_num;id++) { r_res_id=grid_get_v('MG_Item','res_id',id); r_inp_price=grid_get_v('MG_Item','inp_price',id); r_inp_num=grid_get_v('MG_Item','inp_num',id); r_discount=grid_get_v('MG_Item','discount',id); r_inp_unit_type_name=grid_get_v('MG_Item','inp_unit_type_name',id); r_attr.cap.1=grid_get_v('MG_Item','attr.cap.1',id); r_attr.cap.2=grid_get_v('MG_Item','attr.cap.2',id); r_attr.cap.3=grid_get_v('MG_Item','attr.cap.3',id); batch_no=grid_get_v('MG_Item','batch_no',id); if(r_res_id=='') break;//如果产品编号为空,中止程序。 if(r_inp_num<=0) { warn('注意:第 '+ id + ' 行的数量小于或等于0,请查检是否有误后再保存!'); } if(r_inp_price<=0) { warn('注意:第 '+ id + ' 行的单价小于或等于0,请查检是否有误后再保存!'); } if(r_inp_unit_type_name == '只' && r_inp_num != to_int(r_inp_num)) { warn('注意:第 '+ id + ' 行单位为只, 但数量为小数,请检查是否有误后再保存!'); } if(r_inp_unit_type_name == '只' &&r_inp_price>5) { warn('注意:第 '+ id + ' 行单位为只且单价大于5,请检查是否有误后再保存!'); } if(r_inp_unit_type_name == '斤'&& r_inp_price<5) { warn('注意:第 '+ id + ' 行单位为斤且单价小于5,请检查是否有误后再保存!'); } if(r_discount>100 || r_discount<80) { warn('注意: 第 '+ id + ' 行成色低于80%或大于100%,请检查成色一项是否有误!'); } grid_set_v('MG_Item','attr.cap.1',id,upper(r_attr.cap.1)); grid_set_v('MG_Item','attr.cap.2',id,upper(r_attr.cap.2)); grid_set_v('MG_Item','attr.cap.3',id,upper(r_attr.cap.3)); grid_set_v('MG_Item','batch_no',id,upper(batch_no)); }; SKJE=gui_get_val("Edit_Io_Amount"); HJJE=gui_get_val("Edit_Discount_Amount"); if(SKJE>HJJE) { msg('收款金额'+num_dec_cut(SKJE,2)+'大于本单的合计金额'+num_dec_cut(HJJE,2)+',单据不允许保存。'); can_save=0; }; return 1; }; |