返回首页

1C:UPP 通过 Python SQLite 迁移到 UH

从 1C:UPP 到 1C:UH 的数据迁移案例,实现基于 Python、SQLite 和 COM 的三阶段管道。确保透明度、映射、引用控制和 Web 监控。适用于具有自定义的复杂项目。

Python + SQLite 上的 1C:UPP → UH 迁移管道
Advertisement 728x90

1C:ERP 到 1C:HC 数据迁移:Python + SQLite + COM 管道

1C 开发者在从 ERP 切换到 HC 时,常常被标准转换工具卡住。自定义源代码修改、数据结构不匹配以及反复运行等问题,需要一个中间层来解决。Python + SQLite + COM 管道 提供完全透明的操作:导入到原始数据库、基于映射的处理,以及导出到目标系统。开源代码已在 GitHub 上提供。

三阶段架构

管道分为独立阶段:

  • import:通过 COM 从 ERP 读取数据、标准化并保存到 SQLite。
  • process:使用字段、类型和引用映射,转换数据以适配 HC 模型。
  • export:在 HC 中定位/创建对象并通过 COM 写入。

中间 SQLite 数据库允许在每个步骤检查数据,并对比原始版与处理版。每种实体对应一个独立的数据库文件。

Google AdInline article slot

迁移管道需求

此方案解决工业迁移中的关键挑战:

  • 转移关联实体,同时尊重依赖关系。
  • 分离读取、处理和写入。
  • 存储中间数据以供分析。
  • 自动和手动字段/枚举映射。
  • 通过 UUID 专用引用跟踪。
  • 选择性重新导出记录。
  • Web 界面用于启动和监控。
  • 定时自动运行并通知。

为什么选择 SQLite 作为中间层

SQLite 以其实用性脱颖而出:

  • 本地访问,无需服务器。
  • 便于阶段间比较。
  • 支持反复运行无问题。
  • 每个实体和阶段一个数据库。

数据格式可预测:引用用 JSON 存储显示名称、UUID 和类型;枚举为 Enum.Name.Value

Google AdInline article slot
{
  "presentation": "Romashka 有限责任公司",
  "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "type": "Catalog.Counterparties"
}

从 ERP 导入:模块化结构

IN/ 目录下的模块通过 COM 连接 ERP,执行查询、标准化类型并保存到数据库。主要任务:

  • 提取引用的显示名称和 UUID。
  • 处理枚举。
  • 保留类型以便后续转换。

自动化 ERP 和 HC 元数据导出生成初始映射、比较属性并标记差异。

数据处理:处理器和映射

process 阶段是核心:字段重命名、类型转换、账户合并、引用准备。逻辑分为:

Google AdInline article slot
  • 核心处理器负责基础设施。
  • 自定义 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

Advertisement 728x90

继续阅读