Имя: Пароль:
1C
 
v7plus ТекущийЭлементВВидеОбъекта() - закрівается 1с
0 burrya
 
28.09.17
15:38
при выполнении кода

Если ВложТег>0 Тогда
        Уровней=КвоУровнейХМЛ(ВложТег,гФайл);
        штрих="--";
        Если ВложТег<3 Тогда  
            //первый полученный элемент
            Сообщить(""+штрих+"<ИмяТега>="+гФайл.СвойстваТекущегоУзла.Имя+"  Уровень="+гФайл.СвойстваТекущегоУзла.Уровень);
            Объект = гФайл.ТекущийЭлементВВидеОбъекта();

Объект = гФайл.ТекущийЭлементВВидеОбъекта(); - на этой строке

1с зависает и закрывается
1 DrShad
 
28.09.17
15:43
ну не может она его в объект преобразовать
2 burrya
 
28.09.17
15:47
А чем лучше всего читать xml с текстом?
3 DrShad
 
28.09.17
15:50
(2) MSXML
4 burrya
 
28.09.17
16:08
а есть примеры рабочего кода?
5 DrShad
 
28.09.17
16:10
(4) в инете полно
6 DrShad
 
28.09.17
16:11
у 1С даже в новых платформах и то не полноценный XML
7 wHammer
 
28.09.17
17:14
8 big
 
29.09.17
04:46
Примерно так


Функция глСоздатьDOMDocument() Экспорт
       
    DOMDocument=0;
    Попытка
        DOMDocument = СоздатьОбъект("Msxml2.DOMDocument.6.0");
    Исключение
        DOMDocument=0;
        Попытка
            DOMDocument = СоздатьОбъект("Msxml2.DOMDocument.4.0");
        Исключение
            DOMDocument=0;            
            Попытка
                DOMDocument = СоздатьОбъект("Msxml2.DOMDocument");
            Исключение
                Сообщить("В системе не установлена ни одна из библиотек XML от Microsoft!");
                Возврат 0;
            КонецПопытки;            
        КонецПопытки;        
    КонецПопытки;
    DOMDocument.async=0;
    DOMDocument.validateOnParse=-1;
    DOMDocument.resolveExternals=-1;

    Возврат DOMDocument;
    
КонецФункции

DOMDocument.load(ТекФайл);
Если (DOMDocument.parseError.errorCode<>0) Тогда
    Сообщить("Ошибка проверки файла "+ТекФайл+"! Ошибка:"+DOMDocument.parseError.errorCode,"!"); Возврат;
КонецЕсли;              
    
Узел1        = DomDocument.getElementsByTagName("ns:Documents").Item(0);
Узел2        = Узел1.getElementsByTagName("ns:Document").Item(0);
Узел3        = Узел2.getElementsByTagName("ns:ReplyAP").Item(0);
    Выборка        = Узел3.getElementsByTagName("rap:Products").Item(0);
    
Ном = 0;
    
