联系
我们

工作日 9:00-18:00

13632615190

子表单元格之间的计算

我们的子表分为“只读子表”和“可编辑子表”:

只读子表:不能直接编辑单元格的值,需要点击操作列“编辑”后,打开子表单据进行编辑,点击子表下方工具条中的“新增”按钮打开子表单据增加新记录;

可编辑子表:可以直接点击可编辑的单元格后进行编辑;

所以我们这里讲的“子表单元格之间的计算”就是指“可编辑子表”的单元格之间怎么进行计算,最典型的计算就是“数量 * 单价 = 金额”,或者“费用 * 税率 = 税费”这样的了。这里进行讲解前,需要先了解三个脚本:

RowIndex:取当前内容改变的(或者当前执行脚本的)单元格所在的列号;

GetCellValue:取子表中某个单元格的值,需要两个参数:“RowIndex()”、“列数据库字段”,语法如:GetCellValue(RowIndex(), "列的数据库字段名")

SetCellValue:设置某个单元格的值,需要三个参数:“RowIndex()”、“列数据库字段”、“要设置的值”,语法如:SetCellValue(RowIndex(), "列的数据库字段名", "值");


就以我们的业务为例,如上图,选保单号以后,会自动计算“实收手续费”字段的值:“实收手续费 = 保费 * 手续费率 - 已收手续费”,那么怎么来设置呢?

首先在开发平台中打开要设置的手续费单据,点击子表“保单明细”,然后点击“列设置”属性右侧的按钮,如下图所示:


打开“设置子单据列表字段”窗口后,点击“保单保费”和“手续费”列,分别设置“内容改变”事件:

这两列的内容改变事件如:

SetCellValue(

    RowIndex(),

"实收手续费列的数据库字段名",

    GetCellValue(RowIndex(), "保单保费列的“引用单据ID” “数据库字段名”") * GetCellValue(RowIndex(), "手续费率列的“引用单据ID” “数据库字段名”")-

    GetCellValue(RowIndex(), "已收手续费列的“引用单据ID” “数据库字段名”")

)


上面我们看到有这样的描述“保单保费列的“引用单据ID” “数据库字段名””这个是什么意思呢?如下图,我们的“保单保费”在子表中是引用了其他单据“PolicyPeriod\Policy”带入的。那么这种引用的单据就会有一个“引用单据ID”字段,那么我们要获得一个单元格就需要“引用单据ID 数据库字段名”如下图,要获得“保单保费”列,则使用“PolicyPeriod\Policy\__Premium__”这样的参数。