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