Вход | Регистрация

1С:Предприятие ::

Метки: 

v7plus ТекущийЭлементВВидеОбъекта() - закрівается 1с

Я
   burrya
 
28.09.17 - 15:38
при выполнении кода

Если ВложТег>0 Тогда
        Уровней=КвоУровнейХМЛ(ВложТег,гФайл);
        штрих="--"; 
        Если ВложТег<3 Тогда  
            //первый полученный элемент

            Сообщить(""+штрих+"<ИмяТега>="+гФайл.СвойстваТекущегоУзла.Имя+"  Уровень="+гФайл.СвойстваТекущегоУзла.Уровень);
            Объект = гФайл.ТекущийЭлементВВидеОбъекта();

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

1с зависает и закрывается
 
 
   DrShad
 
1 - 28.09.17 - 15:43
ну не может она его в объект преобразовать
   burrya
 
2 - 28.09.17 - 15:47
А чем лучше всего читать xml с текстом?
   DrShad
 
3 - 28.09.17 - 15:50
(2) MSXML
   burrya
 
4 - 28.09.17 - 16:08
а есть примеры рабочего кода?
   DrShad
 
5 - 28.09.17 - 16:10
(4) в инете полно
   DrShad
 
6 - 28.09.17 - 16:11
у 1С даже в новых платформах и то не полноценный XML
   wHammer
 
7 - 28.09.17 - 17:14
   big
 
8 - 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 Тогда
    //            Сообщить("ЕГАИСКонтрагент с ИД "+РегИдЕГАИС+" найден");

//            Продолжить;
        Иначе
            Спр.Новый();
        КонецЕсли;
        Спр.Код                    = КодЕГАИС;
        Спр.Наименование        = Наименование;
        Спр.ПолнНаименование    = ПолнНаименование;
            Спр.Объем                = Объем;
        Спр.Крепость            = Крепость;
        Спр.Производитель        = ИД_Производитель;
        Спр.ПроизводительНаим    = НаимПроизводитель;
        Спр.ПроизводительИНН    = ИННПроизводитель;
        Спр.ПроизводительКПП    = КПППроизводитель;
        Спр.Импортер            = ИД_Импортер;
        Спр.ИмпортерНаим        = НаимИмпортер;
        Спр.КодАП                = СпрАП.ТекущийЭлемент();
            
        Спр.Записать();
    
    КонецЕсли;
КонецЦикла;


Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует