Crmgo Blog

Xdto, eksport do innego dokumentu

Xdto, eksport do innego dokumentu

Spróbujmy teraz odpowiedzieć na praktyczne pytanie: jak za pomocą mechanizmu XDTO przenieść dane z jednej konfiguracji do innej, przy czym konfiguracje te są różne. Należy mieć na uwadze, że schemat "http://v8.1c.ru/8.1/data/enterprise/current-config" nadaje się do wymiany danych między identycznymi konfiguracjami i umożliwia konwersję między obiektami ObjectXDTO a obiektami 1C. Można…

Xdto, eksport do innego dokumentu

Następnie spróbujmy udzielić odpowiedzi na pytanie praktyczne: jak za pomocą mechanizmu XDTO przenieść dane z jednej konfiguracji do innej, przy czym konfiguracje te są różne.

Należy rozumieć, że schemat "http://v8.1c.ru/8.1/data/enterprise/current-config" nadaje się do wymiany danych między identycznymi konfiguracjami i pozwala na wykonywanie konwersji ObiektXDTO<->Obiekt1C. Można z tego skorzystać!

Dalej, mamy różne konfiguracje, więc podczas przenoszenia musimy na jakimś etapie (eksport/import) wykonać konwersję danych. Zazwyczaj odbywa się to na etapie eksportu – nie będziemy odchodzić od tradycji, ponadto zazwyczaj ma to szereg zalet.

1. Do sformowania danych eksportu potrzebujemy schematu konfiguracji odbiorczej. Wyeksportujmy go do pliku: w konfiguracji odbiorczej w drzewie konfiguracji prawym przyciskiem myszy na węźle "Pakiety XDTO"/Eksport XML schematu danych konfiguracji...

2. Przejdźmy do eksportu. Do sformowania danych eksportu tworzymy fabrykę na podstawie schematu, wskazując ścieżkę do pliku schematu konfiguracji odbiorczej:

Kod
ZapisXML = Nowy ZapisXML; ZapisXML.OtwórzPlik(NazwaPliku); Ścieżki = Nowy Tablica(); Ścieżki.Dodaj("C:\DestinatonConf.xsd"); Fabryka = StwórzFabrykęXDTO(Ścieżki);

3. Stwórzmy typ TypObiektuXDTO do umieszczenia w nim danych z konfiguracji źródłowej:

Kod
TypPrzychodnaNakładna = Fabryka.Typ("http://v8.1c.ru/8.1/data/enterprise/current-config", "DocumentObject.PrzychodnaNakładna");

Zwróć uwagę, ten obiekt TypObiektuXDTO odzwierciedla typ dokładnie konfiguracji odbiorczej, ponieważ wystąpienie obiektu fabryki działa według schematu załadowanego z pliku, a nie według danych bieżącej konfiguracji.

4. Stwórzmy ObiektXDTO według typu oraz obiekt 1C konfiguracji źródłowej:

Kod
ObiektPrzychodnaNakładna = Fabryka.Stwórz(TypPrzychodnaNakładna); DostawaTowaruObiekt = DostawaTowaru.PoluczObiekt();

5. Wypełnijmy ObiektXDTO wykonując niezbędne konwersje danych

Kod
ObiektPrzychodnaNakładna.Ref = DostawaTowaruObiekt.Ścieżka.UnikalnyIdentyfikator(); ObiektPrzychodnaNakładna.OznaczenieUsunięcia = DostawaTowaruObiekt.PomkaUsunięcia; ObiektPrzychodnaNakładna.Data = DostawaTowaruObiekt.Data; ObiektPrzychodnaNakładna.Numer = DostawaTowaruObiekt.Numer; ObiektPrzychodnaNakładna.Zaksięgowany = DostawaTowaruObiekt.Przewiedziony; ObiektPrzychodnaNakładna.Komentarz = DostawaTowaruObiekt.Komentarz; ObiektPrzychodnaNakładna.KrótkiSkładDokumentu = DostawaTowaruObiekt.KrótkiSkładDokumentu; ObiektPrzychodnaNakładna.Odpowiedzialny = DostawaTowaruObiekt.Odpowiedzialny.UnikalnyIdentyfikator(); ....

6. Wykonajmy zapis obiektu do pliku:

Kod
Fabryka.ZapiszXML(ZapisXML, ObiektPrzychodnaNakładna); ZapisXML.Zamknij();

Eksport zakończony.

W konfiguracji odbiorczej kod importu okazuje się dość prosty:

Kod
CzytanieXML = Nowe CzytanieXML; CzytanieXML.OTWÓRZPLIK(ImięPliku); ObiektFakturyPrzychodzącej = SeryalizatorXDTO.CzytajXML(CzytanieXML); ObiektFakturyPrzychodzącej.ZmianaDanych.Wczytywanie = Prawda; ObiektFakturyPrzychodzącej.Zapisz(trybZapisuDokumentu.Zapis); CzytanieXML.Zamknij();

Ponadto, jeśli obiekt 1С o takim identyfikatorze będzie istnieć w bazie danych w momencie odczytu go z pliku, zwrócony przez metodę CzytajXML obiekt nie będzie nowy (ToNowy()=Fałsz), ale będzie zawierał dane pobrane z pliku; jeśli obiekt o takim identyfikatorze nie istnieje, obiekt będzie nowy (ToNowy()=Prawda), będzie zawierał dane z pliku i zostanie mu przypisany odnośnik do nowego obiektu.

Uwaga: wpis mógł powstać z pomocą AI i redakcji. Odpowiedzialny: Dmytro Lomaka, Kaltenkirchen.

Kategorie: 1C