1C:ERP 到 1C:HC 数据迁移:Python + SQLite + COM 管道
1C 开发者在从 ERP 切换到 HC 时,常常被标准转换工具卡住。自定义源代码修改、数据结构不匹配以及反复运行等问题,需要一个中间层来解决。Python + SQLite + COM 管道 提供完全透明的操作:导入到原始数据库、基于映射的处理,以及导出到目标系统。开源代码已在 GitHub 上提供。
三阶段架构
管道分为独立阶段:
- import:通过 COM 从 ERP 读取数据、标准化并保存到 SQLite。
- process:使用字段、类型和引用映射,转换数据以适配 HC 模型。
- export:在 HC 中定位/创建对象并通过 COM 写入。
中间 SQLite 数据库允许在每个步骤检查数据,并对比原始版与处理版。每种实体对应一个独立的数据库文件。
迁移管道需求
此方案解决工业迁移中的关键挑战:
- 转移关联实体,同时尊重依赖关系。
- 分离读取、处理和写入。
- 存储中间数据以供分析。
- 自动和手动字段/枚举映射。
- 通过 UUID 专用引用跟踪。
- 选择性重新导出记录。
- Web 界面用于启动和监控。
- 定时自动运行并通知。
为什么选择 SQLite 作为中间层
SQLite 以其实用性脱颖而出:
- 本地访问,无需服务器。
- 便于阶段间比较。
- 支持反复运行无问题。
- 每个实体和阶段一个数据库。
数据格式可预测:引用用 JSON 存储显示名称、UUID 和类型;枚举为 Enum.Name.Value。
{
"presentation": "Romashka 有限责任公司",
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "Catalog.Counterparties"
}
从 ERP 导入:模块化结构
IN/ 目录下的模块通过 COM 连接 ERP,执行查询、标准化类型并保存到数据库。主要任务:
- 提取引用的显示名称和 UUID。
- 处理枚举。
- 保留类型以便后续转换。
自动化 ERP 和 HC 元数据导出生成初始映射、比较属性并标记差异。
数据处理:处理器和映射
process 阶段是核心:字段重命名、类型转换、账户合并、引用准备。逻辑分为:
- 核心处理器负责基础设施。
- 自定义
PROCESS/<catalog>_processor.py处理业务规则。
映射存储在专用文件:
catalog_mapping.json— 加载器/处理器/写入器路由。chart_of_accounts_mapping.json— 会计科目表。- 对象、字段、类型和枚举匹配。
自动化从元数据生成初稿,手动调整处理语义。
引用管理:reference_objects 数据库
专用数据库按 UUID 跟踪已创建对象:
- 源引用(对象、字段)。
- 记录状态。
- 支持部分更新和重新导出。
这消除了错误混乱:引用状态一目了然。
导出到 HC
写入器读取处理后的数据库,按键查找对象、填充属性并更新 reference_objects。主要优势:数据已准备好,调试简单。
操作 Web 界面
Web 层启动管道、显示日志、数据库和选择性导出。无逻辑重复,便于团队访问。
自动化与调度
集成调度器:夜间运行、消息通知。从手动触发到全自动运营。
优于标准转换
此管道提供:
- 透明中间数据。
- 导出-分析-调整循环。
- 受控映射和引用。
- 精细监控。
- Web UI 和调度。
新实体快速上线,无需完整重建。
关键要点
- 三阶段 SQLite 管道大幅降低迁移风险。
- 自动 + 手动映射加速自定义配置。
- 专用引用跟踪防止数据丢失。
- Web UI 和调度实现流程运营化。
- 开源代码,便于复制。
— Editorial Team
暂无评论。