Powrót do strony głównej

Migracja 1C:UPP do UH za pomocą Python SQLite

Przypadek migracji danych z 1C:UPP do 1C:UH realizuje trójetapowy konwejer na Python, SQLite i COM. Zapewnia przejrzystość, mapowania, kontrolę odwołań i monitorowanie webowe. Nadaje się do złożonych projektów z modyfikacjami.

Konwejer migracji 1C:UPP → UH na Python + SQLite
Advertisement 728x90

Migracja danych z 1C:UPP do 1C:UH: potok oparty na Pythonie, SQLite i COM

Deweloperzy 1C często napotykają ograniczenia standardowej konwersji przy przejściu z UPP na UH. Modyfikacje w źródle, rozbieżności w strukturach obiektów i potrzeba powtarzalnych przebiegów wymagają warstwy pośredniej. Potok oparty na Pythonie, SQLite i COM zapewnia przejrzystość: import do surowych baz danych, przetwarzanie zgodnie z mapowaniami i eksport do odbiorcy. Kod źródłowy jest dostępny na GitHubie.

Trzyetapowa architektura

Potok podzielony jest na niezależne etapy:

  • import: odczyt z UPP przez COM, normalizacja, zapis w SQLite.
  • process: przekształcanie zgodnie z modelem UH z mapowaniami pól, typów i referencji.
  • export: wyszukiwanie/tworzenie obiektów w UH, zapis przez COM.

Pośrednie bazy SQLite umożliwiają inspekcję danych na każdym kroku, porównanie wersji surowych i przetworzonych. Każda encja to osobny plik bazy danych.

Google AdInline article slot

Wymagania dla konturu migracji

Realizacja zamyka kluczowe zadania przemysłowego przenoszenia:

  • Przenoszenie powiązanych encji z uwzględnieniem zależności.
  • Rozdzielenie odczytu, przetwarzania i zapisu.
  • Przechowywanie danych pośrednich do analizy.
  • Automatyczne i ręczne mapowania pól, enumeracji.
  • Osobna kontrola referencji przez UUID.
  • Punktowy ponowny eksport rekordów.
  • Interfejs webowy do uruchamiania i monitorowania.
  • Autostart według harmonogramu z powiadomieniami.

Zalety SQLite jako warstwy pośredniej

SQLite wybrano ze względu na praktyczność:

  • Lokalny dostęp bez serwera.
  • Porównywanie etapów przetwarzania.
  • Odporność na powtarzalne przebiegi.
  • Osobna baza na katalog i etap.

Format danych jest przewidywalny: referencje w JSON z presentation, UUID i type; enumeracje jako Enumeracja.Nazwa.Wartość.

Google AdInline article slot
{
  "presentation": "Sp. z o.o. Stokrotka",
  "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "type": "Katalog.Kontrahenci"
}

Import z UPP: modułowa struktura

Moduły w IN/ łączą się z UPP przez COM, wykonują zapytania, normalizują typy i zapisują w bazie danych. Kluczowe zadania:

  • Wyodrębnianie reprezentacji i UUID referencji.
  • Przetwarzanie enumeracji.
  • Zapis typów do późniejszej transformacji.

Wydobycie metadanych UPP i UH automatyzuje wstępne mapowania, porównanie atrybutów i diagnostykę rozbieżności.

Przetwarzanie danych: procesor i mapowania

Etap process — rdzeń: zmiana nazw pól, przekształcanie typów, składanie kont, przygotowanie referencji. Logika podzielona:

Google AdInline article slot
  • Ogólny procesor dla infrastruktury.
  • Specyficzne PROCESS/<katalog>_processor.py dla logiki biznesowej.

Mapowania w osobnych plikach:

  • catalog_mapping.json — trasy loader/processor/writer.
  • chart_of_accounts_mapping.json — plan kont.
  • Odpowiedniki obiektów, pól, typów, enumeracji.

Automatyka generuje szkic według metadanych, ręczne mapowanie koryguje semantykę.

Kontur referencji: baza reference_objects

Osobna baza danych rejestruje utworzone obiekty przez UUID:

  • Źródło referencji (obiekt, pole).
  • Status rekordu.
  • Wsparcie dla dopełnienia i ponownego eksportu.

To eliminuje chaos przy błędach: status referencji jest obserwowalny.

Eksport do UH

Writer odczytuje przetworzoną bazę, wyszukuje obiekty po kluczu, wypełnia atrybuty, aktualizuje reference_objects. Zaletą: dane są już gotowe, debugowanie uproszczone.

Operacyjny interfejs webowy

Warstwa webowa uruchamia potok, pokazuje logi, bazy danych, punktowy eksport. Nie powiela logiki, dostępna dla zespołu.

Automatyzacja i harmonogram

Integracja z planistą: nocne przebiegi, powiadomienia w komunikatorze. Przejście od ręcznych uruchomień do procesu.

Zalety nad standardową konwersją

Kontur zapewnia:

  • Przejrzystość danych pośrednich.
  • Cykl wydobycie-analiza-modyfikacja.
  • Zarządzane mapowania i referencje.
  • Punktową kontrolę.
  • Interfejs webowy i harmonogram.

Szybsza adaptacja nowych encji bez przebudowy całości.

Co jest ważne

  • Trzyetapowy potok z SQLite minimalizuje ryzyka migracji.
  • Mapowania automatyczne i ręczne przyspieszają konfigurację pod modyfikacje.
  • Osobny kontur referencji zapobiega stratom.
  • Interfejs webowy i harmonogram czynią proces operacyjnym.
  • Otwarty kod do odtworzenia.

— Editorial Team

Advertisement 728x90

Czytaj dalej