Crmgo Blog

Xdto, export do jiného dokumentu

Xdto, export do jiného dokumentu

Nyní se pokusíme odpovědět na praktickou otázku: jak pomocí mechanismu XDTO přenést data z jedné konfigurace do jiné, přičemž konfigurace jsou různé. Je třeba si uvědomit, že schéma „http://v8.1c.ru/8.1/data/enterprise/current-config“ je vhodné pro výměnu dat mezi identickými konfiguracemi a umožňuje provádět převod ObjektXDTO<->Objekt1C. Lze…

Xdto, export do jiného dokumentu

Nyní se pokusíme odpovědět na praktickou otázku: jak pomocí mechanismu XDTO přenést data z jedné konfigurace do jiné, přičemž konfigurace jsou různé.

Je třeba chápat, že schéma „http://v8.1c.ru/8.1/data/enterprise/current-config“ je vhodné pro výměnu dat mezi identickými konfiguracemi a umožňuje provádět převod ObjektXDTO<->Objekt1C. Tímto můžeme využít!

Dále máme různé konfigurace, takže při přenosu musíme v určitém okamžiku (export/import) provést převod dat. Obvykle se to dělá v fázi exportu – nebudeme se odchýlovat od tradic, navíc to obvykle přináší řadu výhod.

1. Pro vytvoření dat exportu potřebujeme schéma cílové konfigurace. Exportujeme ji do souboru: v cílové konfiguraci klikneme pravým tlačítkem myši na uzel „Balíčky XDTO“/Exportovat XML schéma dat konfigurace...

2. Přistupujeme k exportu. Pro vytvoření exportních dat vytvoříme továrnu na základě schématu s uvedením cesty k souboru schématu cílové konfigurace:

Kód
ZápisXML = Nový ZápisXML; ZápisXML.OtevřítSoubor(NázevSouboru); Cesty = Nový Pole(); Cesty.Přidat("C:\DestinatonConf.xsd"); Továrna = VytvořitTovárnuXDTO(Cesty);

3. Vytvoříme typ TypObjektuXDTO pro uložení dat ze zdrojové konfigurace:

Kód
TypPříjmováFaktura = Továrna.Typ("http://v8.1c.ru/8.1/data/enterprise/current-config", "ObjektDokumentu.PříjmováFaktura");

Všimněte si, že tento objekt TypObjektuXDTO mapuje typ právě cílové konfigurace, protože instance objektu továrny pracuje podle schématu načteného ze souboru, nikoliv podle dat aktuální konfigurace.

4. Vytvoříme ObjektXDTO podle typu a objekt 1C zdrojové konfigurace:

Kód
ObjektPříjmováFaktura = Továrna.Vytvořit(TypPříjmováFaktura); ObjektPříjemZboží = PříjemZboží.ZískatObjekt();

5. Vyplníme ObjektXDTO provedením potřebných převodů dat

Kód
ObjektPříjmováFaktura.Ref = PříjemZbožíObjekt.Odkaz.UnikátníIdentifikátor(); ObjektPříjmováFaktura.ZnačkaSmazání = PříjemZbožíObjekt.PoznačeníSmazání; ObjektPříjmováFaktura.Datum = PříjemZbožíObjekt.Datum; ObjektPříjmováFaktura.Číslo = PříjemZbožíObjekt.Číslo; ObjektPříjmováFaktura.Proveden = PříjemZbožíObjekt.Proveden; ObjektPříjmováFaktura.Komentář = PříjemZbožíObjekt.Komentář; ObjektPříjmováFaktura.KrátkýSloženíDokumentu = PříjemZbožíObjekt.KrátkýSloženíDokumentu; ObjektPříjmováFaktura.Odpovědný = PříjemZbožíObjekt.Odpovědný.UnikátníIdentifikátor(); ....

6. Proveďte zápis objektu do souboru:

Kód
Továrna.ZapsatXML(ZápisXML, ObjektPříjmováFaktura); ZápisXML.Zavřít();

Export je dokončen.

V cílové konfiguraci je kód pro import velmi jednoduchý:

Kód
ČteníXML = Nové ČteníXML; ČteníXML.otevřítSoubor(NázevSouboru); ObjektPříjemníhoDokladu = SériovýXDTO.přečístXML(ČteníXML); ObjektPříjemníhoDokladu.VýměnaDat.Nahrávání = Pravda; ObjektPříjemníhoDokladu.zapsat(RežimZápisuDokladu.Zápis); ČteníXML.zavřít();

Přitom, pokud objekt 1S s takovým identifikátorem bude existovat v databázi v okamžiku jeho čtení ze souboru, pak objekt vrácený metodou PřečístXML nebude nový (TotoNový()=Nepravda), ale bude obsahovat data získaná ze souboru; pokud objekt s takovým identifikátorem neexistuje, bude objekt nový (TotoNový()=Pravda), bude obsahovat data ze souboru a bude mu již přiřazena reference nového.

Poznámka: příspěvek mohl vzniknout s pomocí AI a lidskou redakcí. Odpovědný: Dmytro Lomaka, Kaltenkirchen.

Rubriky: 1C