Имя: Пароль:
1C
1С v8
Загрузка из XML
,
0 Evitaro
 
29.07.14
16:47
никак не получается загрузить этот файл XML в ТЗ для дальнейшей обработки
файл типа:
<Orders>
<Order id="9057">
<Date>2014-07-24 10:47:58</Date>
<Cost>455.00</Cost>
<Cash>0.00</Cash>
<State_id>4</State_id>
<State_name>Оплачен</State_name>
<Courier_id>24</Courier_id>
<Courier_name>Аверьянов Руслан</Courier_name>
<Oper_id>11</Oper_id>
<Oper_name>Маргарита</Oper_name>
<Description/>
<Products>
<Product id="152">
<Name>Американ экспресс большая</Name>
<Cost>415.00</Cost>
<Count>1</Count>
</Product>
<Product id="212">
<Name>Соус чесночный</Name>
<Cost>40.00</Cost>
<Count>1</Count>
</Product>
<Client id="7156">
<Name>Лиза</Name>
<Address>ул.Угловая 17 первый подъезд позвонить</Address>
<Phone>89632927914</Phone>
</Client>
<States>
<State id="2">
<Name>Готовится</Name>
<Date>2014-07-24 10:59:40</Date>
</State>
<State id="4">
<Name>Оплачен</Name>
<Date>2014-07-24 11:13:43</Date>
</State>
</States>
</Products>
</Order>
<Order id="9058">
<Date>2014-07-24 11:10:20</Date>
<Cost>812.00</Cost>
<Cash>0.00</Cash>
<State_id>4</State_id>
<State_name>Оплачен</State_name>
<Courier_id>1</Courier_id>
<Courier_name>Черноусько Михаил</Courier_name>
<Oper_id>12</Oper_id>
<Oper_name>Анастасия</Oper_name>
<Description/>
<Products>
<Product id="190">
<Name>Мясная</Name>
<Cost>445.00</Cost>
<Count>1</Count>
</Product>
<Product id="196">
<Name>Чикаго</Name>
<Cost>445.00</Cost>
<Count>1</Count>
</Product>
<Product id="214">
<Name>Соус сырный</Name>
<Cost>50.00</Cost>
<Count>1</Count>
</Product>
<Product id="215">
<Name>Соус барбекю</Name>
<Cost>50.00</Cost>
<Count>1</Count>
</Product>
<Client id="200">
<Name>Зал</Name>
<Address>Зал</Address>
<Phone>0000</Phone>
</Client>
<States>
<State id="4">
<Name>Оплачен</Name>
<Date>2014-07-24 11:12:02</Date>
</State>
</States>
</Products>
</Order>
1 Wobland
 
29.07.14
16:48
и что?
2 Evitaro
 
29.07.14
16:49
3 Maxus43
 
29.07.14
16:50
Чтение = Новый ЧтениеXML;

Чтение.ОткрытьФайл(ПутьКФайлу);

Пока Чтение.Прочитать() Цикл // Прочитать «структурные части» элементов.

    // Проверить, какая часть элемента – текущая.
    Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
        ИмяУзла = Чтение.Имя;
        
        Сообщить("--" + ИмяУзла);

        // Атрибуты элементов можно читать только если текущая часть – начало элемента
        Пока Чтение.ПрочитатьАтрибут() Цикл

            // Прочитать данные узла атрибута.
            ТипУзла  = Чтение.ТипУзла;
            Имя      = Чтение.Имя;
            Значение = Чтение.Значение;
    
        // Обработать полученные значения.
        //    ...
        
        КонецЦикла;
        
    ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда    

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

        // В примере просто выводим признак конца элемента
        // в окно сообщений
        Сообщить("--Конец:" + Чтение.Имя);
        
    КонецЕсли;    
    
КонецЦикла    

(с) простые примеры разработки
4 Wobland
 
29.07.14
16:50
а где </Orders>, кстати?
5 Evitaro
 
29.07.14
16:50
может поможет кто с кодом?
6 ДенисЧ
 
29.07.14
16:50
Ну рассказывай, как обгнял, как подрезал, что делал, что не получилось...
7 Wobland
 
