Теперь попробуем дать ответ на практический вопрос: как с помощью механизма XDTO перенести данные из одной конфигурации в другую, причем конфигурации разные.
Надо понимать, что схема "http://v8.1c.ru/8.1/data/enterprise/current-config" годится для обмена данными между идентичными конфигурациями, и позволяет выполнять преобразование ОбъектXDTO<->Объект1С. Можно этим воспользоваться!
Далее, мы имеем разные конфигурации, поэтому при переносе нам нужно на каком-то этапе (выгрузка/загрузка) выполнять преобразование данных. Обычно это делается на этапе выгрузки - не будем отходить от традиций, кроме того, обычно это имеет ряд преимуществ.
1. Для формирования данных выгрузки нам необходима схема конфигурации-приемника. Выгрузим ее в файл: в конфигурации-примнике в дереве конфигурации правой кнопочкой по узлу "Пакеты XDTO"/Экспорт XML-схемы данных конфигурации...
2. Приступим к выгрузке. Для формирования данных выгрузки создаем фабрику на основе схемы, указав путь к файлу схемы конфигурации-приемника:
3. Создадим тип ТипОбъектаXDTO для помещения в него данных из конфигурации-источника:
Обратите внимание, этот объект ТипОбъектаXDTO отображает тип именно конфигурации приемника, т.к. экзкмпляр объекта фабрики у нас работает по схеме загруженной из файла, а не по данным текущей конфигурации.
4. Создадим ОбъектXDTO по типу, и объект 1С конфигурации-источника:
5. Заполним ОбъектXDTO выполнив необходимые преобразования данных
6. Выполним запись объекта в файл:
Выгрузка закончена.
В конфигурации-приемнике код загрузки получается весьма простым:
Причем, если объект 1С с таким идентификатором будет существовать в базе к моменту прочтения его из файла, то возвращаемый методом ПрочитатьXML объект будет не новым (ЭтоНовый()=Ложь), но будет содержать данные полученные из файла; если объекта с таким идентификатором нет, то объект будет новым (ЭтоНовый()=Истина), он будет содержать данные из файла и ему будет уже назначена ссылка нового.
