lsh767 发表于 2015-10-14 07:46:38

在云表中利用数据源实现按步长累加计算,表格式编程

利用数据源实现按步长累加计算
数据接口,填表公式,业务公式是云表平台的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 谢谢。

gderp 发表于 2015-10-14 08:59:22

楼主啊,你的截图上传了吗,我怎么看不到的{:soso_e135:}

jackli 发表于 2015-10-15 17:45:33

图呢?{:soso_e118:}

lsh767 发表于 2015-10-15 22:30:11


    利用数据源实现按步长累加计算
数据接口,填表公式,业务公式是云表平台的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 的循环嵌套的功能。
显示结果如下图,

















lsh767 发表于 2015-10-15 22:34:50

不好意思,第1次发布图片不知道怎么上去,修改时在回复中补充了。:)

Moke 发表于 2015-10-16 16:18:14

写得很详细,学习拉,希望大家都向你学习,把经验分享出来:D
页: [1]
查看完整版本: 在云表中利用数据源实现按步长累加计算,表格式编程