Добрый всем день! Помогите разобраться, я уже замучался.. Имеем вот такой XML:

```1c
    <?xml version="1.0" encoding="UTF-8"?>
    <ФайлОбмена ВерсияФормата="2.0" ДатаВыгрузки="2019-07-24T09:23:44" НачалоПериодаВыгрузки="0001-01-01T00:00:00" ОкончаниеПериодаВыгрузки="0001-01-01T00:00:00" ИмяКонфигурацииИсточника="ЗарплатаИУправлениеПерсоналомДляУк­раины" ИмяКонфигурацииПриемника="ЗарплатаИУправлениеПерсоналомДляУк­раины" ИдПравилКонвертации="714b94d7-0f73-47aa-84a7-554e17ff0f41" Комментарий=">
    <ПравилаОбмена>
    <ВерсияФормата>2.01</ВерсияФормата>
    <Ид>714b94d7-0f73-47aa-84a7-554e17ff0f41</Ид>
    <Наименование>ЗУП --> ЗУП</Наименование>
    <ДатаВремяСоздания>2019-07-24T09:23:10</ДатаВремяСоздания>
    <Источник>ЗарплатаИУправлениеПерсоналомДляУкраины</Источник>­
    <Приемник>ЗарплатаИУправлениеПерсоналомДляУкраины</Приемник>­
    <Параметры/>
    <Обработки/>
    <ПравилаКонвертацииОбъектов>
    <Правило>
    <Код>ЯзыкиНародовМира</Код>
    <СинхронизироватьПоИдентификатору>true</СинхронизироватьПоИд­ентификатору>
    <Источник>СправочникСсылка.ЯзыкиНародовМира</Источник>
    <Приемник>СправочникСсылка.ЯзыкиНародовМира</Приемник>
    </Правило>
    </ПравилаКонвертацииОбъектов>
    <ПравилаОчисткиДанных/>
    <Алгоритмы/>
    <Запросы/>
    </ПравилаОбмена>
    <Объект Нпп="1" Тип="СправочникСсылка.ЯзыкиНародовМира" ИмяПравила="ЯзыкиНародовМира"><Ссылка Нпп="1">
    <Свойство Имя="{УникальныйИдентификатор}" Тип="Строка">
    <Значение>31b9efb0-e910-11dc-b11e-0019d1e0b62b</Значение>
    </Свойство>
    <Свойство Имя="Код" Тип="Строка">
    <Значение>000000001</Значение>
    </Свойство>
    </Ссылка>
    <Свойство Имя="Наименование" Тип="Строка">
    <Значение>Украинский</Значение>
    </Свойство>
    <Свойство Имя="ПометкаУдаления" Тип="Булево">
    <Значение>false</Значение>
    </Свойство>
    </Объект>
    <Объект Нпп="2" Тип="СправочникСсылка.ЯзыкиНародовМира" ИмяПравила="ЯзыкиНародовМира"><Ссылка Нпп="2">
    <Свойство Имя="{УникальныйИдентификатор}" Тип="Строка">
    <Значение>31b9efb1-e910-11dc-b11e-0019d1e0b62b</Значение>
    </Свойство>
    <Свойство Имя="Код" Тип="Строка">
    <Значение>000000002</Значение>
    </Свойство>
    </Ссылка>
    <Свойство Имя="Наименование" Тип="Строка">
    <Значение>Английский</Значение>
    </Свойство>
    <Свойство Имя="ПометкаУдаления" Тип="Булево">
    <Значение>false</Значение>
    </Свойство>
    </Объект>
```

Пытаюсь обойти с помощью XDTO:

```1c
    Чтение = Новый ЧтениеXML;
    Чтение.ОткрытьФайл(ФайлXML);
    ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(Чтение);

    Для Каждого Объект из ОбъектXDTO.Объект Цикл
    Для Каждого Свойство из Объект.Свойство Цикл

    КонецЦикла;

    КонецЦикла;
```

В отладчике вижу что ходит по двум свойствам, а где УИД и Код ?

Я уже разными способами пробовал, кучу форумов облазил, я ворубушек... подталкните

В идеале я хочу эти объекты запихнуть в табличную часть формы... Может есть еще способы ? Хочу доставать объекты как-то так:

УИД = "31b9efb0-e910-11dc-b11e-0019d1e0b62b"
Код = "0000001"
Наименование = "Украинский"
ПометкаУдаления = "false"
---
Вообще рабочий вариант )

```1c
    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.УстановитьСтроку(Текст);
    ПостроительDOM = Новый ПостроительDOM;
    ДанныеDOM = ПостроительDOM.Прочитать(ЧтениеXML);
    ЧтениеXML.Закрыть();

    УзелКонтекста = ДанныеDOM.ПервыйДочерний;
    Разыменователь = Новый РазыменовательПространствИменDOM(УзелКонтекста);

    РезультатXPath = ДанныеDOM.ВычислитьВыражениеXPath("Объект[@Тип="СправочникСсылка.ЯзыкиНародовМира"]", УзелКонтекста, Разыменователь);
    Объект = РезультатXPath.ПолучитьСледующий();
    Пока НЕ Объект = Неопределено Цикл
    ГУИД = ДанныеDOM.ВычислитьВыражениеXPath("Ссылка/Свойство[@Имя = "{УникальныйИдентификатор}"]/Значение", Объект, Разыменователь).ПолучитьСледующий().ТекстовоеСодержимое;
    Код = ДанныеDOM.ВычислитьВыражениеXPath("Ссылка/Свойство[@Имя = "Код"]/Значение", Объект, Разыменователь).ПолучитьСледующий().ТекстовоеСодержимое;
    Наименование = ДанныеDOM.ВычислитьВыражениеXPath("Свойство[@Имя = "Наименование"]/Значение", Объект, Разыменователь).ПолучитьСледующий().ТекстовоеСодержимое;
    ПометкаУдаления = ДанныеDOM.ВычислитьВыражениеXPath("Свойство[@Имя = "ПометкаУдаления"]/Значение", Объект, Разыменователь).ПолучитьСледующий().ТекстовоеСодержимое;
    Сообщить(СтрШаблон("%1-%2-%3-%4", ГУИД, Код, Наименование, ПометкаУдаления));
    Объект = РезультатXPath.ПолучитьСледующий();
    КонецЦикла
```
---
Чтение = Новый ЧтениеXML;
    Чтение.ОткрытьФайл(ФайлXML);
    ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(Чтение);

    Для Каждого Объект из ОбъектXDTO.Объект Цикл
        Для Каждого Свойство из Объект.Свойство Цикл

        КонецЦикла;

    КонецЦикла;
(1) Чтение = Новый ЧтениеXML;
    Чтение.ОткрытьФайл(ФайлXML);
    ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(Чтение);

    Для Каждого Объект из ОбъектXDTO.Объект Цикл
        Для Каждого Свойство из Объект.Свойство Цикл

        КонецЦикла;

    КонецЦикла;

Я бы написал вот так лучше.
ОбъектXML = ОбъектXDTO.Объект;

Для каждого Свойства из ОбъектXML Цикл

 НовСтр = ВашаТаб.Добавить;
 Если Свойство.Имя = "{УникальныйИдентификатор}" Тогда
   НовСтр.УИД = Свойство.Значение;
 КонецЕСли;

КонецЦикла;

По вашей структуре вроде все именно так должно быть.
---
Вот так...

Вроде задача элементарная...
---
Если сбросишь свой xml могу посмотреть и написать прям рабочий вариант
---
Если можно, хочется посмотреть более простой вариант...
---
Ну как то так, проще у тебя не получится, у тебя потому что все пишется под одним атрубитом, ну можешь пробовать.
---
Я так делал, у меня вопрос почему он читает Наименование и Пометку, а Код и УИД не читает.... ???
---
Я бы наверно как то так сделал

