Имя: Пароль:
1C
 
Получить данные из XDTO
0 KrabCore
 
17.02.16
11:07
сильно не пинать, только учусь.

Есть ХДТО объект произвольного уровня вложенности. есть жесткий список свойств, в которых может быть произвольное число вложенных и не очень атрибутов. выглядит это примерно так:
https://gyazo.com/13621342df145bcf07d59a602a866e9e

мне необходимо, например, вытащить из "ГрузОт" все атрибуты: Город, Индекс, КодРегион, Улица, НаимОрг. сложность в том что я заранее не знаю какие там могут быть атрибуты, поэтому необходимо вытащить все. сложность еще в том что атрибут "НаимОрг" может быть как у "ГрузОт" так и у "ГрузПолуч. циклом объект не обходится, вытаскивать по имени свойства я не могу (не известен заранее перечень) - собственно вопрос к гуру:

как мне вытащить из объектаХДТО все его вложенные атрибуты?
1 Serginio1
 
17.02.16
11:13
У объекта XDTO есть свойства
Свойства()
2 Serginio1
 
17.02.16
11:13
У объекта XDTO есть метод
Свойства()
3 KrabCore
 
17.02.16
11:25
(2) видел, но у свойств нет доступа к значению атрибута, только имена
4 Serginio1
 
17.02.16
11:32
(3) Конечно нужно применить
ПолучитьXDTO(<Имя>) или
Получить(<Свойство>)
5 Serginio1
 
17.02.16
11:35
Или
Значение = ОбъектXDTO[ИмяСвойства];
6 KrabCore
 
17.02.16
11:43
(4) премного благодарен. оказалось правда что доступ ко вложенным  свойствам доступен через данные. пришлось делать через рекурсию

Процедура ПолучитьДанныеДокументаXDTO(Данные)

    Свойства = Данные.Свойства();
    Для каждого Свойство Из Свойства Цикл
        Если Свойство.Форма = ФормаXML.Атрибут Или Свойство.Форма = ФормаXML.Текст Тогда
            ЗаписатьДанныеXDTO(Свойство.Имя,Данные.Получить(Свойство.Имя));    
        ИначеЕсли Свойство.Форма = ФормаXML.Элемент Тогда
            ПолучитьДанныеДокументаXDTO(Данные.Получить(Свойство.Имя));
        КонецЕсли;
    КонецЦикла;

КонецПроцедуры