Имя: Пароль:
1C
1C 7.7
v7: Не получается прочитать подчиненный узел xml документа
0 katerinaUniv
 
07.06.15
17:07
Добрый вечер! У меня не получается прочитать подчиненный узел файла xml. Код вот:

ВыборкаДанных = XML_Документ.ВыбратьУзел("DISTR_CONN_ID");
    Если ПустоеЗначение(ВыборкаДанных) = 1 Тогда
        Сообщить("Файл не является файлом выгрузки данных с мобильного устройства!", "!!!");        
        Возврат;
    КонецЕсли;    
                    
    ВыборкаДок = ВыборкаДанных.ВыбратьУзлы("ORDER");                              
              
    Для Сч = 0 По ВыборкаДок.КоличествоУзлов() - 1 Цикл
        Эл = ВыборкаДок.ПолучитьУзел(Сч);            
        Сообщить("!ID!"+Эл.ПолучитьАтрибут("ID"));
        Сообщить("!TYPE!"+эл.ПолучитьАтрибут("TYPE"));  
        
        Сообщить("!SAFARI_ID!"+эл.ВыбратьУзел("SAFARI_ID").Значение);
        Сообщить("!INV_NO!"+эл.ВыбратьУзел("INV_NO").Значение);
        Сообщить("!SHIP_TO_ID!"+эл.ВыбратьУзел("SHIP_TO_ID").Значение);
        Сообщить("!SOLD_TO_ID!"+эл.ВыбратьУзел("SOLD_TO_ID").Значение);
        Сообщить("!ORDER_DATE!"+эл.ВыбратьУзел("ORDER_DATE").Значение);
        Сообщить("!DELIVERY_DATE!"+эл.ВыбратьУзел("DELIVERY_DATE").Значение);
        Сообщить("!COMMENTS!"+эл.ВыбратьУзел("COMMENTS").Значение);
        Сообщить("!TOTAL_AMOUNT!"+эл.ВыбратьУзел("TOTAL_AMOUNT").Значение);
        Сообщить("!TAXES!"+эл.ВыбратьУзел("TAXES").Значение);
        Сообщить("!DISCOUNT!"+эл.ВыбратьУзел("DISCOUNT").Значение);
        Сообщить("!GROSS!"+эл.ВыбратьУзел("GROSS").Значение);
        Сообщить("!SALES_AGENT_ID!"+эл.ВыбратьУзел("SALES_AGENT_ID").Значение);
        Сообщить("!CURRENCY!"+эл.ВыбратьУзел("CURRENCY").Значение);
        Сообщить("!CASH_COLLECTION!"+эл.ВыбратьУзел("CASH_COLLECTION").Значение);
        Сообщить("!ABC_CLS!"+эл.ВыбратьУзел("ABC_CLS").Значение);    
        Сообщить("!SALES_AGENT_NAME!"+эл.ВыбратьУзел("SALES_AGENT_NAME").Значение);
        
        ВыборкаПродукт = ВыборкаДок.ВыбратьУзлы("PRODUCT");
        Для сч1 = 0 По выборкаПродукт.КоличествоУзлов() - 1 Цикл
            элПрод = ВыборкаПродукт.ПолучитьУзел(Сч);
            Сообщить("!PRODUCT_ID!"+элПрод.ВыбратьУзел("PRODUCT_ID").Значение);//элПрод.ВыбратьУзел("PRODUCT_ID").Значение);
            Сообщить("!QTY!"+элПрод.ВыбратьУзел("QTY").Значение);
            Сообщить("!LIST_PRICE!"+элПрод.ВыбратьУзел("LIST_PRICE").Значение);
            Сообщить("!UOM!"+элПрод.ВыбратьУзел("UOM").Значение);
            Сообщить("!TAXES!"+элПрод.ВыбратьУзел("TAXES").Значение);
            Сообщить("!DISCOUNT!"+элПрод.ВыбратьУзел("DISCOUNT").Значение);
            Сообщить("!GROSS!"+элПрод.ВыбратьУзел("GROSS").Значение);
            Сообщить("!CURRENCY!"+элПрод.ВыбратьУзел("CURRENCY").Значение);
            Сообщить("!DESCRIPTION!"+элПрод.ВыбратьУзел("DESCRIPTION").Значение);
        КонецЦикла;
        КонецЦикла;
1 katerinaUniv
 