```1c
    Чтение = Новый ЧтениеXML;
    Чтение.УстановитьСтроку(ПолеВвода1);
    ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(Чтение);

    Для Каждого Объект из ОбъектXDTO.Объект Цикл

    Код = ";
    УИД = ";
    Наименование = ";

    Для Каждого СвойствоСсылки из Объект.Ссылка.Свойство Цикл
    Если СвойствоСсылки.Имя = "{УникальныйИдентификатор}" Тогда
    УИД = СвойствоСсылки.Значение;
    КонецЕсли;
    Если СвойствоСсылки.Имя = "Код" Тогда
    Код = СвойствоСсылки.Значение;
    КонецЕсли;
    КонецЦикла;

    Для Каждого СвойствоОбъекта из Объект.Свойство Цикл
    Если СвойствоОбъекта.Имя = "Наименование" Тогда
    Наименование = СвойствоОбъекта.Значение;
    КонецЕсли;
    Если СвойствоОбъекта.Имя = "ПометкаУдаления" Тогда
    ПометкаУдаления = XMLЗначение(Тип("Булево"), СвойствоОбъекта.Значение);
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
```
---
Спасибо! Этот вариант тоже рабочий! Был близок к такому решению, но видать мой скудный ум не додумался до такого... Спасибо за ответ
---
"Текст" замени на свой XML. Жесткий вариант конечно.

```1c
    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.УстановитьСтроку(Текст);
    ПостроительDOM = Новый ПостроительDOM;
    ДанныеDOM = ПостроительDOM.Прочитать(ЧтениеXML);
    ЧтениеXML.Закрыть();

    УзелКонтекста = ДанныеDOM.ПервыйДочерний;
    Разыменователь = Новый РазыменовательПространствИменDOM(УзелКонтекста);

    РезультатXPath = ДанныеDOM.ВычислитьВыражениеXPath("Объект", УзелКонтекста, Разыменователь);

    Объект = РезультатXPath.ПолучитьСледующий();
    Пока НЕ Объект = Неопределено Цикл
    Для Каждого ДочернийУзел Из Объект.ДочерниеУзлы Цикл
    Сообщить(СтрШаблон("%1-%2", ДочернийУзел.Атрибуты[0].ТекстовоеСодержимое, ДочернийУзел.ТекстовоеСодержимое));
    КонецЦикла;
    Объект = РезультатXPath.ПолучитьСледующий();
    КонецЦикла
```
---
Пытаюсь запустить ваш вариант.. Сыпется на
---
в переменной текст должен быть текст твоего XML.
я подставлял

```1c
    <?xml version="1.0" encoding="UTF-8"?>
    <ФайлОбмена ВерсияФормата="2.0" ДатаВыгрузки="2019-07-24T09:23:44" НачалоПериодаВыгрузки="0001-01-01T00:00:00" ОкончаниеПериодаВыгрузки="0001-01-01T00:00:00" ИмяКонфигурацииИсточника="ЗарплатаИУправлениеПерсоналомДляУк­раины" ИмяКонфигурацииПриемника="ЗарплатаИУправлениеПерсоналомДляУк­раины" ИдПравилКонвертации="714b94d7-0f73-47aa-84a7-554e17ff0f41" Комментарий=">
    <ПравилаОбмена>
    <ВерсияФормата>2.01</ВерсияФормата>
    <Ид>714b94d7-0f73-47aa-84a7-554e17ff0f41</Ид>
    <Наименование>ЗУП --> ЗУП</Наименование>
    <ДатаВремяСоздания>2019-07-24T09:23:10</ДатаВремяСоздания>
    <Источник>ЗарплатаИУправлениеПерсоналомДляУкраины</Источник>­
    <Приемник>ЗарплатаИУправлениеПерсоналомДляУкраины</Приемник>­
    <Параметры/>
    <Обработки/>
    <ПравилаКонвертацииОбъектов>
    <Правило>
    <Код>ЯзыкиНародовМира</Код>
    <СинхронизироватьПоИдентификатору>true</СинхронизироватьПоИд­ентификатору>
    <Источник>СправочникСсылка.ЯзыкиНародовМира</Источник>
    <Приемник>СправочникСсылка.ЯзыкиНародовМира</Приемник>
    </Правило>
    </ПравилаКонвертацииОбъектов>
    <ПравилаОчисткиДанных/>
    <Алгоритмы/>
    <Запросы/>
    </ПравилаОбмена>
    <Объект Нпп="1" Тип="СправочникСсылка.ЯзыкиНародовМира" ИмяПравила="ЯзыкиНародовМира"><Ссылка Нпп="1">
    <Свойство Имя="{УникальныйИдентификатор}" Тип="Строка">
    <Значение>31b9efb0-e910-11dc-b11e-0019d1e0b62b</Значение>
    </Свойство>
    <Свойство Имя="Код" Тип="Строка">
    <Значение>000000001</Значение>
    </Свойство>
    </Ссылка>
    <Свойство Имя="Наименование" Тип="Строка">
    <Значение>Украинский</Значение>
    </Свойство>
    <Свойство Имя="ПометкаУдаления" Тип="Булево">
    <Значение>false</Значение>
    </Свойство>
    </Объект>
    <Объект Нпп="2" Тип="СправочникСсылка.ЯзыкиНародовМира" ИмяПравила="ЯзыкиНародовМира"><Ссылка Нпп="2">
    <Свойство Имя="{УникальныйИдентификатор}" Тип="Строка">
    <Значение>31b9efb1-e910-11dc-b11e-0019d1e0b62b</Значение>
    </Свойство>
    <Свойство Имя="Код" Тип="Строка">
    <Значение>000000002</Значение>
    </Свойство>
    </Ссылка>
    <Свойство Имя="Наименование" Тип="Строка">
    <Значение>Английский</Значение>
    </Свойство>
    <Свойство Имя="ПометкаУдаления" Тип="Булево">
    <Значение>false</Значение>
    </Свойство>
    </Объект>
    </ФайлОбмена>
```
---
Извините разобрался, забыл открыть файл... Пытаюсь разобраться, но уже вижу что работает почти как нужно. Но что-то внутри мне подсказывает, что есть более простой вариант решения такой задачи.... :) Большое спасибо за ответ
---
а так xPath очень интересная штука.
---
Интересная, но что-то я делаю не так, В примере как делал я, и выше посоветовал человек, Читает только Нименование и Пометку. В вашем примере получается читает УИД,Наименование,Пометка. А где "Код"?))) Я вот пытаюсь читать про Xpath, интересно, но сложно... За наводку спасибо!
---
Извиняюсь, ошибка в алгоритме.
 ГУИД слился с кодом 31b9efb1-e910-11dc-b11e-0019d1e0b62b000000002