29.07.14
16:50
(2) чего с этим делать?
8 Evitaro
 
29.07.14
16:52
загрузить в ТЗ
9 Лефмихалыч
 
29.07.14
16:52
(5) Maxus43 помог. Помогло?
10 Wobland
 
29.07.14
16:53
(8) это обязательно? у меня 1Ска не запущена
11 Фокусник
 
29.07.14
16:53
(8) Забыл добавить: "быстро, нах!" ;)
12 Timon1405
 
29.07.14
16:58
ТаблицаЗначений.ЗагрузитьИзXML (ValueTable.LoadFromXML)
ТаблицаЗначений (ValueTable)
ЗагрузитьИзXML (LoadFromXML)
Синтаксис:

ЗагрузитьИзXML (<ЛюбыеДанные>, <ЛюбыеКолонки>)
Параметры:

<ЛюбыеДанные> (обязательный)

Тип: Произвольный.
Любые данные, которые необходимо загрузить в таблицу.
<ЛюбыеКолонки> (необязательный)

Тип: Строка.
Список имен колонок, разделенных запятыми, по которым производится заполнение строк таблицы значений.
Если параметр не указан или передана пустая строка, будет заполнена вся таблица значений.
Описание:

Заполняет таблицы значений данными из XML.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Пример:

ТаблицаЗаказов.ЗагрузитьИзXML (ФайлXML, "Пицца,Соус");
13 Evitaro
 
29.07.14
16:59
Есть что-то типо этого, но не фурычит так
Процедура ЗагрузитьЗаказXML(ИмяФайла)    
    Чтение = Новый ЧтениеXML;
    Чтение.ОткрытьФайл(ИмяФайла);
    
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("id");
    ТЗ.Колонки.Добавить("Date");
    ТЗ.Колонки.Добавить("Cost");
    ТЗ.Колонки.Добавить("Cash");
    ТЗ.Колонки.Добавить("State_id");
    ТЗ.Колонки.Добавить("State_name");
    ТЗ.Колонки.Добавить("Courier_id");
    ТЗ.Колонки.Добавить("Courier_name");
    ТЗ.Колонки.Добавить("Oper_id");
    ТЗ.Колонки.Добавить("Oper_name");
    ТЗ.Колонки.Добавить("Description");
    ТЗ.Колонки.Добавить("id2");
    ТЗ.Колонки.Добавить("Name");
    ТЗ.Колонки.Добавить("Cost3");
    ТЗ.Колонки.Добавить("Count");
    ТЗ.Колонки.Добавить("id4");
    ТЗ.Колонки.Добавить("Name5");
    ТЗ.Колонки.Добавить("Address");
    ТЗ.Колонки.Добавить("Phone");
    ТЗ.Колонки.Добавить("id6");
    ТЗ.Колонки.Добавить("Name7");
    ТЗ.Колонки.Добавить("Date8");                                    
    Стр = ТЗ.Добавить();    
    Пока Чтение.Прочитать() Цикл
        
        Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента тогда
            Чтение.ПрочитатьАтрибут();
            Атрибут = Чтение.Имя;
        КонецЕсли;
        
        
        Если Атрибут = "id" тогда
            Стр.id = Чтение.Значение;
        КонецЕсли;
        
        Если Атрибут = "Date" и Чтение.Значение <> "" тогда
            Стр.Date = Чтение.Значение;
        КонецЕсли;
        
        Если Атрибут = "Cost" и Чтение.Значение <> ""  тогда
            Стр.Cost = Чтение.Значение;
        КонецЕсли;
        
        Если Атрибут = "Cash" и Чтение.Значение <> ""  тогда
            Стр.Cash = Чтение.Значение;
        КонецЕсли;
        
        Если Атрибут = "State_id" и Чтение.Значение <> ""  тогда
            Стр.State_id = Чтение.Значение;
        КонецЕсли;
        
        Если Атрибут = "State_name" и Чтение.Значение <> ""  тогда
            Стр.State_name = Чтение.Значение;
        КонецЕсли;
        
        Если Атрибут = "Courier_id" и Чтение.Значение <> ""  тогда
            Стр.Courier_id = Чтение.Значение;
        КонецЕсли;
        
        Если Атрибут = "Courier_name" и Чтение.Значение <> ""  тогда
            Стр.Courier_name = Чтение.Значение;
        КонецЕсли;
        
        Если Атрибут = "Oper_id" и Чтение.Значение <> ""  тогда
            Стр.Oper_id = Чтение.Значение;
        КонецЕсли;
        
        Если Атрибут = "Oper_name" и Чтение.Значение <> ""  тогда
            Стр.Oper_name = Чтение.Значение;
        КонецЕсли;
        
        Если Атрибут = "Description" и Чтение.Значение <> ""  тогда
            Стр.Description = Чтение.Значение;
        КонецЕсли;
        
        Если Атрибут = "id2" и Чтение.Значение <> ""  тогда
            Стр.id2 = Чтение.Значение;
        КонецЕсли;
        
        Если Атрибут = "Name" и Чтение.Значение <> ""  тогда
            Стр.Name = Чтение.Значение;
        КонецЕсли;
        
        Если Атрибут = "Cost3" и Чтение.Значение <> ""  тогда
            Стр.Cost3 = Чтение.Значение;
        КонецЕсли;
        
        Если Атрибут = "Count" и Чтение.Значение <> ""  тогда
            Стр.Count = Чтение.Значение;
        КонецЕсли;
        
        Если Атрибут = "id4" и Чтение.Значение <> ""  тогда
            Стр.id4 = Чтение.Значение;
        КонецЕсли;
        
        Если Атрибут = "Name5" и Чтение.Значение <> ""  тогда
            Стр.Name5 = Чтение.Значение;
        КонецЕсли;
        
        Если Атрибут = "Address" и Чтение.Значение <> ""  тогда
            Стр.Address = Чтение.Значение;
        КонецЕсли;
        
        Если Атрибут = "Phone" и Чтение.Значение <> ""  тогда
            Стр.Phone = Чтение.Значение;
        КонецЕсли;
        
        Если Атрибут = "id6" и Чтение.Значение <> ""  тогда
            Стр.id6 = Чтение.Значение;
        КонецЕсли;
        
        Если Атрибут = "Name7" и Чтение.Значение <> ""  тогда
            Стр.Name7 = Чтение.Значение;
        КонецЕсли;
        
        Если Атрибут = "Date8" и Чтение.Значение <> ""  тогда
            Стр.Date8 = Чтение.Значение;
        КонецЕсли;
    КонецЦикла;
    
    
