整单成功或整单回滚
动作由校验、新增记录、修改记录、数值增减、调用另一个动作、通知这些步骤组成,在同一个事务里按顺序执行;任何一步失败,整单回滚,并告诉你是第几步、为什么。
例:销售出库 = 扣库存 + 记库存流水 + 单据改成已出库用表单工具或 Excel 管进销存,常见的毛病是:销售单出库只能一条一条改数据,中途出错就留下半截;两个人同时出同一个商品,都先看到“还剩 10 个”再各扣 8 个,库存变成负数;单据没有状态,已出库的单子谁都能改;采购单要老板批了才能入库,却没有地方批。
山衡的做法是把这几件事做成平台自带的能力,而不是靠页面上拼脚本:业务动作负责在一个事务里把多张表改对,状态流转决定单据什么时候能做什么,审批是流转上的一道人工关卡。三者可以单独用,也可以组合起来。
管理员按表配置一个动作,比如“出库”,用户在单据页点一下按钮就执行。
动作由校验、新增记录、修改记录、数值增减、调用另一个动作、通知这些步骤组成,在同一个事务里按顺序执行;任何一步失败,整单回滚,并告诉你是第几步、为什么。
例:销售出库 = 扣库存 + 记库存流水 + 单据改成已出库对库存的增减先锁住那一行再计算,两个人同时出同一个商品,后面的会看到最新的余额;可以设“结果不得小于 0”,不够扣就拒绝。
锁行后再算通过开放 API 调用动作时,请求头带 Idempotency-Key,同一个键重试只会执行一次,外部系统网络抖动重发也不会重复出库。
仓管员能点“出库”,但不能直接改库存余额表:管理员在动作上写明可以写哪几张表,执行时按这个范围放行,审计里记成“经动作『出库』”。
单据页按钮、页面按钮组件、开放 API、数字员工、AI 工具和 MCP 调用的都是同一个动作,权限、校验、审计口径一致。
站内通知和邮件在事务提交成功后才发,回滚了就不会发出“已出库”的通知;动作里写的表,仍会触发盯着这些表的数字员工。
单据上的单号、金额、合计,不用再靠页面脚本去算。
单号规则可以写成“XS + 日期 + 4 位序号”这样的形式,序号按日、按月、按年重置或不重置;并发保存不会重号。回滚和作废会留下空号,不会重号。
例:XS20261030-0001用同一行的字段算出来,比如金额 = 数量 × 单价;每次新增或修改这一行时重算,字段只读,不能手改。
单头上的合计,可以对明细求和、计数、取最大或最小;明细新增、修改、删除时,在同一个事务里重算单头。
新建单据时就能直接填明细行,保存时单头和全部明细在一个事务里一起存,任何一行不对,整单不存,并指出是第几行的什么问题。
销售单从草稿到出库、采购单从待审批到入库,每一步由谁来做、做完变成什么状态,都在表设置里配。
选一个下拉字段做状态字段,它的选项就是各个状态。普通编辑、导入、开放 API 都改不了状态,只能点“提交”“出库”这样的流转按钮。
每个状态可以锁定全部或指定的字段、设定能不能删除、选一个颜色。已出库的单据,既改不了也删不了,明细一起被锁定。
一条流转可以绑定一个业务动作:执行动作、改状态、记流转历史在同一个事务里,要么全成,要么全不成。还能设谁有权操作、前置条件和必填备注。
每次流转谁在什么时候从哪个状态到哪个状态、备注是什么,都显示在单据页,记录页上还有一张流程小图,高亮当前状态、加粗下一步。
示例,按你自己的业务来配;状态、按钮、条件都能改。
| 流转 | 从 | 到 | 绑定的动作 | 是否审批 |
|---|---|---|---|---|
| 提交 | 草稿 | 已审核 | 无 | 金额超过设定值才要审批 |
| 出库 | 已审核 | 已出库 | 出库:每行商品扣库存、写一笔库存流水 | 不需要 |
| 作废 | 草稿、已审核 | 已作废 | 无 | 不需要 |
| 反审核 | 已审核 | 草稿 | 无 | 不需要 |
在流转上勾“需要审批”,点这条流转时自动发起,审批通过后才真正执行。
可以写触发条件,比如金额大于 1 万才审批;不满足条件的,直接流转,不打扰审批人。
每一级的审批人可以是指定的人、某个角色的成员,或者单据上人员字段指向的人;每一级任意一位审批人通过即可(或签)。
审批人驳回必须填意见,单据回到配置好的状态;发起人在还没有人审批之前可以撤回。审批中的单据整条锁定,不能删,也不能走别的流转。
轮到我审批但我不合适:可以转办,这一级改由别人审;也可以加签,表示我同意,再请某个人一起审。
最后一级通过时,在同一个事务里执行绑定的动作并改状态。要是这时库存已不够,整个回滚,审批单标成“通过但执行失败”并通知相关的人,补完库存后点重试执行。
“我的审批”页列出待我审批的和我发起的单据,可以直接通过或驳回;每一级轮到时发站内通知,也可以同时发邮件。审批记录显示在单据页。
上下游单据不用重新录一遍。
流转可以配成“生成另一张单据”:按字段对应关系生成目标单据的单头和明细,设计器里可以按名称自动对应;原单改成终点状态,整个过程在一个事务里。
例:报价单 → 销售单配上数量字段后,可以分几批转:每转一批,剩余数量相应减少;目标单作废或改小数量,剩余数量跟着恢复;全部转完可以改成指定的状态。
单据页有“上下游单据”区块,列出由它生成的和它来自的单据,分批转的进度也在这里。
设计器画出来的,和表格里配的是同一份配置,两边随时可以切换。
状态是节点,流转是连线:拖线新建流转,点选后在右侧改属性,支持撤销、重做、自动排版,有配置问题会标在画布上。
用对话说出想要的流程,AI 给出整份方案,画布上预览新增、改动、删除了哪些,你确认后才套用保存。
AI 检查流程里业务上的问题并给出提醒,再用大白话把整个流程讲一遍,业务人员不用看懂连线也能知道流程怎么走。
流转后让一位 AI 员工把这张单据看一遍,给出“建议通过”或“建议驳回”、理由和要注意的点,写进单据记录,审批人能看到;它不拦流程。
审批的前几级可以交给 AI 员工:通过的进入下一级,有疑问的交给兜底审批人,AI 不能当最后一级。模型不可用或超时,同样转给兜底审批人。
通过 MCP,外部 AI 工具可以读取流程、检查流程、提交方案;方案只存成草稿,管理员在设计器里预览并套用后才生效。
用以上这些能力搭好的一个完整应用,导入后就有可以用的表、动作、流程、报表和示例资料。
| 内容 | 包里的东西 |
|---|---|
| 数据表 | 17 张:商品、商品分类、仓库、供应商、客户,采购单、报价单、销售单、调拨单、盘点单(各带明细),库存余额、库存流水 |
| 业务动作 | 入库、出库、调拨、盘点调整,带写入授权;库存余额按“商品 + 仓库”一条记录,每次进出同时写一笔库存流水 |
| 状态流转 | 采购单(带一级审批,通过后入库)、销售单(出库扣库存,库存不够整单不动)、报价单(可分批转销售单)、调拨单、盘点单 |
| 报表和看板 | 7 张报表(库存余额、出入库明细、采购汇总、销售汇总、销售毛利、滞销商品、库存预警)和 1 个进销存看板 |
| 数字员工 | 1 位库存预警员工,每天 9 点检查低于安全库存的商品并通知采购;装好后先休息,要手动让它上岗 |
| 示例资料 | 商品分类、仓库等基础示例数据,装完就能试着走一遍采购、入库、销售、出库 |
应用包是一个文件,导入就能装好;装好的应用也可以发布到应用商店,各单位从商店一键安装,之后还能升级。
装完有两件事要自己做:采购单审批里的审批人,装的时候会临时设成安装的人,需要改成真正的审批人;库存预警数字员工装好是休息状态,需要手动开启。
照实写在这里,选型时可以对照。
山衡的进销存管到库存和单据,没有财务凭证、总账和税务模块。需要做账、报税的,用金蝶、用友这类财务软件,山衡通过开放 API 与它们对接。
手机上用的是响应式网页,没有原生 App;企业微信、钉钉里的登录、通知和批单正在做,目前审批提醒走站内通知和邮件。
业务动作只能改本单位租户库里的表,不能改外部数据源的表;单个动作最多 2000 次写入、30 秒超时,年终结转这类大批量的活,交给数字员工分批处理。
平台目前没有部门和上级,审批人按人、角色或单据上的人员字段来定,没有“发起人的直属上级”这类规则;每级是或签,没有会签,也没有超时自动催办。
回滚和作废会留下空号,但不会重号。财务要求连号的单据,需要另外设计。
销售毛利按明细上的“成本单价”算,需要按商品进价填;盘点的账面数也是手填,库存按“实盘 − 账面”的差额调整。
能搭。采购、销售、库存、调拨、盘点的表、动作、审批流程和报表,已经做成了一个进销存应用包,导入就能用,再按自己的业务改。但它管到库存和单据为止,没有财务凭证和税务模块,财务对接金蝶、用友。
对库存的增减会先锁住那一行再计算,同时出同一个商品的两个人,后面的会看到最新的余额,不够就拒绝,并且整单回滚。这个保证限于同一个租户库里的平台表。
支持条件触发、1~5 级逐级审批、每级或签、驳回、撤回、转办、加签,通过后自动执行流转。目前没有部门和上级、会签、超时催办,也没有“发起人自己选审批人”。详见 选型对比。
建表、配动作、配流转、配审批、拖流程都在界面里完成,不用写脚本。前置条件和计算公式要写简单的表达式,比如金额大于 1 万、数量乘单价,由管理员配置,表达式里不能读写别的数据。数字员工的任务才需要写 JavaScript,见 数字员工。
手机上用的是响应式网页,在手机浏览器里登录使用,没有原生 App。企业微信、钉钉里直接登录、收通知和批单正在做,目前审批提醒走站内通知和邮件。
不会。AI 审查只给建议,不拦流程;AI 当初审时,通过的进入下一级,有疑问的转给兜底审批人,而且不能当最后一级,最终拍板的始终是人。AI 的调用用你配置的模型,用量计入额度,详见 AI 数据助手。
山衡数字员工让重复的活自己跑:按时间或数据变化自动触发,也能手动运行,能读写数据表、调用外部接口、发通知,每次运行都有记录,并且以所有者的权限执行。
了解详情山衡直连 MySQL、PostgreSQL、SQL Server、ClickHouse、Doris,把 ERP、进销存、CRM 背后的业务数据库直接做成报表和看板:点选维度指标,支持同比环比、Excel 模板导出、定时邮件,数据留在原库。
了解详情山衡的权限精确到表、字段、行,并在表格、报表、导出、AI、API 等所有入口统一生效;每个租户独立数据库,支持两步验证、操作审计、备份恢复和 Docker 部署。
了解详情