Migrace dat z 1C:UPP do 1C:UH: kanál na Python, SQLite a COM
Vývojáři 1C se často setkávají s omezeními standardní konverze při přechodu z UPP na UH. Úpravy ve zdroji, rozdíly ve strukturách objektů a potřeba opakovaných běhů vyžadují mezivrstvu. Kanál na Python + SQLite + COM zajišťuje transparentnost: import do surových databází, zpracování podle mapování a export do příjemce. Otevřený kód je dostupný na GitHubu.
Třífázová architektura
Kanál je rozdělen na nezávislé fáze:
- import: čtení z UPP přes COM, normalizace, uložení do SQLite.
- process: transformace podle modelu UH s mapováním polí, typů a odkazů.
- export: vyhledání/vytvoření objektů v UH, zápis přes COM.
Mezilehlé SQLite databáze umožňují kontrolovat data v každém kroku, porovnávat surové a zpracované verze. Každá entita má samostatný soubor databáze.
Požadavky na migrační proces
Implementace řeší klíčové úkoly průmyslového přenosu:
- Přenos propojených entit s ohledem na závislosti.
- Oddělení čtení, zpracování a zápisu.
- Ukládání mezilehlých dat pro analýzu.
- Automatické a manuální mapování polí a výčtů.
- Samostatná kontrola odkazů podle UUID.
- Bodový přeexport záznamů.
- Webové rozhraní pro spuštění a monitoring.
- Automatické spouštění podle plánu s notifikacemi.
Výhody SQLite jako mezivrstvy
SQLite je zvoleno pro praktičnost:
- Lokální přístup bez serveru.
- Porovnání fází zpracování.
- Odolnost vůči opakovaným běhům.
- Samostatná databáze pro každý katalog a fázi.
Formát dat je předvídatelný: odkazy v JSON s presentation, UUID a type; výčty jako Výčet.Název.Hodnota.
{
"presentation": "Společnost Sedmikráska",
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "Seznam.Kontrahenti"
}
Import z UPP: modulární struktura
Moduly v IN/ se připojují k UPP přes COM, provádějí dotazy, normalizují typy a ukládají do databáze. Klíčové úkoly:
- Extrakce reprezentací a UUID odkazů.
- Zpracování výčtů.
- Ukládání typů pro následnou transformaci.
Export metadat UPP a UH automatizuje hrubá mapování, porovnání atributů a diagnostiku rozdílů.
Zpracování dat: procesor a mapování
Fáze process je jádrem: přejmenování polí, převod typů, konsolidace účtů, příprava odkazů. Logika je rozdělena:
- Obecný procesor pro infrastrukturu.
- Specifické
PROCESS/<katalog>_processor.pypro obchodní logiku.
Mapování v samostatných souborech:
catalog_mapping.json– trasy loader/processor/writer.chart_of_accounts_mapping.json– účetní osnova.- Odpovídající objekty, pole, typy, výčty.
Automatizace generuje návrh podle metadat, manuální mapování koriguje sémantiku.
Okruh odkazů: databáze reference_objects
Samostatná databáze zaznamenává vytvořené objekty podle UUID:
- Zdroj odkazu (objekt, pole).
- Stav záznamu.
- Podpora doplnění a opětovného exportu.
To eliminuje chaos při chybách: stav odkazů je sledovatelný.
Export do UH
Writer čte zpracovanou databázi, hledá objekty podle klíče, vyplňuje atributy, aktualizuje reference_objects. Výhoda: data jsou již připravena, ladění je zjednodušeno.
Operativní webové rozhraní
Webová vrstva spouští pipeline, zobrazuje logy, databáze, bodový export. Neduplikuje logiku, je dostupná týmu.
Automatizace a plánování
Integrace s plánovačem: noční běhy, notifikace do messengeru. Přechod od ručních spuštění k procesu.
Výhody oproti standardní konverzi
Okruh zajišťuje:
- Transparentnost mezilehlých dat.
- Cyklus export-analýza-úprava.
- Řízená mapování a odkazy.
- Bodová kontrola.
- Web a plánování.
Rychlejší adaptace nových entit bez přestavby celého systému.
Co je důležité
- Třífázový kanál s SQLite minimalizuje rizika migrace.
- Mapování automatická a manuální urychlují nastavení podle úprav.
- Samostatný okruh odkazů předchází ztrátám.
- Webové rozhraní a plánování činí proces operativním.
- Otevřený kód pro reprodukci.
— Editorial Team
Zatím žádné komentáře.