"新建表单"公式
这种回写公式的作用是,保存一份表单的同时,自动新建一份其他的表单。这种类型的回写公式应用十分广泛,例如:
- 输入订单的时候,如果订单的客户尚未在“客户登记表”中登记过,则保存订单的同时,自动填报一份“客户登记表”
- 保存库存“调拨单”的同时,自动产生一张出库单(从调出仓库出库)和一张入库单(向调入仓库入库)
- 保存库存“调价单”的同时,自动产生一张出库单(按旧价格出库)和一张入库单(按新价格入库)
- ……
本节以上述第一个例子为例,说明“新建表单”公式的使用。
请读者先回顾第6章对于订单模板的设计。我们在订单模板上的“客户名称”处设置了填写规范,使得输入订单的时候,可以从一个下拉列表中选择客户名称,这就要求在输入订单之前,先把客户信息登记到“客户登记表”中。但是实际业务中,有可能一个新客户要订货,来不及事先登记客户信息,需要马上输入订单,这就要求我们的订单模板做改进,能够支持以下两点:
- 输入订单时,已有的客户名称,从下拉列表中选择,新客户的名称,直接输入
- 如果是新客户的订单,能够自动把新客户名称登记到“客户登记表”中。
设置订单中“客户名称”字段可手工输入
- 以设计者身份登录系统,设计栏目中【数据规范】-【下拉列表】中新建“客户名称列表”如下:

2.打开“订单“模板的管理数据表中【客户名称】字段的数据规范设置窗口,勾选【填报时允许手工输入】。

设置后,若客户名称不在下拉列表中,就可以直接输入客户名称。
定义“新建表单”公式
- 打开订单模板,进入设计状态
- 选择菜单【表间公式】
- 在左侧选择公式类型“回写-新建报表”,点击【新建】按钮。
- 输入公式名称为“自动产生新客户”,应用时机为“办理保存时”,切换到“工作流任务”标签下,选择任务名称为“制单”,如图。


5.点击【1.选择模板】,在弹出的窗口下,选择要新建的模板名称。选择好后点击【确定】。回到上一层窗口。

6.点击【2.筛选条件】按钮,弹出“输入条件”窗口,设置条件为“本报表.订单_主表.客户名称 有值 并且 本报表.订单_主表.客户编号 无值”,如图,点击【确定】

解释一下,为什么要输入这样的筛选条件呢?大家可以回顾第6章,我们在订单模板上定义了一条表间公式,当选择客户名称后,会自动从客户登记表中查出该客户的编号。所以,只要客户编号有值,说明这个客户的信息在客户登记表中是存在的,只有“客户编号无值”的时候,才是一个新客户,才需要自动添加到客户登记表中去。
7.点击【3.填充方式】按钮,弹出“填充方式”窗口,依次选择用本报表的哪些字段填充新表单的对应字段,如图,最后点击【确定】。

8.回到上级窗口,完整的公式如下:

9.在“新建表单公式”的窗口上,还有一个按钮【高级】,点击此按钮,出现下面的子窗口,在此窗口上,可以设置新表单的填报人。
在这里我们设置新表单的填报人和本表单的填报人相同,也就是说,假如张三填报了一张订单,并输入的新的客户名称,则保存订单的时候,同时存了一份客户登记表,这分客户登记表也相当于张三填的。
另一种可能情况是,公司有专门的行政人员录入订单,所以张三的订单不是本人录入的,是录入员录入的,可是在录入订单的时候新增加的客户登记表,还应该是张三名下的客户,回忆第5章,我们设置了销售员对客户登记表的查阅权限是“本人填报的”,也就是说,我们希望录入订单时新增的客户登记表,“视同”张三填的,而不是录入员填的,这时,我们需要选择新表单的填报人为“来自本表单数据字段:订单_主表.销售员”,也就是说,不管是谁在录入订单,只要订单上的“销售员”那一栏写的是张三的名字,则同时新增的客户登记表就算是张三填的。
设好之后点【确定】,回到“新建表单公式”窗口。

10. 点击【保存】,回到“表间公式”窗口,点击【关闭】
11.关闭模板。
说明:若本报表中提取的数据表为明细表且明细数据有重复时,新建的表单又不能有重复数据时,应该如何设置新建表单公式呢?我们可以如下图所示,选择【高级】选项卡,勾选【从本报表细表提数据时过滤重复项】。解决重复数据的问题。

应用“新建表单”公式
新建一份订单,直接输入一个下拉列表中没有的客户名称, 继续输入其他内容,保存订单。
到我的工作台中查看“客户登记表”,会看到新客户的信息已产生。
练习题
利用本节的“新建表单”公式,可以做到在保存订单的同时,自动针对新客户填报一份客户登记表,而且,这个新客户的客户编号也自动产生了。这就带来一个问题:当输入订单的时候,因为是新客户,所以没有客户编号;保存订单之后,新客户编号自动产生了,所以还需要把这个自动产生的新编号回写到订单上,做法是:
- 打开客户登记表模板,进入设计状态。
- 定义一条回写公式,如图:

现在重新填报一份订单,输入下拉列表中不存在的客户名称,保存。然后到我的工作台中查看“客户登记表”,观察新产生的客户信息;再查看“订单”,看新客户编号是否已被更新到订单上。
通过“新建表单”表间公式可以新建Excel表单,那能不能通过表间公式新建word表单呢?是可以的,可通过“回写(新建word)”公式实现。定义与操作同“新建表单”公式类似。
