Здравствуйте!
Прошу сильно не ругаться, так получилось, что получать данные из XML файлов не приходилось, но вот появилась возможность попробовать восполнить пробел и столкнулся с проблемой.
Есть файл XML с данными:

```1c
    <?xml version="1.0" encoding="windows-1251"?>
    <Файл xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ИдФайл="1115103_3128148454312801001_3128_2bf9ce5e-c69f-4c63-bfc5-cd1e5ebbf3b8_20230731_2735c8b5-3642-4842-9401-fb42057c0ad7" ВерсФорм="5.06" ВерсПрог="1С:БУХГАЛТЕРИЯ 3.0.135.22" ИдФайлИсх="1115103_3128148454312801001_3128_2bf9ce5e-c69f-4c63-bfc5-cd1e5ebbf3b8_20230731_2735c8b5-3642-4842-9401-fb42057c0ad7" ИдФайлПерв="1115103_3128148454312801001_3128_2bf9ce5e-c69f-4c63-bfc5-cd1e5ebbf3b8_20230731_2735c8b5-3642-4842-9401-fb42057c0ad7" КолФайл="1" НомФайл="1">
    <Документ КНД="1115103">
    <СвПродав>
    <СведЮЛ НаимОрг="Общество с ограниченной ответственностью "Организация" ИННЮЛ="1111111111" КПП="000000000"/>
    </СвПродав>
    <СвКнПрод Период="22" ОтчетГод="2023">
    <Всего СтТовРубКоп20="833.33" СумНДСРубКоп20="166.67"/>
    </СвКнПрод>
    <СвПродаж НомПП="1" НомерСчФ="1" ДатаСчФ="30.06.2023" НаимПок="ООО "Контаргент" ИННЮЛ="2222222222" КПП="000000000" КодОКВ="643" СтТовУчНалРубКоп="1000.00" СтТовРубКоп20="833.33" СумНДСРубКоп20="166.67">
    <КодВидОпер>01</КодВидОпер>
    </СвПродаж>
    <Подписант ПрПодп="1">
    <ФИО Фамилия="Фамилия" Имя="Имя" Отчество="Отчетсво"/>
    </Подписант>
    </Документ>
    </Файл>
```

а также есть внешняя обработка с ТЧ частью и реквизитами, аналогичными атрибутам "СвПродаж" (НомерСФ, ДатаСФ, Контрагент и т.д.)

Пытаюсь получить данные из файла, а именно атрибуты <СвПродаж>, но пока что выходить только информация из <Файл .....

Подскажите, пожалуйста.
Вот код

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

    ИмяУзла = ЧтениеXML.Имя;
    Если ИмяУзла = "СвПродаж" Тогда
    ИД = 1;
    КонецЕсли;

    Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
    НоваяСтрока = Объект.Список.Добавить();
    НоваяСтрока.НомерСФ = ЧтениеXML.Значение;
    НоваяСтрока.ИНН = ЧтениеXML.Значение;
    КонецЦикла;
```
---
```1c
    ХМЛ = Новый ЧтениеХМЛ;
    ХМЛ.Открыть(ИмяФайла);
    Данные = ФабрикаХДТО.ПрочитатьХМЛ(ХМЛ);
    НаимОрг = Данные.Документ.СвПродав.НаимОрг;
    //...
```
Ошибки сам исправь...
---
цикл
```1c
    Для Каждого ОбъектХ ИЗ Данные.Документ.СвПродаж Цикл
    НомПП = ОбъектХ.НомПП;
    КонецЦикла;
```

А условие, что в поле больше одного значения - это условие проверки типов. Если тип поля - это СписокХДТО - значит это список, если объект - значит не список. Гоу в отладчик - там все нарисовано.
---
```1c
    ХМЛ = Новый ЧтениеХМЛ;
    ХМЛ.Открыть(ИмяФайла);
    Данные = ФабрикаХДТО.ПрочитатьХМЛ(ХМЛ);
    НаимОрг = Данные.Документ.СвПродав.НаимОрг;
    //...
