Возникала необходимость чтения обработки XML файлов неизвестной структуры, вот написал процедуры, которые преобразуют XML файл любой в дерево значений, а также считывают и преобразуют данные в переменную типа структура причем типы переменных преобразуются в соответствии с требованиями, Дата, Булево, Число, Строка
Процедура ПрочитатьУзелВСтруктуру(Об, СтруктураДерево)
Если ТипЗнч(Об) = Тип("СписокXDTO") Тогда
Для Каждого Ст ИЗ Об Цикл
Если ТипЗнч(Ст) = Тип("СписокXDTO") ИЛИ ТипЗнч(Ст) = Тип("ОбъектXDTO") Тогда
Если НЕ СтруктураДерево.Свойство(Об.ВладеющееСвойство.Имя) ТОгда
СтруктураДерево.Вставить(Об.ВладеющееСвойство.Имя,Новый Массив);
КонецЕсли;
_РезультатВетки = Новый Структура;
ПрочитатьУзелВСтруктуру(Ст, _РезультатВетки);
СтруктураДерево[Об.ВладеющееСвойство.Имя].Добавить(_РезультатВетки);
Иначе
СтруктураДерево.Вставить(Об.ВладеющееСвойство.Имя,Неопределено);
СтруктураДерево[Об.ВладеющееСвойство.Имя] = _ПолучитьВТипеДанногоЭлемента(Ст);
КонецЕсли;
КонецЦикла;
Иначе
Для Каждого Ст ИЗ Об.Свойства() Цикл
Если ТипЗнч(Об[Ст.Имя]) = Тип("СписокXDTO") Тогда
Если НЕ СтруктураДерево.Свойство(ст.Имя) ТОгда
СтруктураДерево.Вставить(Ст.Имя,Новый Массив);
КонецЕсли;
_РезультатВетки = Новый Структура;
ПрочитатьУзелВСтруктуру(Об[Ст.Имя], _РезультатВетки);
СтруктураДерево[Ст.Имя].Добавить(_РезультатВетки);
ИначеЕсли ТипЗнч(Об[Ст.Имя]) = Тип("ОбъектXDTO") Тогда
Если НЕ СтруктураДерево.Свойство(ст.Имя) ТОгда
СтруктураДерево.Вставить(Ст.Имя,Новый Структура);
КонецЕсли;
ПрочитатьУзелВСтруктуру(Об[Ст.Имя], СтруктураДерево[Ст.Имя]);
Иначе
СтруктураДерево.Вставить(Ст.Имя,Неопределено);
СтруктураДерево[Ст.Имя] = _ПолучитьВТипеДанногоЭлемента(Об[Ст.Имя]);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Возможно, что кому нибудь эти данные будут интересны
Тестировалась на платформе 1С:Предприятие 8.3 (8.3.15).
Конфигурация 1С не имеет значения.