使用「模板打印」功能生成《供货与采购合同》示例
在供应链或贸易场景下,时常需要快速生成一份标准化的"供货与采购合同",并根据数据源中的买家、卖家、商品明细等信息动态填充内容。下面将以一个简化的「合同」用例为例,向您展示如何配置并使用"模板打印"功能,将数据信息映射到合同模板中的占位符,从而自动生成最终合同文档。
1. 背景与数据结构概述
在我们的示例中,大致存在以下主要数据表(省略其他不相关字段):
- parties:存储甲方/乙方的单位或个人信息,包括名称、地址、联系人、电话等
- contracts:存储具体的合同记录,包括合同编号、买方/卖方外键、签字人信息、起止日期、银行账户等
- contract_line_items:用于保存该合同下的多个条目(商品名称、规格、数量、单价 、交货日期等)

由于当前系统仅支持单条打印,我们会在"合同详情"页点击"打印",系统自动抓取对应的 contracts 记录,以及关联的 parties 等信息,填充到 Word 或 PDF 文档中。
2. 准备工作
2.1 插件准备
注意,我们的「模板打印」是商业插件,需购买激活之后才可进行打印操作。

确认插件激活:
在任意页面中,创建一个详情区块(比如 users),查看操作配置中有没有对应模板配置的选项:


2.2 数据表创建
创建上方设计的主体表、合同表和商品条目表(挑选核心字段即可)。
合同表(Contracts)
主体表(Parties)
商品条目表(Contract Line Items)
2.3 界面配置
录入示例数据:


联动规则配置如下,自动计算总价和后付款项:

创建查看区块,确认数据后,开启「模板打印」操作:

2.4 模板打印插件配置

新增一条模板配置,比如《供货与采购合同》:


接下来我们来到字段列表的 Tab 页,可以看到目前对象所有的字段。稍后我们点击"复制"之后,即可开始填充模板。

2.5 合同文件准备
Word 合同模板文件
事先准备好合同范本(.docx 文件),例如:SUPPLY AND PURCHASE CONTRACT.docx
在本文示例中,我们给出了一个简化版《供货与采购合同》,其中包含了示例占位符:
{d.contract_no}:合同编号{d.buyer.party_name}、{d.seller.party_name}:买方、卖方名称{d.total_amount}:合同总金额- 以及其他"联系人""地址""电话"等占位符
接下来可以根据你建表的字段进行复制并覆盖到 Word 中。
3. 模板变量教学
3.1 基本变量、关联对象属性填充
基本字段填充:
比如最上方的合同号,或者我们合同签署主体的对象。我们点击复制,直接粘贴到合同对应位置空白即可。


3.2 数据格式化
日期格式化
在模板中,我们常常需要对字段进行格式化,特别是日期字段。直接复制的日期格式通常较长(如 Wed Jan 01 2025 00:00:00 GMT),需要通过格式化来展示我们想要的样式。
对于日期字段,可以使用 formatD() 函数来指定输出格式:
示例:
比如我们复制的原始字段是 {d.created_at},而我们需要将日期格式化为 2025-01-01 这种格式,则改造这个字段变为:
常见的日期格式化样式:
YYYY- 年份(四位数字)MM- 月份(两位)DD- 日期(两位)HH- 小时(24小时制)mm- 分钟ss- 秒
例2:
金额格式化
假设有一个金额字段,比如合同中的 {d.total_amount}。我们可以使用 formatN() 函数来格式化数字,指定小数位数和千位分隔符。
语法:
- 小数位数:你可以指定保留多少位小数。例如,
2表示保留两位小数 - 千位分隔符:指定是否使用千位分隔符,通常为
true或false
示例 1:格式化金额为带千位分隔符的两位小数
这会将 d.amount 格式化为两位小数并添加千位分隔符。
示例 2:格式化金额为不带小数位的整数
这会将 d.amount 格式化为整数,并添加千位分隔符。
示例 3:格式化金额为没有千位分隔符的两位小数
这里禁用了千位分隔符,只保留两位小数。
其他金额格式化需求:
- 货币符号:Carbone 本身不直接提供货币符号的格式化功能,但你可以通过直接数据或模板中添加货币符号来实现。例如:
字符串格式化
对于字符串字段,可以使用 :upperCase 来指定文本的格式,例如大小写转换。
语法:
常用转换方式:
upperCase- 转换为全大写lowerCase- 转换为全小写upperCase:ucFirst- 首字母大写
示例:
3.3 循环打印
如何打印子对象列表(如商品明细)
当我们需要打印一个包含多个子项(例如商品明细)的表格时,通常需要采用循环打印的方式。这样,系统会根据列表中的每一项生成一行内容,直到遍历完所有项。
假设我们有一个商品列表(例如 contract_items),它包含多个商品对象。每个商品对象有多个属性,比如产品名称、规格、数量、单价、总金额和备注。
步骤 1:在表格的第一行填写字段
首先,在表格的第一行(不是表头)中,我们直接复制并填写模板变量。这些变量会被对应的数据替代,展示在输出中。
例如,表格的第一行如下所示:
这里,d.contract_items[i] 表示商品列表中的第 i 项,i 是一个索引,它代表当前商品的顺序。
步骤 2:在第二行修改索引
接下来,在第二行的表格中,我们将字段的索引修改为 i+1,并且填写第一个属性即可。这是因为在循环打印时,我们要从列表中取出下一项数据,并展示在下一行。
例如,第二行填写如下:
在这个例子中,我们将 [i] 改为了 [i+1],这样就能够获取列表中的下一项商品数据。
步骤 3:模板渲染时自动循环打印
当系统处理这个模板时,会按照以下逻辑操作:
- 第一行会按照你在模板中设置的字段进行填充
- 然后,系统会自动删除第二行,并开始从
d.contract_items中提取数据,按表格中的格式循环填充每一行,直到所有商品明细打印完毕
每一行 的 i 会递增,从而确保每一行显示的是不同的商品信息。
4. 上传并配置合同模板
4.1 上传模板
- 点击「添加模板」按钮,输入模板名称,例如"供货与采购合同模板"
- 上传准备好的 Word 合同文件(.docx),其中已包含所有占位符

- 完成后,系统会将该模板列在可选的模板列表中,供后续使用
- 我们点击"使用"即可激活此模板

这个时候退出当前弹窗,点击下载模板,即可获取生成的完整模板。
小贴士:
- 若模板使用
.doc或其他格式,可能需要转换为.docx,具体视插件支持情况而定 - 在 Word 文件中,留意不要把占位符拆分到多个段落或文本框,以免出现渲染异常
祝使用顺利!通过「模板打印」功能,您可以在合同管理中极大节省重复工作、避免人工复制粘贴错误,实现合同的标准化与自动化输出。