07.06.15
17:07
Пока идет только метод "Сообщить", чтобы проверить, правильно ли читается файл. Дальше пойдет его обработка.
2 katerinaUniv
 
07.06.15
17:08
структура файла вот:

Сегмент    Сегмент    Сегмент    Узел    Атрибуты    Описание    Пример значения    Тип данных
DISTR_CONN_ID                ID    ID подключения дистрибьютора         nvarchar-20
    ORDER            TYPE        S,R    char-1
                ID    ID заказа в системе SAFARI        nvarchar-20
             SAFARI_ID        Код ТТ в системе DMS        nvarchar-20
            INV_NO        Ссылка на накладную (для возратов, TYPE=R)        nvarchar-30
            SHIP_TO_ID        Код адреса доставки в системе дистрибьютора        nvarchar-20
            SOLD_TO_ID        Код ЮЛ в системе дистрибьютора        nvarchar-20
            ORDER_DATE        Дата заказа    2013.07.22 00:00:00    datetime
            DELIVERY_DATE        Ожидаемая дата доставки    2013.07.23 00:00:00    datetime
            COMMENTS        Комментарий    - Доставка до 14:00    nvarchar-100
            TOTAL_AMOUNT        Общая сумма заказа с учетом всех скидок и налогов    21240.09870 (5 знаков после запятой, в качестве разделителя используется точка)    numeric 26,5
            TAXES        Сумма всех налогов по заказу    3240.67800 (пять знаков после запятой, в качестве разделителя используется точка)    numeric 26,5
            DISCOUNT        Сумма всех скидок по продукту    2000.34897 (пять знаков после запятой, в качестве разделителя используется точка)    numeric 26,5
            GROSS        Сумма без учета налогов и скидок    20000.00000 (пять знаков после запятой, в качестве разделителя используется точка)    numeric 26,5
            SALES_AGENT_ID        Код ТП        nvarchar-20
            CURRENCY        Валюта    RUB    nvarchar-4
            CASH_COLLECTION        Оплата осуществляется наличными или нет    1    Bit
            ABC_CLS        Категория заказа    A
B    nvarchar-20
            SALES_AGENT_NAME        Имя ТП        nvarchar-20
        PRODUCT    PRODUCT_ID        Код продукта в системе Ферреро    77084356    nvarchar-20
            QTY        Количество    54    numeric 26,5
            LIST_PRICE        Цена по прайс-листу за единицу товара     120.00000 (пять знаков после запятой, в качестве разделителя используется точка)    numeric 26,5
            UOM        Единица измерения (потребительская упаковка ФЕРРЕРО)    CU    nvarchar-20
            TAXES        Сумма всех налогов по продукту    3240.76540 (пять знаков после запятой, в качестве разделителя используется точка)    numeric 26,5
            DISCOUNT        Сумма всех скидок по продукту    2000.79000 (пять знаков после запятой, в качестве разделителя используется точка)    numeric 26,5
            GROSS        Сумма без учета налогов и скидок    20000.10000 (пять знаков после запятой, в качестве разделителя используется точка)    numeric 26,5
            CURRENCY        Валюта    RUB    nvarchar-4
            DESCRIPTION        Описание продукта        nvarchar-100
3 katerinaUniv
 
07.06.15
17:08
Есть корень DistrConn_ID, ему подчинен узел Order
4 ДенисЧ
 
07.06.15
17:09
Я прочитаю файл за 10 000 рублей!
5 katerinaUniv
 
07.06.15
17:09
Order, точнее, сегмент
6 katerinaUniv
 
07.06.15
17:09
(4)я сама читаю его намного дешевле...
7 katerinaUniv
 
07.06.15
17:09
и ему подчинен сегмент Product
8 ДенисЧ
 
07.06.15
17:10
(6) Дешевле ты его не читаешь, а задаёшь вопросы, как прочитать  )))
9 katerinaUniv
 
07.06.15
17:27
(8)тогда скажу прямо - денег нет(
10 katerinaUniv
 
07.06.15
17:48
Волшебный Форум уже не тот...
11 katerinaUniv
 
07.06.15
18:21
для тех, кто попадет в аналогичную ситуацию отписываю решение:
выбирать узлы надо у переменной Эл, а не выборкаДок
12 spectre1978
 
07.06.15
18:48
(10) выходной, вообще народу мало, а семерочников ишшо меньше :)