```
Ошибки сам исправь...
---
Подскажите условие цикла, если таких записей несколько, например:

```1c
    <СвПродаж НомПП="1" НомерСчФ="1" ДатаСчФ="30.06.2023" НаимПок="ООО "Контаргент" ИННЮЛ="2222222222" КПП="000000000" КодОКВ="643" СтТовУчНалРубКоп="1000.00" СтТовРубКоп20="833.33" СумНДСРубКоп20="166.67">
    <КодВидОпер>01</КодВидОпер>
    </СвПродаж>
    <СвПродаж НомПП="1" НомерСчФ="2" ДатаСчФ="30.06.2023" НаимПок="ООО "Контаргент" ИННЮЛ="3333333333" КПП="000000000" КодОКВ="643" СтТовУчНалРубКоп="1000.00" СтТовРубКоп20="833.33" СумНДСРубКоп20="166.67">
    <КодВидОпер>01</КодВидОпер>
    </СвПродаж>
    <СвПродаж НомПП="1" НомерСчФ="2" ДатаСчФ="30.06.2023" НаимПок="ООО "Контаргент" ИННЮЛ="4444444444" КПП="000000000" КодОКВ="643" СтТовУчНалРубКоп="1000.00" СтТовРубКоп20="833.33" СумНДСРубКоп20="166.67">
    <КодВидОпер>01</КодВидОпер>
    </СвПродаж>
```
---
цикл
```1c
    Для Каждого ОбъектХ ИЗ Данные.Документ.СвПродаж Цикл
    НомПП = ОбъектХ.НомПП;
    КонецЦикла;
```

А условие, что в поле больше одного значения - это условие проверки типов. Если тип поля - это СписокХДТО - значит это список, если объект - значит не список. Гоу в отладчик - там все нарисовано.
---
Спасибо, вы мне очень помогли!
---
Обращайтесь;)))
---
В файле есть бывают в перемешку ИННФЛ и ИННЮЛ

При использовании такого варианта, выскакивает ошибка, если у контрагента ИННФЛ

```1c
    Для Каждого ОбъектХМЛ ИЗ Данные.Документ.СвПродаж Цикл
    НоваяСтрока = Объект.Список.Добавить();
    НоваяСтрока.НомерСФ = ОбъектХМЛ.НомерСчФ;

    СтрокаДата=Строка(ОбъектХМЛ.ДатаСчФ);
    Дата1С = Дата(Прав(СтрокаДата, 4), Сред(СтрокаДата, 4, 2), Лев(СтрокаДата, 2));

    НоваяСтрока.ДатаСФ = Дата1С;
    НоваяСтрока.Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ОбъектХМЛ.ИННЮЛ);
    НоваяСтрока.ИНН = ОбъектХМЛ.ИННЮЛ;
    НоваяСтрока.Сумма = ОбъектХМЛ.СтТовУчНалРубКоп;
    НоваяСтрока.СуммаНДС = ОбъектХМЛ.СумНДСРубКоп20;
    КонецЦикла;
```

Понимаю, что нужно сделать условие на проверку наличия ИННФЛ или ИННЮЛ, но не пойму как.
Подскажите, пожалуйста.
---
Пробую так, но не работает

```1c
    Если ОбъектХМЛ.ИННЮЛ = Неопределено Тогда
    НоваяСтрока.Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ОбъектХМЛ.ИННФЛ);
    Иначе
    НоваяСтрока.Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ОбъектХМЛ.ИННЮЛ);
    КонецЕсли;
```
---
Вот так сработало

```1c
    Если ОбъектХМЛ.Свойства().Получить("ИННЮЛ") = Неопределено Тогда
    НоваяСтрока.Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ОбъектХМЛ.ИННФЛ);
    НоваяСтрока.ИНН = ОбъектХМЛ.ИННФЛ;
    Иначе
    НоваяСтрока.Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ОбъектХМЛ.ИННЮЛ);
    НоваяСтрока.ИНН = ОбъектХМЛ.ИННЮЛ;
    КонецЕсли;
```