利用数据源实现按步长累加计算 数据接口,填表公式,业务公式是云表平台的3架马车。业务公式是实现业务逻辑工具,业务公式中经常用数据接口作数据源来提供数据,通过数据接口实现列扩展,行扩展。所以深入理解数据源的工作原理显的很重要。之前看过N遍乐乐老师BOM设计与应用的视频教材,学习过后能基本理解其应用。但感觉还是比较抽象,几天不接触学习感觉又会生疏。 所以尝试用平常的数字加法方式来进行学习分析。实现内容:从指定的某个数开始,并按固定步长进行累加,到指定的结束数为止计算各数据之和。 若按传统软件开发,肯定是IF ,ELSE 的嵌套循环方式进行条件判断及累加。需要用代码编程方式实现。用云表平台的业务公式借助数据源(数据接口)怎么实现呢? 先实现简单要求:从1开始,按步长为1进行累加,到10为止。即从1+2+3+….+10=55. 数据接口利用系统预设的序号列表,利用开始序号,结束序号分别对应开始数,结束数。 。 1. 设置操作界面: 实现思路说明:先把符合条件的数字填写到明细表中,然后利用SUM()函数进行累加。主表与明细表结合的方式,思路确定后动手画制模板。如下图: 2. 设置单据状态设置 3.1 设置业务公式:(主表设置), 3.2 设置业务公式:(明细表设置) 注意:设置明细之前必须制定对应的主表,本实列通过”单号”来确定主表。因步长为1,这里就不设置步长参数了。 4. 测试效果。从1开始,按步长为1,一直累加到10. 累加得数为55. 如下图。 利用“序号列表”的数据接口,根据开始序号=开始数,结束序号=结束数,符合条件的序号数写入到明细表中,利用序号列表中的调试可见一斑。即通过下图数据接口的“调试”功能,开始序号输入1, 结束序号输入10,查询后得到从1到10连续的10个数字。如下图。 但真正把数据写入到业务公式目标表,是需要符合相关操作要求和条件的。我们逐步分析各步骤及含义:如下图:各操作步骤标注的左侧红色编号: 1. 选择数据源:本表单(即主表,根据需要也可以选择明细表)。在下方填些表达式时可以利用所选的本表单或明细表。 2. 情况:执行条件—单据状态=常量.是。 即按下菜单按钮时执行。根据需要可以设置情况1,情况2,情况N. 从左往右依次执行。 子数据源的设置: 说明:数据接口的作用即根据数据接口参数, 开始数=1关联到数据接口的开始序号,结束数=10 关联到数据接口的结束序号。 即利用数据接口实现目标表的行扩展或者列扩展,根据实际情况可以设置同级数据源或者子数据源。注意需要多记录时小方框需打勾。 3.当满足以下条件时: 其实增加了过滤条件,使之业务公式更加灵活多变,复杂的逻辑往往也通过此设置条件进行实现。包括下面列子:“按步长取数”也通过此设置条件得到。 4. 对目标表执行什么操作: 目标表区分主表与明细表,即下图左侧蓝色字体说明。 具体操作:插入,删除,更新,报错,自动流程。 本列子为“插入记录”操作。 插入操作时的“赋值”:这个填写需要转换个思路,一般填写往往是具体的某个结果。这里填写的是“序号列表.序号”,是数据接口中的数值。如下图: 以上1,2,3,4操作步骤设置内容图示: 图:各操作步骤标注 因为在上面第3步骤中我们没有设置条件,所以根据数据源头设置的从1到10.连续10个数字全部取得。即明细表插入了从1到10的数据,根据SUM()函数得到的汇总数值为55. 若能理解以上操作原理。下面按设置步长获取数据过程也就不难理解了。 要求:比如从1开始,固定步长为3,一直到10为止的各数字之和。 即1+4+7+10=22. 第1个数字与最后1个数字分别对应开始数,结束数, 比较容易取得。但中间的4,7的数字根据步长得到,而且数据个数不固定。这个实现需要梳理下思路,如果步长为1从上面分析结果是全部取数,步长为3时,是需要符合一定条件的数字才可获取。这个条件怎么写,是否有现成的函数? 最终通过(数学函数—求余数)。如下图 即按“步长的整数倍+开始数”,并且符合在区间内的数字填写到明细表中。 这个过程实现的原理: 先根据数据接口获取从1到10的数字,并从第1个数字1开始,代入以上公式是否满足,若满足条件执行“插入记录”。 求余数(<被除数>,<除数>)=余数。 余数为0的序号列表.序号数赋值给明细。 (2-1)/ 3---- 余数为1, 不符合条件。 (3-1)/ 3---- 余数为2, 不符合条件。 (4-1)/ 3---- 余数为0, 符合条件。 (5-1)/ 3---- 余数为1, 不符合条件。 (6-1)/ 3---- 余数为2, 不符合条件。 (7-1)/ 3---- 余数为0, 符合条件。 (8-1)/ 3---- 余数为1, 不符合条件。 (9-1)/ 3---- 余数为2, 不符合条件。 (10-1)/ 3---- 余数为3, 符合条件。 从上面分析得到 数字分别是4,7,10,因为10刚好也是结束数。 为避免不重复赋值,需要写个条件进行排除,这个留给大家思考….. 从上面分析可以看出,数字从1到10每个数都会循环比对,即术语中的“遍历”。 实现传统软件中 IF ,ELSE 的循环嵌套的功能。 显示结果如下图, 隐藏明细等不必要显示内容,最终呈现如下图: 欢迎转载,转载请保留本文地址 http://www.iyunbiao.com/bbs/t-781-1.html 谢谢。 |
+10
5 条回帖
利用数据源实现按步长累加计算 数据接口,填表公式,业务公式是云表平台的3架马车。业务公式是实现业务逻辑工具,业务公式中经常用数据接口作数据源来提供数据,通过数据接口实现列扩展,行扩展。所以深入理解数据源的工作原理显的很重要。之前看过N遍乐乐老师BOM设计与应用的视频教材,学习过后能基本理解其应用。但感觉还是比较抽象,几天不接触学习感觉又会生疏。 所以尝试用平常的数字加法方式来进行学习分析。实现内容:从指定的某个数开始,并按固定步长进行累加,到指定的结束数为止计算各数据之和。 若按传统软件开发,肯定是IF ,ELSE 的嵌套循环方式进行条件判断及累加。需要用代码编程方式实现。用云表平台的业务公式借助数据源(数据接口)怎么实现呢?先实现简单要求:从1开始,按步长为1进行累加,到10为止。即从1+2+3+….+10=55. 数据接口利用系统预设的序号列表,利用开始序号,结束序号分别对应开始数,结束数。 1. 设置操作界面: 实现思路说明:先把符合条件的数字填写到明细表中,然后利用SUM()函数进行累加。主表与明细表结合的方式,思路确定后动手画制模板。如下图:
2.设置单据状态设置 3.1 设置业务公式:(主表设置), 3.2 设置业务公式:(明细表设置) 注意:设置明细之前必须制定对应的主表,本实列通过”单号”来确定主表。因步长为1,这里就不设置步长参数了。 4.测试效果。从1开始,按步长为1,一直累加到10. 累加得数为55. 如下图。 利用“序号列表”的数据接口,根据开始序号=开始数,结束序号=结束数,符合条件的序号数写入到明细表中,利用序号列表中的调试可见一斑。即通过下图数据接口的“调试”功能,开始序号输入1, 结束序号输入10,查询后得到从1到10连续的10个数字。如下图。 但真正把数据写入到业务公式目标表,是需要符合相关操作要求和条件的。我们逐步分析各步骤及含义:如下图:各操作步骤标注的左侧红色编号: 1. 选择数据源:本表单(即主表,根据需要也可以选择明细表)。在下方填些表达式时可以利用所选的本表单或明细表。 2. 情况:执行条件—单据状态=常量.是。 即按下菜单按钮时执行。根据需要可以设置情况1,情况2,情况N. 从左往右依次执行。 子数据源的设置: 说明:数据接口的作用即根据数据接口参数, 开始数=1关联到数据接口的开始序号,结束数=10 关联到数据接口的结束序号。
即利用数据接口实现目标表的行扩展或者列扩展,根据实际情况可以设置同级数据源或者子数据源。注意需要多记录时小方框需打勾。 3.当满足以下条件时: 其实增加了过滤条件,使之业务公式更加灵活多变,复杂的逻辑往往也通过此设置条件进行实现。包括下面列子:“按步长取数”也通过此设置条件得到。 4. 对目标表执行什么操作: 目标表区分主表与明细表,即下图左侧蓝色字体说明。 具体操作:插入,删除,更新,报错,自动流程。 本列子为“插入记录”操作。 插入操作时的“赋值”:这个填写需要转换个思路,一般填写往往是具体的某个结果。这里填写的是“序号列表.序号”,是数据接口中的数值。如下图: 以上1,2,3,4操作步骤设置内容图示。 因为在上面第3步骤中我们没有设置条件,所以根据数据源头设置的从1到10.连续10个数字全部取得。即明细表插入了从1到10的数据,根据SUM()函数得到的汇总数值为55. 若能理解以上操作原理。下面按设置步长获取数据过程也就不难理解了。 要求:比如从1开始,固定步长为3,一直到10为止的各数字之和。 即1+4+7+10=22. 第1个数字与最后1个数字分别对应开始数,结束数, 比较容易取得。但中间的4,7的数字根据步长得到,而且数据个数不固定。这个实现需要梳理下思路,如果步长为1从上面分析结果是全部取数,步长为3时,是需要符合一定条件的数字才可获取。这个条件怎么写,是否有现成的函数? 最终通过(数学函数—求余数)。如下图 即按“步长的整数倍+开始数”,并且符合在区间内的数字填写到明细表中。 这个过程实现的原理: 先根据数据接口获取从1到10的数字,并从第1个数字1开始,代入以上公式是否满足,若满足条件执行“插入记录”。 求余数(<被除数>,<除数>)=余数。 余数为0的序号列表.序号数赋值给明细。 (2-1)/ 3---- 余数为1, 不符合条件。 (3-1)/ 3---- 余数为2, 不符合条件。 (4-1)/ 3---- 余数为0, 符合条件。 (5-1)/ 3---- 余数为1, 不符合条件。 (6-1)/ 3---- 余数为2, 不符合条件。 (7-1)/ 3---- 余数为0, 符合条件。 (8-1)/ 3---- 余数为1, 不符合条件。 (9-1)/ 3---- 余数为2, 不符合条件。 (10-1)/ 3---- 余数为3, 符合条件。 从上面分析得到 数字分别是4,7,10,因为10刚好也是结束数。 为避免不重复赋值,需要写个条件进行排除,这个留给大家思考….. 从上面分析可以看出,数字从1到10每个数都会循环比对,即术语中的“遍历”。 实现传统软件中 IF ,ELSE 的循环嵌套的功能。 显示结果如下图, |
+10