阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

老司机
查看: 1284|回复: 0

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

[复制链接]
  • TA的每日心情
    难过
    2015-11-24 10:40
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    发表于 2015-10-16 14:49:54 | 显示全部楼层 |阅读模式
    利用数据源实现按步长累加计算
    数据接口,填表公式,业务公式是云表平台的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/forum.php?mod=viewthread&tid=781&page=1&extra=#pid2071
    楼主热帖
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表