Привет всем!
Наткнулся на подводный риф(( Есть борт 1С 8.2.19.102 и есть шлюпка XML-файл без xsd-схемы, без Атрибутов примерно вот такого вида:
.......................................................................................
<Тег_НомерМоейДевушки> Её номер 8 8000020203 </Тег_НомерМоейДевушки>
<Тег_НомерБывшей> Её номер 8 8007770202 </Тег_НомерБывшей>
.......................................................................................
Нужно её поднять на борт - прочесть!
Такой код не проходит:(

```1c
    XML= Новый ЧтениеXML;
    XML.ОткрытьФайл(*.xml);
    Пока XML.Прочитать() Цикл
    //Как видим атрибутов "0"
    //Здесь нужно поймать значение у тэга Тег_НомерМоейДевушки
    //Но если читать его типа Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента тогда
    //Если XML.Имя = "Тег_НомерМоейДевушки" тогда
    // Такой - же переменной Тег_НомерМоейДевушки = XML.значение; КонецЕсли; КонецЕсли;
    //То значение будет пустым!
    //А если сделать по типу узла ТЕКСТ

    Если XML.ТипУзла = ТипУзлаXML.Текст Тогда
    // Здесь XML.Имя = "#text" и XML.Значение = " Её номер 8 80000202032 "
    // но если много строк файла - то к какому тегу тогда относить данный текст???

    КонецЕсли;

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

Теперь вопрос, как же всё-таки прочесть и получить нужную инфу если таких строк будет много?
---
мДОМ=новый ПостроительDOM;

 чтение=Новый ЧтениеXML;
 чтение.ОткрытьФайл(ИмяФайла);
 Попытка
 мДокументДОМ=мДОМ.Прочитать(чтение);
 чтение.Закрыть();
 мРазыменовательПИ=мДокументДОМ.СоздатьРазыменовательПИ(мДокументДОМ);

 мЗапрос="/КоммерческаяИнформация/Документ";
 мХПуть=мДокументДОМ.СоздатьВыражениеXPath(мЗапрос,мРазыменовательПИ);
 мРезультат=мХПуть.Вычислить(мДокументДОМ);
 мРодитель=мРезультат.ПолучитьСледующий();
 пока мРодитель<>неопределено цикл

  //ОбработкаПрерыванияПользователя();
  мЗапрос1="./*";
  мХПуть1=мДокументДОМ.СоздатьВыражениеXPath(мЗапрос1,мРазыменовательПИ);
  мРезультатЗапроса=мХПуть1.Вычислить(мРодитель);
  мОбход=мРезультатЗапроса.ПолучитьСледующий();
  пока мОбход <>неопределено цикл
   Если мОбход.ИмяЭлемента = "Ид" Тогда
    ИдЗак = мОбход.ТекстовоеСодержимое;
   ИначеЕсли мОбход.ИмяЭлемента = "Дата" Тогда
    ДатаВр = мОбход.ТекстовоеСодержимое;мОбход2=мРезультатЗапроса2.ПолучитьСледующий();

   конеццикла;
   мОбход=мРезультатЗапроса.ПолучитьСледующий();

  конеццикла;
---
Пожалуй подниму))
---
Кусочек работающего
 //Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл
 Пока ЧтениеXML.Прочитать() Цикл
  ИмяТега=ЧтениеXML.Имя;
  Если ЧтениеXML.ТипУзла =ТипУзлаXML.НачалоЭлемента Тогда
   Если ЧтениеXML.ЛокальноеИмя = "Документ" Тогда
    Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
     ИмяАтрибута=ЧтениеXML.Имя;

     Если ИмяАтрибута = "НомерДок" Тогда
      НомерДок0 = ЧтениеXML.Значение;
     ИначеЕсли ИмяАтрибута = "ДатаДок" Тогда
      ДатаДок = SWAP(ЧтениеXML.Значение);
---
Bell, Здесь КоличествоАтрибутов() = 0, о каких атрибутах ты пишешь?
---
мДОМ=новый ПостроительDOM;

 чтение=Новый ЧтениеXML;
 чтение.ОткрытьФайл(ИмяФайла);
 Попытка
 мДокументДОМ=мДОМ.Прочитать(чтение);
 чтение.Закрыть();
 мРазыменовательПИ=мДокументДОМ.СоздатьРазыменовательПИ(мДокументДОМ);

 мЗапрос="/КоммерческаяИнформация/Документ";
 мХПуть=мДокументДОМ.СоздатьВыражениеXPath(мЗапрос,мРазыменовательПИ);
 мРезультат=мХПуть.Вычислить(мДокументДОМ);
 мРодитель=мРезультат.ПолучитьСледующий();
 пока мРодитель<>неопределено цикл

  //ОбработкаПрерыванияПользователя();
  мЗапрос1="./*";
  мХПуть1=мДокументДОМ.СоздатьВыражениеXPath(мЗапрос1,мРазыменовательПИ);
  мРезультатЗапроса=мХПуть1.Вычислить(мРодитель);
  мОбход=мРезультатЗапроса.ПолучитьСледующий();
  пока мОбход <>неопределено цикл
   Если мОбход.ИмяЭлемента = "Ид" Тогда
    ИдЗак = мОбход.ТекстовоеСодержимое;
   ИначеЕсли мОбход.ИмяЭлемента = "Дата" Тогда
    ДатаВр = мОбход.ТекстовоеСодержимое;мОбход2=мРезультатЗапроса2.ПолучитьСледующий();

   конеццикла;
   мОбход=мРезультатЗапроса.ПолучитьСледующий();

  конеццикла;
---
CrazyCD, Ну ты и "шайтан-шаман", пока выровнял всё - фух....

```1c
    мДОМ = Неопределено;
    xml.ОткрытьФайл("C:\1.xml");
    Попытка
    мДОМ = новый ПостроительDOM;
    мДокументДОМ = мДОМ.Прочитать(xml);
    xml.Закрыть();
    мРазыменовательПИ = мДокументДОМ.СоздатьРазыменовательПИ(мДокументДОМ);
    Исключение
    Сообщить("Печалька не работает!!!",СтатусСообщения.ОченьВажное);
    Возврат;
    КонецПопытки;

    мЗапрос = "/ArrayOfCallBean/CallBean";
    мХПуть = мДокументДОМ.СоздатьВыражениеXPath(мЗапрос,мРазыменовательПИ);
    мРезультат = мХПуть.Вычислить(мДокументДОМ);
    мРодитель = мРезультат.ПолучитьСледующий();
    пока мРодитель <> неопределено цикл

    мЗапрос1 = "./*";
    мХПуть1 = мДокументДОМ.СоздатьВыражениеXPath(мЗапрос1,мРазыменовательПИ);
    мРезультатЗапроса = мХПуть1.Вычислить(мРодитель);
    мОбход = мРезультатЗапроса.ПолучитьСледующий();
    пока мОбход <> неопределено цикл

    Если мОбход.ИмяЭлемента = "IdAgent" Тогда
    IdAgent = мОбход.ТекстовоеСодержимое;
    ИначеЕсли мОбход.ИмяЭлемента = "CallDateTime" Тогда
    CallDateTime = мОбход.ТекстовоеСодержимое;
    ИначеЕсли мОбход.ИмяЭлемента = "CdrId" Тогда
    CdrId = мОбход.ТекстовоеСодержимое;
    ИначеЕсли мОбход.ИмяЭлемента = "DurationCallTimeSec" Тогда
    DurationCallTimeSec = мОбход.ТекстовоеСодержимое;
    ИначеЕсли мОбход.ИмяЭлемента = "SourcePhone" Тогда
    SourcePhone = мОбход.ТекстовоеСодержимое;
    КонецЕсли;

    мОбход = мРезультатЗапроса.ПолучитьСледующий();
    конеццикла;
    // Здесь пишем полученные данные куда угодно, я про100 вывожу
    Сообщить("ИД агента = "+IdAgent + Символы.ПС+
    " Дата звонка = "+CallDateTime + Символы.ПС+
    " Длительность = "+DurationCallTimeSec+Символы.ПС+
    " Номер телефона "+SourcePhone,СтатусСообщения.Важное);
    IdAgent = ";CallDateTime= "; DurationCallTimeSec= "; SourcePhone= ";
    мРодитель = мРезультат.ПолучитьСледующий();
    конеццикла;
```

 Отдаю честно заработанные деньги!!!