т.к. код вложен в ссылку.
Нужно еще в ссылку залезать чтобы его вытащить.
---
Вообще рабочий вариант )

```1c
    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.УстановитьСтроку(Текст);
    ПостроительDOM = Новый ПостроительDOM;
    ДанныеDOM = ПостроительDOM.Прочитать(ЧтениеXML);
    ЧтениеXML.Закрыть();

    УзелКонтекста = ДанныеDOM.ПервыйДочерний;
    Разыменователь = Новый РазыменовательПространствИменDOM(УзелКонтекста);

    РезультатXPath = ДанныеDOM.ВычислитьВыражениеXPath("Объект[@Тип="СправочникСсылка.ЯзыкиНародовМира"]", УзелКонтекста, Разыменователь);
    Объект = РезультатXPath.ПолучитьСледующий();
    Пока НЕ Объект = Неопределено Цикл
    ГУИД = ДанныеDOM.ВычислитьВыражениеXPath("Ссылка/Свойство[@Имя = "{УникальныйИдентификатор}"]/Значение", Объект, Разыменователь).ПолучитьСледующий().ТекстовоеСодержимое;
    Код = ДанныеDOM.ВычислитьВыражениеXPath("Ссылка/Свойство[@Имя = "Код"]/Значение", Объект, Разыменователь).ПолучитьСледующий().ТекстовоеСодержимое;
    Наименование = ДанныеDOM.ВычислитьВыражениеXPath("Свойство[@Имя = "Наименование"]/Значение", Объект, Разыменователь).ПолучитьСледующий().ТекстовоеСодержимое;
    ПометкаУдаления = ДанныеDOM.ВычислитьВыражениеXPath("Свойство[@Имя = "ПометкаУдаления"]/Значение", Объект, Разыменователь).ПолучитьСледующий().ТекстовоеСодержимое;
    Сообщить(СтрШаблон("%1-%2-%3-%4", ГУИД, Код, Наименование, ПометкаУдаления));
    Объект = РезультатXPath.ПолучитьСледующий();
    КонецЦикла
```
---
ВЫ ГЕНИЙ!:) Большое спасибо! Буду изучать XPath! Это же я таким способом смогу разобрать XML любой сложности! Еще раз большое человеческое спасибо!