Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Прочитать xml нужна помощь          
alexkhua Подменю пользователя
сообщение 02.12.12, 0:54
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 181
Спасибо сказали: 2 раз
Рейтинг: 0

Есть некий xml файл
 <?xml version="1.0" encoding="UTF-8" ?> 
- <Корневой Докумен="НарядЗаказ">
- <ЭлементДокументаНарядЗаказ>
  <НомерЗаказа>125/5</НомерЗаказа>
  <Дата>22.11.2012 23:08:44</Дата>
  <ТипИзделия>ПШ встроенный две двери горизонтальные</ТипИзделия>
  </ЭлементДокументаНарядЗаказ>
- <ЭлементДокументаНарядЗаказ>
  <НомерЗаказа>125/6</НомерЗаказа>
  <Дата>30.11.2012 11:35:25</Дата>
  <ТипИзделия>ПШ встроенный две двери горизонтальные</ТипИзделия>
  </ЭлементДокументаНарядЗаказ>
- <ЭлементДокументаНарядЗаказ>
  <НомерЗаказа>125/7</НомерЗаказа>
  <Дата>01.12.2012 12:00:00</Дата>
  <ТипИзделия>ПШ встроенный две двери горизонтальные</ТипИзделия>
  </ЭлементДокументаНарядЗаказ>
  </Корневой>


Нужно присвоить значения списку. Что я не так делаю?
 Процедура ПрочитатьXMLфайл(файлик)
//       
     ПутьКфайлу=файлик[0];
     Чтение = Новый ЧтениеXML;
     Чтение.ОткрытьФайл(ПутьКФайлу);
    
     СЗ= Новый СписокЗначений;

Пока Чтение.Прочитать() Цикл
       Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
        
        
        Чтение.ПрочитатьАтрибут()

        ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда
        
        Если Чтение.Имя ="НомерЗаказа" Тогда
            СЗ.Добавить(Чтение.Значение);
        КонецЕсли;    
            
       // Сообщить("Текст:" + СЗ.Добавить(Чтение.Значение));
            
        Если Чтение.Имя ="Дата"    Тогда
            СЗ.Добавить(Чтение.Значение);
            
        //Сообщить("Текст:" + СЗ.Добавить(Чтение.Значение));
        КонецЕсли;
        Если Чтение.Имя ="ТипИзделия"    Тогда
            СЗ.Добавить(Чтение.Значение);
            
        //Сообщить("Текст:" + СЗ.Добавить(Чтение.Значение));
        КонецЕсли;
            
            

            

    ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда

      // Сообщить("--Конец:" + Чтение.Имя);  

    КонецЕсли;

КонецЦикла;
   ВывестиЗначения(СЗ);

alexkhua Подменю пользователя
сообщение 02.12.12, 17:08
Сообщение #2

Завсегдатай
****
Группа: Пользователи
Сообщений: 181
Спасибо сказали: 2 раз
Рейтинг: 0

Мне нужно , чтоб для конкретного элемента присваивалось конкретное значение. А у меня присваевается отдному элемену списка значения все значения XML-файла. Т.е. Даже если я делаю вот так:
 Пока Чтение.Прочитать() Цикл 
       Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
        
        
        //Атрибут=Чтение.ПрочитатьАтрибут()

        ИначеЕсли Чтение.ТипУзла= ТипУзлаXML.Текст Тогда
        
        Если Чтение.Имя="НомерЗаказа" Тогда
            СЗ.Добавить(Чтение.Значение);
        КонецЕсли;    
            
       Сообщить("Текст:" + СЗ.Добавить(Чтение.Значение));

Всеравно перебираются все значения файла. Что-то неправильно в этом Условии:
Если Чтение.Имя="НомерЗаказа" Тогда


Сообщение отредактировал MATEVI - 02.12.12, 21:00

alex040269 Подменю пользователя
сообщение 02.12.12, 20:02
Сообщение #3

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда 
        
        
       //Читаем имя узла

        ИначеЕсли Чтение.ТипУзла= ТипУзлаXML.Текст Тогда
        //Читаем значение
       //имя недоступно


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

alexkhua Подменю пользователя
сообщение 02.12.12, 22:06
Сообщение #4

Завсегдатай
****
Группа: Пользователи
Сообщений: 181
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(alex040269 @ 02.12.12, 20:02) *
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда 
        
        
       //Читаем имя узла

        ИначеЕсли Чтение.ТипУзла= ТипУзлаXML.Текст Тогда
        //Читаем значение
       //имя недоступно

Извините, не понял. Можно конкретно пример.

alexkhua Подменю пользователя
сообщение 02.12.12, 23:17
Сообщение #5

Завсегдатай
****
Группа: Пользователи
Сообщений: 181
Спасибо сказали: 2 раз
Рейтинг: 0

Ну вообщем Для данного файла нужно, например, выбрать строку "НомерЗаказа":
<?xml version="1.0" encoding="UTF-8" ?> 
- <Корневой>
- <ЭлементДокументаНарядЗаказ>
  <НомерЗаказа>125/5</НомерЗаказа>
  <Дата>22.11.2012 23:08:44</Дата>
  <ТипИзделия>ПШ встроенный две двери горизонтальные</ТипИзделия>
  </ЭлементДокументаНарядЗаказ>
- <ЭлементДокументаНарядЗаказ>
  <НомерЗаказа>125/6</НомерЗаказа>
  <Дата>30.11.2012 11:35:25</Дата>
  <ТипИзделия>ПШ встроенный две двери горизонтальные</ТипИзделия>
  </ЭлементДокументаНарядЗаказ>
- <ЭлементДокументаНарядЗаказ>
  <НомерЗаказа>125/7</НомерЗаказа>
  <Дата>01.12.2012 12:00:00</Дата>
  <ТипИзделия>ПШ встроенный две двери горизонтальные</ТипИзделия>
  </ЭлементДокументаНарядЗаказ>
  </Корневой>

Исправил код:



 Пока Чтение.Прочитать() Цикл 
    
    Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
        //Чтение.ПрочитатьАтрибут();
        
        Имя=Чтение.Прочитать();
        
                
        ИначеЕсли Чтение.ТипУзла= ТипУзлаXML.Текст Тогда
        
        Если Имя="НомерЗаказа" Тогда
        СЗ.Добавить(Чтение.Значение);
        

    КонецЕсли;
    Сообщить("Значение"+СЗ.Добавить(Чтение.Значение));
      

  КонецЕсли;
КонецЦикла;
  ВывестиЗначения(СЗ);

В итоге получил значение: 125/6 и 125/7. Куда делось 125/5? Подскажите пожалуйста, я уже не могу 47046430.gif

kivals Подменю пользователя
сообщение 03.12.12, 14:14
Сообщение #6

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 105
Из: Киев
Спасибо сказали: 27 раз
Рейтинг: 0

Попробуйте
Имя = Чтение.Имя;

вместо
Имя = Чтение.Прочитать();


Сообщение отредактировал Vofka - 03.12.12, 14:28

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.04.24, 19:39
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!