Crmgo Blog

Xdto, Export in ein anderes Dokument

Xdto, Export in ein anderes Dokument

Nun versuchen wir, eine praktische Frage zu beantworten: Wie kann man mit Hilfe des XDTO-Mechanismus Daten von einer Konfiguration in eine andere übertragen, wobei es sich um unterschiedliche Konfigurationen handelt. Es ist wichtig zu verstehen, dass das Schema „http://v8.1c.ru/8.1/data/enterprise/current-config“ für den Datenaustausch zwischen identischen Konfigurationen geeignet ist und die Umwandlung zwischen ObjektXDTO und Objekt1C ermöglicht. Man kann…

Xdto, Export in ein anderes Dokument

Nun versuchen wir, eine praktische Frage zu beantworten: Wie können wir mit dem XDTO-Mechanismus Daten von einer Konfiguration in eine andere, unterschiedliche Konfiguration übertragen?

Es ist wichtig zu verstehen, dass das Schema „http://v8.1c.ru/8.1/data/enterprise/current-config“ für den Datenaustausch zwischen identischen Konfigurationen geeignet ist und die Konvertierung zwischen ObjektXDTO und 1C-Objekt ermöglicht. Dies können wir nutzen!

Da wir es hier mit unterschiedlichen Konfigurationen zu tun haben, müssen wir bei der Übertragung an irgendeinem Punkt (Export/Import) eine Datenkonvertierung durchführen. Üblicherweise erfolgt dies beim Export – wir halten uns also an die Tradition, was zudem in der Regel eine Reihe von Vorteilen bietet.

1. Für die Erstellung der Exportdaten benötigen wir das Schema der Zielkonfiguration. Exportieren wir dieses in eine Datei: Klicken Sie im Konfigurationsbaum der Zielkonfiguration mit der rechten Maustaste auf den Knoten „XDTO-Pakete“ / „XML-Datenschema der Konfiguration exportieren...“.

2. Beginnen wir mit dem Export. Um die Exportdaten zu erstellen, erzeugen wir eine Fabrik basierend auf dem Schema und geben dabei den Pfad zur Datei des Schemas der Zielkonfiguration an:

Code
ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл(ИмяФайла); Пути = Новый Массив(); Пути.Добавить("C:\DestinatonConf.xsd"); Фабрика = СоздатьФабрикуXDTO(Пути);

3. Erstellen wir den Typ ТипОбъектаXDTO, um die Daten aus der Quelldatenbank darin abzulegen:

Code
ТипПриходнаяНакладная = Фабрика.Тип("http://v8.1c.ru/8.1/data/enterprise/current-config", "DocumentObject.ПриходнаяНакладная");

Beachten Sie, dass dieses Objekt ТипОбъектаXDTO den Typ genau der Zielkonfiguration abbildet, da die Instanz der Fabrik nach dem aus der Datei geladenen Schema und nicht nach den Daten der aktuellen Konfiguration arbeitet.

4. Erstellen wir ein ObjektXDTO basierend auf dem Typ sowie ein 1C-Objekt der Quelldatenbank:

Code
ОбъектПриходнаяНакладная = Фабрика.Создать(ТипПриходнаяНакладная); ПосуплениеТовараОбъект = ПосуплениеТовара.ПолучитьОбъект();

5. Füllen wir das ObjektXDTO, indem wir die erforderlichen Datenkonvertierungen durchführen.

Code
ОбъектПриходнаяНакладная.Ref = ПосуплениеТовараОбъект.Ссылка.УникальныйИдентификатор(); ОбъектПриходнаяНакладная.DeletionMark = ПосуплениеТовараОбъект.ПометкаУдаления; ОбъектПриходнаяНакладная.Date = ПосуплениеТовараОбъект.Дата; ОбъектПриходнаяНакладная.Number = ПосуплениеТовараОбъект.Номер; ОбъектПриходнаяНакладная.Posted = ПосуплениеТовараОбъект.Проведен; ОбъектПриходнаяНакладная.Комментарий = ПосуплениеТовараОбъект.Комментарий; ОбъектПриходнаяНакладная.КраткийСоставДокумента = ПосуплениеТовараОбъект.КраткийСоставДокумента; ОбъектПриходнаяНакладная.Ответственный = ПосуплениеТовараОбъект.Ответственный.УникальныйИдентификатор(); ....

6. Schreiben wir das Objekt in die Datei:

Code
Фабрика.ЗаписатьXML(ЗаписьXML, ОбъектПриходнаяНакладная); ЗаписьXML.Закрыть();

Der Export ist abgeschlossen.

In der Zielkonfiguration ist der Code zum Laden der Daten sehr einfach:

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

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

Hinweis: Dieser Beitrag kann KI-unterstützt erstellt und anschließend redaktionell geprüft worden sein. Verantwortlich: Dmytro Lomaka, Kaltenkirchen.

Kategorien: 1C