Datenmigration von 1C:ERP zu 1C:HC: Python, SQLite und COM-Pipeline
1C-Entwickler stoßen bei der Umstellung von ERP auf HC oft an Grenzen der Standardkonvertierungstools. Benutzerdefinierte Quelländerungen, Abweichungen in den Datenstrukturen und wiederholte Durchläufe erfordern eine Zwischenschicht. Eine Python- + SQLite- + COM-Pipeline sorgt für volle Transparenz: Import in Rohdatenbanken, verarbeitungsbasiert auf Mapping und Export ins Zielsystem. Der Open-Source-Code ist auf GitHub verfügbar.
Drei-Phasen-Architektur
Die Pipeline gliedert sich in unabhängige Phasen:
- import: Auslesen aus ERP via COM, Normalisierung und Speichern in SQLite.
- process: Umwandlung passend zum HC-Modell mittels Feld-, Typ- und Referenz-Mappings.
- export: Suchen/Erstellen von Objekten in HC und Schreiben via COM.
Zwischenspeicher in SQLite-Datenbanken ermöglichen die Inspektion der Daten an jedem Schritt und den Vergleich von Roh- und Verarbeiteten Versionen. Jede Entität erhält eine eigene Datenbankdatei.
Anforderungen an die Migrationspipeline
Diese Lösung meistert zentrale Herausforderungen industrieller Migrationen:
- Übertragung bezogener Entitäten unter Beachtung von Abhängigkeiten.
- Trennung von Lesen, Verarbeiten und Schreiben.
- Zwischenspeicherung für Analysen.
- Automatische und manuelle Feld-/Enum-Mappings.
- UUID-basierte Referenzverfolgung.
- Selektiver Neu-Export von Datensätzen.
- Weboberfläche zum Starten und Überwachen.
- Geplante Automatisierungen mit Benachrichtigungen.
Warum SQLite als Zwischenschicht?
SQLite überzeugt durch Praktikabilität:
- Lokaler Zugriff, kein Server nötig.
- Einfache Vergleiche zwischen Phasen.
- Problemlose Wiederholungen.
- Eine DB pro Entität und Phase.
Das Datenformat ist vorhersehbar: Referenzen als JSON mit Anzeigename, UUID und Typ; Enums als Enum.Name.Value.
{
"presentation": "Romashka GmbH",
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "Catalog.Counterparties"
}
Import aus ERP: Modulare Struktur
Module in IN/ verbinden sich via COM mit ERP, führen Abfragen aus, normalisieren Typen und speichern in die DB. Kernaufgaben:
- Extrahieren von Anzeigenamen und UUIDs für Referenzen.
- Behandlung von Enums.
- Erhaltung von Typen für spätere Transformationen.
Automatisierter Metadatenexport aus ERP und HC erzeugt erste Mappings, vergleicht Attribute und markiert Abweichungen.
Datenverarbeitung: Prozessor und Mappings
Die process-Phase ist das Herzstück: Umbenennung von Feldern, Typkonvertierung, Kontenkonsolidierung, Referenzvorbereitung. Die Logik teilt sich in:
- Kernprozessor für Infrastruktur.
- Benutzerdefinierte
PROCESS/<catalog>_processor.pyfür Geschäftsregeln.
Mappings in dedizierten Dateien:
catalog_mapping.json— Routen für Loader/Prozessor/Writer.chart_of_accounts_mapping.json— Kontenrahmen.- Übereinstimmungen für Objekte, Felder, Typen und Enums.
Automatisierung erstellt Entwürfe aus Metadaten; manuelle Anpassungen regeln Semantiken.
Referenzverwaltung: reference_objects-Datenbank
Eine dedizierte DB protokolliert erstellte Objekte per UUID:
- Quellreferenz (Objekt, Feld).
- Datensatzstatus.
- Unterstützung für Teilanpassungen und Neu-Exports.
Das beseitigt Fehlerchaos: Referenzstatus ist immer einsehbar.
Export nach HC
Der Writer liest die verarbeitete DB, findet Objekte per Schlüssel, befüllt Attribute und aktualisiert reference_objects. Großer Vorteil: Daten sind vorbereitet, Debugging einfach.
Operative Weboberfläche
Die Web-Schicht startet die Pipeline, zeigt Logs, DBs und selektive Exports. Keine Logikduplikate, teamfreundlicher Zugriff.
Automatisierung und Planung
Integration eines Schedulers: Nachtläufe, Messenger-Alarme. Vom manuellen Start zur vollautomatischen Abläufe.
Vorteile gegenüber Standardkonvertierung
Diese Pipeline bietet:
- Transparente Zwischendaten.
- Export-Analyse-Anpassungs-Zyklen.
- Kontrollierte Mappings und Referenzen.
- Granulare Überwachung.
- Web-UI und Scheduling.
Schnellere Einarbeitung neuer Entitäten, keine Vollneubauten.
Wichtige Erkenntnisse
- Drei-Phasen-SQLite-Pipeline minimiert Migrationsrisiken.
- Auto- + manuelle Mappings beschleunigen kundenspezifische Setups.
- Dedizierte Referenzverfolgung verhindert Datenverlust.
- Web-UI und Scheduling machen den Prozess betriebsfähig.
- Open-Source-Code für einfache Nachstellung.
— Editorial Team
Noch keine Kommentare.