Для а=0 По Выборка.childNodes.length-1 Цикл
        
    Состояние("Обработано "+(а+1)+" строк");
    ТекУзел                = Выборка.childNodes(а);
    Объем                = 0;
    Если ТекУзел.getElementsByTagName("pref:Capacity").length > 0 Тогда
            Объем            = СокрЛП(ТекУзел.getElementsByTagName("pref:Capacity").Item(0).Text);
            Объем            = СтрЗаменить(Объем,",",".");
            Объем            = Число(Объем);
    КонецЕсли;

    ПолнНаименование    = СокрЛП(ТекУзел.getElementsByTagName("pref:FullName").Item(0).Text);
    Если ТекУзел.getElementsByTagName("pref:ShortName").length > 0 Тогда
        Наименование    = ТекУзел.getElementsByTagName("pref:ShortName").Item(0).Text;
    Иначе
        Наименование    = ПолнНаименование;
    КонецЕсли;
        
    КодЕГАИС            = СокрЛП(ТекУзел.getElementsByTagName("pref:AlcCode").Item(0).Text);
    КодВидаАП            = СокрЛП(ТекУзел.getElementsByTagName("pref:ProductVCode").Item(0).Text);
    Крепость            = СокрЛП(ТекУзел.getElementsByTagName("pref:AlcVolume").Item(0).Text);
    Крепость            = СтрЗаменить(Крепость,",",".");
    Крепость            = Число(Крепость);
        
    хмл_Производитель    = ТекУзел.getElementsByTagName("pref:Producer").Item(0);
    ИННПроизводитель    = "";
    Если хмл_Производитель.getElementsByTagName("oref:INN").length > 0 Тогда
        ИННПроизводитель    = СокрЛП(хмл_Производитель.getElementsByTagName("oref:INN").Item(0).Text);
    КонецЕсли;
        
    КПППроизводитель    = "";
    Если хмл_Производитель.getElementsByTagName("oref:KPP").length > 0 Тогда
        КПППроизводитель    = СокрЛП(хмл_Производитель.getElementsByTagName("oref:KPP").Item(0).Text);
    КонецЕсли;
    ИД_Производитель    = СокрЛП(хмл_Производитель.getElementsByTagName("oref:ClientRegId").Item(0).Text);
    НаимПроизводитель    = СокрЛП(хмл_Производитель.getElementsByTagName("oref:ShortName").Item(0).Text);
        
    Если ТекУзел.getElementsByTagName("pref:Importer").length > 0 Тогда
        хмл_Импортер        = ТекУзел.getElementsByTagName("pref:Importer").Item(0);
        ИННИмпортер    = "";
        Если хмл_Импортер.getElementsByTagName("oref:INN").length > 0 Тогда
            ИННИмпортер    = СокрЛП(хмл_Импортер.getElementsByTagName("oref:INN").Item(0).Text);
        КонецЕсли;
            
        КППИмпортер    = "";
        Если хмл_Импортер.getElementsByTagName("oref:KPP").length > 0 Тогда
            КППИмпортер    = СокрЛП(хмл_Импортер.getElementsByTagName("oref:KPP").Item(0).Text);
        КонецЕсли;
        ИД_Импортер        = СокрЛП(хмл_Импортер.getElementsByTagName("oref:ClientRegId").Item(0).Text);
        НаимИмпортер    = СокрЛП(хмл_Импортер.getElementsByTagName("oref:ShortName").Item(0).Text);
    КонецЕсли;

        
    Если СпрАП.НайтиПоКоду(КодВидаАП,0) = 0 Тогда
        Сообщить("Алкогольная продукция с кодом """+КодВидаАП+""" не найдена в классификаторе АП");
        КодВидаАП    = КодВидаАП + "(!!!)";
    КонецЕсли;
        
    Если Реж = 0 Тогда
        
        Если Спр.НайтиПоКоду(КодЕГАИС,0)<>0 Тогда
    //            Сообщить("ЕГАИСКонтрагент с ИД "+РегИдЕГАИС+" найден");
//            Продолжить;
        Иначе
            Спр.Новый();
        КонецЕсли;
        Спр.Код                    = КодЕГАИС;
        Спр.Наименование        = Наименование;
        Спр.ПолнНаименование    = ПолнНаименование;
            Спр.Объем                = Объем;
        Спр.Крепость            = Крепость;
        Спр.Производитель        = ИД_Производитель;
        Спр.ПроизводительНаим    = НаимПроизводитель;
        Спр.ПроизводительИНН    = ИННПроизводитель;
        Спр.ПроизводительКПП    = КПППроизводитель;
        Спр.Импортер            = ИД_Импортер;
        Спр.ИмпортерНаим        = НаимИмпортер;
        Спр.КодАП                = СпрАП.ТекущийЭлемент();
            
        Спр.Записать();
    
    КонецЕсли;
КонецЦикла;