При обмене допускается использовать только простые типы данных - текст, число, дата, булево. Никаких ссылок!
Суть метода при обмене 1С - 1С:
Выгрузка: данные предварительно нужно собрать в таблицу значений, например, с помощью запроса "Выбрать...". Затем таблицу значений записать в формате XML.
Загрузка: данные загружаются в таблицу значений, после этого можно работать уже с таблицей значений, а не с XML-файлом. Это проще и код будет более читабелен.
Суть метода при обмене Delphi - 1С:
Если вы занимаетесь задачей переписывания базы в 1С из другой учетной системы, может возникнуть необходимость переноса данных - при этом придется потратить время на разработку обработки обмена, отладку, возможно даже придется использовать сторонние разработки бррр... Или вызывать к 1С из внешней программы - но и тут в работе будет немало тонких моментов. Как вариант для разовой выгрузки-загрузки вполне сгодится XML. Но не спешите ваять "выгружалку" - возможно, Вам подойдет существующее решение.
Выгрузка: используем библиотеку компонентов Jedi - компонент JvgExportXML. Я выгружал данные из Firebird-базы и Access.
Загрузка: данные также загружаются в таблицу значений (той же функцией, что и при обмене 1С-1С). Формат обмена совместим с форматом экспорта от Jedi. После загрузки можно работать дальше уже с таблицей значений.
В прилагаемой обработке в основной форме есть процедура "ЗаписатьТаблицуXML(ИмяФайла, ТЗ, ИндикаторПроцесса=Неопределено)", которая соответственно названию, выгружает таблицу ТЗ в файл. Процедуру скопируйте в свою обработку и вызывайте при выгрузке данных. Функция "ПрочитатьТаблицуXML(ИмяФайла)" загружает таблицу и в случае успеха возвращает ее в качестве результата.
Сама обработка тоже пригодится - можно будет просмотреть содержимое выгруженных ранее таблиц.