Crmgo Blog

Xdto, izvoz u drugi dokument

Xdto, izvoz u drugi dokument

Sad pokušajmo da damo odgovor na praktično pitanje: kako pomoću mehanizma XDTO preneti podatke iz jedne konfiguracije u drugu, pri čemu su konfiguracije različite. Treba imati na umu da šema "http://v8.1c.ru/8.1/data/enterprise/current-config" odgovara za razmenu podataka između identičnih konfiguracija i omogućava izvršavanje konverzije ObjektXDTO<->Objekat1С. Može se...

Xdto, izvoz u drugi dokument

Sada ćemo pokušati da damo odgovor na praktično pitanje: kako pomoću mehanizma XDTO preneti podatke iz jedne konfiguracije u drugu, pri čemu su konfiguracije različite.

Mora se razumeti da šema "http://v8.1c.ru/8.1/data/enterprise/current-config" odgovara za razmenu podataka između identičnih konfiguracija i omogućava izvršavanje konverzije ObjektXDTO<->Objekat1C. Možete to iskoristiti!

U daljem tekstu, pošto imamo različite konfiguracije, prilikom prenosa moramo na nekom koraku (izvoz/uvoz) izvršiti konverziju podataka. Obično se to radi na koraku izvoza - nećemo odstupiti od tradicije, a osim toga, to obično ima niz prednosti.

1. Za formiranje podataka za izvoz potrebna nam je šema konfiguracije primaoca. Izvezimo je u fajl: u konfiguraciji primaoca, desnim klikom na čvor "Paketi XDTO"/Izvoz XML šeme podataka konfiguracije...

2. Pređimo na izvoz. Za formiranje podataka za izvoz kreiramo fabriku na osnovu šeme, navodeći putanju do fajla šeme konfiguracije primaoca:

Kod
ZapisXML = Novi ZapisXML; ZapisXML.OtvojiFajl(ImeFajla); Putanje = Novi Niz(); Putanje.Dodaj("C:\DestinatonConf.xsd"); Fabrika = KreirajFabrikuXDTO(Putanje);

3. Kreirajmo tip TipObjektaXDTO za smeštanje podataka iz konfiguracije izvora:

Kod
TipPrilaznaNaloga = Fabrika.Tip("http://v8.1c.ru/8.1/data/enterprise/current-config", "DocumentObject.PrilaznaNaloga");

Imajte na umu da ovaj objekat TipObjektaXDTO mapira tip tačno konfiguracije primaoca, jer instanca objekta fabrike radi po šemi učitanoj iz fajla, a ne po podacima trenutne konfiguracije.

4. Kreirajmo ObjektXDTO po tipu, i objekat 1C konfiguracije izvora:

Kod
ObjekatPrilaznaNaloga = Fabrika.Kreiraj(TipPrilaznaNaloga); DolazakRobeObjekat = DolazakRobe.DobijObjekat();

5. Popunimo ObjektXDTO izvršavajući potrebne konverzije podataka

Kod
ObjekatPrilaznaNaloga.Ref = DolazakRobeObjekat.Veza.UnikalniIdentifikator(); ObjekatPrilaznaNaloga.OznakaBrisanja = DolazakRobeObjekat.OznakaBrisanja; ObjekatPrilaznaNaloga.Datum = DolazakRobeObjekat.Datum; ObjekatPrilaznaNaloga.Broj = DolazakRobeObjekat.Broj; ObjekatPrilaznaNaloga.Proveden = DolazakRobeObjekat.Proveden; ObjekatPrilaznaNaloga.Komentar = DolazakRobeObjekat.Komentar; ObjekatPrilaznaNaloga.KratakSastavDokumenta = DolazakRobeObjekat.KratakSastavDokumenta; ObjekatPrilaznaNaloga.Odgovorni = DolazakRobeObjekat.Odgovorni.UnikalniIdentifikator(); ....

6. Izvršimo zapisivanje objekta u fajl:

Kod
Fabrika.ZapišiXML(ZapisXML, ObjekatPrilaznaNaloga); ZapisXML.Zatvori();

Izvoz je završen.

U konfiguraciji primaocu kod uvoza postaje veoma jednostavan:

Код
ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ИмяФайла); ПриходнаяНакладнаяОбъект = СериализаторXDTO.ПрочитатьXML(ЧтениеXML); ПриходнаяНакладнаяОбъект.ОбменДанными.Загрузка = Истина; ПриходнаяНакладнаяОбъект.Записать(РежимЗаписиДокумента.Запись); ЧтениеXML.Закрыть();

При этом, если объект 1С с таким идентификатором уже существует в базе данных на момент его чтения из файла, то объект, возвращаемый методом ПрочитатьXML, не будет новым (ЭтоНовый()=Ложь), но будет содержать данные, полученные из файла; если объекта с таким идентификатором нет, то объект будет новым (ЭтоНовый()=Истина), он будет содержать данные из файла и ему уже будет назначена ссылка на новый объект.

Napomena: tekst može biti uz pomoć AI uz ljudsku proveru. Odgovoran: Dmytro Lomaka, Kaltenkirchen.

Kategorije: 1C