数据库中u8单据具体存储位置如何查询?
- 内容介绍
- 文章标签
- 相关推荐
一、 :为何找不到U8单据的存储位置?
在实际项目中,开发者常常面临以下痛点:
- 不同U8版本和客户自定义配置导致表名、字段不统一。
- 程序文档缺失或过时难以快速定位单据对应的数据库表。
- 单据主表、明细表还有关联/辅助表层层嵌套,查询效率低下。
二、U8单据的基本数据模型
1. 单据主表
每类业务单据都有一个“主表”。用于保存单据头部信息,如编号、日期、客户/供应商等。常见主表包括这方面,
-
销售订单:
SO_SOMain -
采购订单:
PO_POMain -
入库单:
PU_PUArrivalVouch -
出库单:
SA_SaleIssue -
库存调拨单:
IC_BizBill -
库存盘点单:
IC_CheckMain -
凭证单:
gl_accvouch
2. 单据明细表
对应每个主表。都有一个或多个明细表,用于存放商品、数量、价格等逐行信息。说到例如,
-
SO_SODetail– 销售订单明细 -
PODetail/PODetailVouch– 采购订单明细 -
rdrecords/SADetail,PUDetailVouch,SADetailVouch。etc.
3. 辅助/关联表
用于保存附件、备注、审批流程等 信息,典型例子有:
-
Cus_ContactInfo,Cus_ContractInfo -
CVoucherPrefabricateView
三、如何快速定位某张单据的存储位置?——一步步操作教程
a) 确认U8版本与数据库类型
- 用友U8 支持 SQL Server、Oracle 等后端。不同数据库的程序库名称可能不同,例如 ufsystem 或 systablespace。先打开对应的管理工具,
b) 查找程序字典或元数据视图
- 大多数 U8 安装都提供视图 LCS_TableInfo_VW / LCS_FieldInfo_VW 。可以通过以下语句检索关键字 “采购” 或 “出库”:
SELECT TableName,TableDesc FROM LCS_TableInfo_VW WHERE TableDesc LIKE '%采购%';
- 若无视图,可直接搜索程序库中的所有使用者表:
SELECT name FROM sys.tables WHERE name LIKE '%PO%' OR name LIKE '%PUR%';
b) 根据业务模块定位主表
| 常用业务模块 ↔ 主表映射 | |||||||
|---|---|---|---|---|---|---|---|
| 采购管理 → 采购订单 | POMain | ||||||
| 采购入库 → 入库凭证 | PU_PUArrivalVouch | ||||||
| 销售管理 → 销售订单 | SO_SOMain | ||||||
| 销售出库 → 出库凭证 | SA_SaleIssue | ||||||
| 库存调拨 → 调拨单 | IC_BizBill | ||||||
| 库存盘点 → 盘点单 | IC_CheckMain | ||||||
| * 注:实际部署时可能出现前缀如 “dbo.” 或 “u8_” 的差异。 | |||||||
| 提问 ❓ | 回答 ✅ | ||||||
|---|---|---|---|---|---|---|---|
| “怎么确认我的 U8 是哪一个版本?” ❔ sql SELECT TOP 1 cVersion FROM ufsystem..UFVersion;不过,我想知道当前程序运行在哪个 SQL 实例上?sql SELECT @@SERVERNAME AS ServerName; | 答:执行上述两条语句即可分别得到 U8 的内部版本号和所在 SQL Server 实例名称。不过,若返回空值,请确认已连接到 UFSystem 数据库。 | ||||||
| 我只记得“采购入库”,但不知道具体是哪张表?❔ |
在程序库中搜索关键字:
sql
SELECT TableName,TableDesc
FROM LCS_TableInfo_VW
WHERE TableDesc LIKE '%入库%';若返回 ``PU_PUArrivalVouch` 和 ``rdrecords` 两张。则前者为头部,后者为明细。| 查询到的数据却显示为空,是不是权限问题? | 检查当前登录账号是否属于 `db_datareader` 或拥有相应角色;确认是否已加上组织过滤条件。 | 如何一次性导出所有未审核的凭证? | 使用如下语句:
sql
SELECT *
FROM gl_accvouch
WHERE iChkState = 0;-- 未审核状态标记
可配合 娱乐P 导出至 CSV。 | 我的账套备份文件在哪儿? | 默认方法是安装根目录下 `C:\U8\Data\<账套号>\backup\`,也可以在 U8 程序管理 → 数据备份 → 方法设置中查看。
| |
七、结论与常用方法 📌
- 明确业务模块对应的Main 表 + Detail 表 + 辅助关联 表`是定位 U8 单据的第一步先。
- 利用程序视图配合关键词模糊搜索,可快速跨版本定位目标。
- 切记检查版本差异、前缀命名和组织过滤字段;否则很容易出现“找不到该单据”的误判。
- 为了保证后期维护效率。请在项目文档中记录每次自定义修改过的 table/field 名称,并定期同步至代码仓库。
这篇文章约1800字,阅读时间约5‑7分钟。若还有未覆盖的问题,请在评论区留言,我们将持续更新!🎉️🛠️💻️🗂️📊️💾️🔍️📚️💡️︎︎︎︎︎︎︎︎︎︎︎︎︎︎︎︎︎ .
一、 :为何找不到U8单据的存储位置?
在实际项目中,开发者常常面临以下痛点:
- 不同U8版本和客户自定义配置导致表名、字段不统一。
- 程序文档缺失或过时难以快速定位单据对应的数据库表。
- 单据主表、明细表还有关联/辅助表层层嵌套,查询效率低下。
二、U8单据的基本数据模型
1. 单据主表
每类业务单据都有一个“主表”。用于保存单据头部信息,如编号、日期、客户/供应商等。常见主表包括这方面,
-
销售订单:
SO_SOMain -
采购订单:
PO_POMain -
入库单:
PU_PUArrivalVouch -
出库单:
SA_SaleIssue -
库存调拨单:
IC_BizBill -
库存盘点单:
IC_CheckMain -
凭证单:
gl_accvouch
2. 单据明细表
对应每个主表。都有一个或多个明细表,用于存放商品、数量、价格等逐行信息。说到例如,
-
SO_SODetail– 销售订单明细 -
PODetail/PODetailVouch– 采购订单明细 -
rdrecords/SADetail,PUDetailVouch,SADetailVouch。etc.
3. 辅助/关联表
用于保存附件、备注、审批流程等 信息,典型例子有:
-
Cus_ContactInfo,Cus_ContractInfo -
CVoucherPrefabricateView
三、如何快速定位某张单据的存储位置?——一步步操作教程
a) 确认U8版本与数据库类型
- 用友U8 支持 SQL Server、Oracle 等后端。不同数据库的程序库名称可能不同,例如 ufsystem 或 systablespace。先打开对应的管理工具,
b) 查找程序字典或元数据视图
- 大多数 U8 安装都提供视图 LCS_TableInfo_VW / LCS_FieldInfo_VW 。可以通过以下语句检索关键字 “采购” 或 “出库”:
SELECT TableName,TableDesc FROM LCS_TableInfo_VW WHERE TableDesc LIKE '%采购%';
- 若无视图,可直接搜索程序库中的所有使用者表:
SELECT name FROM sys.tables WHERE name LIKE '%PO%' OR name LIKE '%PUR%';
b) 根据业务模块定位主表
| 常用业务模块 ↔ 主表映射 | |||||||
|---|---|---|---|---|---|---|---|
| 采购管理 → 采购订单 | POMain | ||||||
| 采购入库 → 入库凭证 | PU_PUArrivalVouch | ||||||
| 销售管理 → 销售订单 | SO_SOMain | ||||||
| 销售出库 → 出库凭证 | SA_SaleIssue | ||||||
| 库存调拨 → 调拨单 | IC_BizBill | ||||||
| 库存盘点 → 盘点单 | IC_CheckMain | ||||||
| * 注:实际部署时可能出现前缀如 “dbo.” 或 “u8_” 的差异。 | |||||||
| 提问 ❓ | 回答 ✅ | ||||||
|---|---|---|---|---|---|---|---|
| “怎么确认我的 U8 是哪一个版本?” ❔ sql SELECT TOP 1 cVersion FROM ufsystem..UFVersion;不过,我想知道当前程序运行在哪个 SQL 实例上?sql SELECT @@SERVERNAME AS ServerName; | 答:执行上述两条语句即可分别得到 U8 的内部版本号和所在 SQL Server 实例名称。不过,若返回空值,请确认已连接到 UFSystem 数据库。 | ||||||
| 我只记得“采购入库”,但不知道具体是哪张表?❔ |
在程序库中搜索关键字:
sql
SELECT TableName,TableDesc
FROM LCS_TableInfo_VW
WHERE TableDesc LIKE '%入库%';若返回 ``PU_PUArrivalVouch` 和 ``rdrecords` 两张。则前者为头部,后者为明细。| 查询到的数据却显示为空,是不是权限问题? | 检查当前登录账号是否属于 `db_datareader` 或拥有相应角色;确认是否已加上组织过滤条件。 | 如何一次性导出所有未审核的凭证? | 使用如下语句:
sql
SELECT *
FROM gl_accvouch
WHERE iChkState = 0;-- 未审核状态标记
可配合 娱乐P 导出至 CSV。 | 我的账套备份文件在哪儿? | 默认方法是安装根目录下 `C:\U8\Data\<账套号>\backup\`,也可以在 U8 程序管理 → 数据备份 → 方法设置中查看。
| |
七、结论与常用方法 📌
- 明确业务模块对应的Main 表 + Detail 表 + 辅助关联 表`是定位 U8 单据的第一步先。
- 利用程序视图配合关键词模糊搜索,可快速跨版本定位目标。
- 切记检查版本差异、前缀命名和组织过滤字段;否则很容易出现“找不到该单据”的误判。
- 为了保证后期维护效率。请在项目文档中记录每次自定义修改过的 table/field 名称,并定期同步至代码仓库。
这篇文章约1800字,阅读时间约5‑7分钟。若还有未覆盖的问题,请在评论区留言,我们将持续更新!🎉️🛠️💻️🗂️📊️💾️🔍️📚️💡️︎︎︎︎︎︎︎︎︎︎︎︎︎︎︎︎︎ .

