魔方网表 让信息化更简单

 找回密码
 注册
查看: 3092|回复: 1

[原创] 如何实现:预算管理

[复制链接]
mofanglt 发表于 2015-12-16 16:42:46 | 显示全部楼层 |阅读模式
如何实现:预算管理
思路,在“预算管理”表中编辑回写公式,表单内执行各种操作时出发回写,但是这些回写公式的源表单和目标表单都是“预算管理”表本身,然后通过树节点的特殊过滤以及树节点相关函数编辑赋值公式,来实现逐级汇总计算。
具体通过编辑回写公式实现的过程如下:
1. 在“预算管理”表中启用回写公式;
在“预算管理”表中编辑回写公式,单击“编辑回写公式”按钮 打开编辑回写公式面板。
2. 在“新增记录”中添加回写公式;
步骤一:在“预算管理”表的编辑回写公式面板,选择触发类型为“新增记录”,然后新增一个回写公式“新增预算”。
步骤二:然后编辑“新增预算”公式,展开公式的设置项,找到操作设置框。单击 按钮,选择“预算管理”表作为源表单;再单击 按钮打开设置源表单过滤条件面板,过滤条件设置成:预算管理.预算科目“在列表中”MFTREECH("预算科目",MFTREEPA("预算科目",$MF(预算科目)$));"预算科目"为字符串,这里作为 MFTREEPA()函数的树字段名称变量,$MF(预算科目)$是通过“插入字段”直接选择录入的,这里是作为 MFTREEPA()函数的节点完整路径变量,MFTREEPA("预算科目",$MF(预算科目)$)所返回的是“预算科目”树中$MF(预算科目)$节点的父节点,然后用 MFTREEPA()函数来返回“预算科目”树中刚才返回的父节点的所有直接子节列表,过滤条件用“在列表中”做连接符,意思是凡是在返回列表中的记录都是符合条件的,因此过滤出来的就是“预算科目”树中指定节点的所有兄弟节点,也就是所有平级节点的记录。下面继续设置,单击 按钮,选择目
标表单是“预算管理”,单击 按钮,设置过滤条件,过滤条件设置成: 预算管理.预算科目 “等于” MFTREEPA("预算科目",$MF(预算科目)$);MFTREEPA()函数返回的是"预算科目"树中$MF(预算科目)$节点的父节点,这样就可以把源表单中过滤出来的节点进行汇总后直接赋值给目标表单过滤出来的那些节点的父节点了。源表单和目标表单经过过滤后的记录使用方式都设置为“仅使用第一条”即可。
注释:
?  MFTREEPA():此函数用于定义回写公式过滤条件定义中的条件值,返回树类型字段指定节点的父节点完整路径。
?  MFTREEPA():此函数用于定义回写公式过滤条件定义中的列表条件值,返回树类型字段指定节点的直接子节点完整路径列表。
步骤三:选择操作方式为“修改”,并勾选上不存在则创建。然后单击 按钮给“预算科目”、“名称”、“金额”赋值,如图 24.5.6 所示。赋值公式如下:
?  预算科目:MFTREEPA(" 预算科目",$MF(预算科目)$)详解:返回“预算科目”树中$MF(预算科目)$节点的父节点。
?  名称:"汇总项"详解:字符串,返回" "中间的文本。
?  金额:$MF(SUM(源表单.金额))$
详解:返回“源表单.金额”的汇总值,SUM()为汇总函数。
步骤四: 新增记录触发回写公式编辑完成后, 确认下公式是否在启用状态, 然后单击按钮保存编辑的回写公式。
3. 在“修改记录”中添加回写公式;
步骤一:继续编辑回写公式,选择触发类型为“修改记录”,然后新增一个回写公式“修改预算”。
步骤二:然后编辑“修改预算”公式,展开公式的设置项,找到操作设置框。
这里的源表单和目标的以及各自的过滤条件设置都与“新增记录”触发中“新增预售”回写公式设置的一样,直接参考上面的设置即可,这里就不再冗述了。
步骤三:选择操作方式为“修改”,并勾选上不存在则创建。然后单击 按钮给“预算
科目”、“名称”、“金额”赋值。赋值公式如下:
?  预算科目:MFTREEPA(" 预算科目",$MF(预算科目)$)
详解:返回“预算科目”树中$MF(预算科目)$节点的父节点。
?  名称:"汇总项"
详解:字符串,返回" "中间的文本。
?  金额:$MF(SUM(源表单.金额))$
详解:返回“源表单.金额”的汇总值,SUM()为汇总函数。
步骤四: 修改记录触发回写公式编辑完成后, 确认下公式是否在启用状态, 然后单击按钮保存编辑的回写公式。
4. 在“删除记录”中添加回写公式;
步骤一:在“预算管理”表的编辑回写公式面板,选择触发类型为“删除记录”,然后新增一个回写公式“删除预算”。
步骤二: 然后编辑 “删除预算” 公式, 展开公式的设置项, 找到操作设置框。
这里的源表单和目标的以及各自的过滤条件设置都与“新增记录”触发中“新增预售”回写公式设置的一样,直接参考上面的设置即可,这里就不再冗述了。
步骤三:选择操作方式为“修改”,并勾选上不存在则创建。然后单击 按钮给“预算科目”、“名称”、“金额”赋值。赋值公式如下:
?  预算科目:MFTREEPA(" 预算科目",$MF(预算科目)$)
详解:返回“预算科目”树中$MF(预算科目)$节点的父节点。
?  名称:"汇总项"
详解:字符串,返回" "中间的文本。
?  金额:$MF(SUM(源表单.金额))$
详解:返回“源表单.金额”的汇总值,SUM()为汇总函数。
步骤四: 删除记录触发回写公式编辑完成后, 确认下公式是否在启用状态, 然后单击按钮保存编辑的回写公式。
5. 实际效果展示。
?打开“预算管理”表单。
?在“预算科目”树的“明细”节点中添加一条记录,金额为 300。
?现在可以查看下这个“明细”中的金额是否汇总在它的父节点“产品 A”中去了,可以看到已经回写汇总过来了,名称为“汇总项”,金额为 300。
?现在我在产品 B 下面也添加一条记录,金额为 500。
?再来看看这个“明细”节点的父节点“产品 B”节点中的记录,同样回写汇总了。
?最好再来看看“产品 A”和“产品 B”这两个兄弟节点的父节点,回写汇总也实现了,金额汇总为了 800
wowj0615 发表于 2020-7-2 10:16:04 | 显示全部楼层
按照这个设置,产品A和产品B节点的金额变了,但是“产品 A”和“产品 B”这两个兄弟节点的父节点的金额并没有变为800,为什么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则


Archiver|手机版|小黑屋|魔方软件 ( 京ICP备08008787号 )

京公网安备 11010702001722号

GMT+8, 2024-5-17 19:05 , Processed in 0.065783 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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