Имя: Пароль:
1C
1C 7.7
v7: Считывание XML файлов
,
0 Славянин
 
19.12.16
16:08
Доброго времени суток. Подскажите пожалуйста.
Сформировал несколько выходных xml - файлов.
Теперь мне нужно их все обработать и загрузить.
Как это можно сделать. Каков должен быть цикл? нужно пользоваться методами внешней компоненты или можно стандартыми конструкциями 1С это сделать?
1 Cool_Profi
 
19.12.16
16:10
ФС.НайтиФайлы()

Пока ФС.НайтиСледующий() = 1 (или получить, не помню)

//читаешь свой файл
2 Это_mike
 
19.12.16
16:14
(1) учишь читать СП? :-)
3 Cool_Profi
 
19.12.16
16:16
(2) Не моё это. Из меня учитель - как из тебя ВВП.
4 vcv
 
19.12.16
16:16
Почти в любой типовой конфигурации от 1С есть какая-нибудь загрузка/выгрузка XML. Читать исходники, много думать.
5 Chum
 
19.12.16
16:47
6 Злопчинский
 
19.12.16
21:26
Иксемель = СоздатьОбъект("Microsoft.XMLDOM");
    Иксемель.Load(ФайлДанных);
    Корень = Иксемель.DocumentElement;
    
    ОбработатьУзел(Корень, 0); //тест чтения
7 Злопчинский
 
19.12.16
21:27
//**************************************************************************************
//
Процедура ОбработатьУзел(Узел, Уровень=0)
    Состояние(Уровень);

    КолвоУзлов = Узел.childNodes.length;
    Для СчУзлов = 0 По КолвоУзлов-1 Цикл
        
        ТекУзел = Узел.childNodes.item(СчУзлов);
        Если ТекУзел.nodeType <> 1 Тогда Продолжить; КонецЕсли;
        
        Стр = Формат("","С"+Уровень*8);
        
        СтрАтрибуты = "";
        Для счАтрибутов = 0 По ТекУзел.attributes.length-1 Цикл
            Атрибут     = ТекУзел.attributes.item(счАтрибутов);
            СтрАтрибуты    = СтрАтрибуты + ?(СтрАтрибуты="","",";") + Атрибут.nodename+"="+Атрибут.value;
        КонецЦикла;
        
        ТекстУзла = "";
        Если ТекУзел.childNodes.length = 1 Тогда
            Если  ТекУзел.childNodes.item(0).nodetype = 3 Тогда ТекстУзла = ТекУзел.childNodes.item(0).text; КонецЕсли;
        КонецЕсли;
        
        Стр = Стр + ТекУзел.tagName + ?(СтрАтрибуты="","","("+СтрАтрибуты+")" ) + ": " +ТекстУзла;
        Сообщить(Стр);
        
        ОбработатьУзел(ТекУзел, Уровень+1);
    КонецЦикла;
    
    Состояние("");
КонецПроцедуры // ОбработатьУзел()