Часто приходится писать какие-то обмены данными между разными либо одинаковыми системами. Кто-то использует для этого конфигурацию Конвертация данных. Сам лично не имею большого опыта работы с ней, поэтому не могу судить про её функциональность и удобство работы. Но во многих случаях, если надо сделать какой-то не сложный обмен, например, обменяться номенклатурой или контрагентами, гораздо проще сделать выгрузку в какой-то файл в своем формате с последующей загрузкой оттуда. Отчасти это проще потому, что не надо разбираться с Конвертацией
. Короче. Статья не про Конвертацию, поэтому кому не интересно - можно закрывать.
Перейду к сути. Средства платформы позволяют без напряга сериализовать в XML и десериализовать оттуда же практически любой объект, который доступен внутри программы: экземпляры объектов ссылочных типов, наборы записей, структуры, массивы и т.п. Для того, чтобы сериализовать что-то в XML, достаточно воспользоваться этой функцией:
Функция ДанныеВСтроку(Данные)
Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO);
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.УстановитьСтроку();
Сериализатор.ЗаписатьXML(ЗаписьXML, Данные, НазначениеТипаXML.Явное);
Возврат ЗаписьXML.Закрыть();
КонецФункции
На выходе получаем строку, которую можно записать в файл, передать в web/http сервис или по OLE. В принимающей системе, чтобы получить из строки объект, достаточно вызвать эту функцию:
Функция ДанныеИзСтроки(Строка)
Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO);
ЧтениеXML = Новый ЧтениеXML();
ЧтениеXML.УстановитьСтроку(Строка);
Возврат Сериализатор.ПрочитатьXML(ЧтениеXML);
КонецФункции
Нужно помнить о том, что если конфигурации не идентичны и вы будете таким образом передавать какой-то ссылочный объект или набор записей, то на стороне базы приемника чуда не произойдет и если структура объекта конфигурации отличается хоть как-то, то вы получите ошибку преобразования, потому что сериализатор XDTO не сможет распознать переданный ему XML.