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:
3. Erstellen wir den Typ ТипОбъектаXDTO, um die Daten aus der Quelldatenbank darin abzulegen:
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:
5. Füllen wir das ObjektXDTO, indem wir die erforderlichen Datenkonvertierungen durchführen.
6. Schreiben wir das Objekt in die Datei:
Der Export ist abgeschlossen.
In der Zielkonfiguration ist der Code zum Laden der Daten sehr einfach:
Причем, если объект 1С с таким идентификатором будет существовать в базе к моменту прочтения его из файла, то возвращаемый методом ПрочитатьXML объект будет не новым (ЭтоНовый()=Ложь), но будет содержать данные полученные из файла; если объекта с таким идентификатором нет, то объект будет новым (ЭтоНовый()=Истина), он будет содержать данные из файла и ему будет уже назначена ссылка нового.