КонецПроцедуры
14 Wobland
 
29.07.14
17:01
(12) мощно
15 Maxus43
 
29.07.14
17:01
Пока Чтение.Прочитать() Цикл
        
    Стр = ТЗ.Добавить();    

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

типа чего то такого
16 Wobland
 
29.07.14
17:01
(13) что планируешь делать?
17 Evitaro
 
29.07.14
17:10
хочу получить таблицу значений как в этом файлике экселя
https://cloud.mail.ru/public/46823742bcdb/123.xls
18 Wobland
 
29.07.14
17:15
(17) мы поняли. что ты сделал для этого?
19 Evitaro
 
29.07.14
17:15
сделал  (13)
20 Wobland
 
29.07.14
17:20
(19) почему не фруычит? разбирался?
21 Evitaro
 
29.07.14
17:30
(20) вроде бы да... узлы products и client не учёл
22 Лефмихалыч
 
29.07.14
17:30
(12) это в какой версии платформы?
23 Лефмихалыч
 
29.07.14
17:30
(21) а вот и не угадал
24 Evitaro
 
29.07.14
17:31
(23) почему?
25 Лефмихалыч
 
29.07.14
17:33
(24) потому, что есть еще ошибка
26 Evitaro
 
29.07.14
17:37
(25) Стр = ТЗ.Добавить();
эту ошибку я уже отловил и исправил) перед циклом запихнул
27 Wobland
 
29.07.14
17:38
глядишь, скоро всё заработает и без нашей помощи