Имя: Пароль:
1C
1С v8
Проблема с COMОбъект("InternetExplorer.Application")
,
0 rotting
 
13.01.12
16:38
Пытаюсь разобрать веб страницу по кускам


IE = Новый COMОбъект("InternetExplorer.Application");
IE.Visible = Истина;
Страница = "http://jurportal.org/tax_base";
IE.Navigate(Страница);
   
Пока IE.readyState < 4 Цикл
   ОбработкаПрерыванияПользователя();            
КонецЦикла;
   
//Тут все работает как мне надо    значение IE.readyState принимает
//значение 4 в момент полной загрузки страницы

//Потом нажимаю кнопку на странице, и в этот момент должна
//загрузиться новая страница, но переменная IE.readyState не обнуляется
IE.Document.forms(0).submit();

//соответственно здесь я не знаю когда начинать парсить новую страницу



Поскажите как решить проблему
1 rotting
 
13.01.12
16:59
ап..
2 rotting
 
13.01.12
17:09
еще ап
3 Torquader
 
14.01.12
02:19
Попробуй XMLHttpRequest - там проще будет.
4 rotting
 
16.01.12
02:54
Да уже с этим функционалом дохера написал, может кто подскажет все таки????
5 Ковычки
 
16.01.12
06:59
Пока IE.readyState < 4 Цикл
   ОбработкаПрерыванияПользователя();            
КонецЦикла;
6 rotting
 
16.01.12
13:15
(5) я же написал:

//Потом нажимаю кнопку на странице, и в этот момент должна

//загрузиться новая страница, но переменная IE.readyState не обнуляется
7 detec
 
16.01.12
13:47
(0) В аналогичных случаях я пингую localhost. Но если таки по этому таймауту документ не готов, то я возвращаю функцией ошибку.
8 НЕА123
 
16.01.12
14:25
может ОФФ.

Пока (IE.readyState < 4) И (IE.StatusText <> "Готово") Цикл

?
9 Ковычки
 
16.01.12
15:23
Пока IE.Busy < 4 Цикл
   ОбработкаПрерыванияПользователя();            
КонецЦикла;
10 Ковычки
 
16.01.12
15:23
Пока IE.Busy Цикл
   ОбработкаПрерыванияПользователя();            
КонецЦикла;
11 FN
 
16.01.12
15:46
Пока (IE.readyState<4) или (IE.Busy=-1) Цикл
       Состояние("Загрузка страницы... Попытка "+КоличествоПопыток);
       Пауза(1000);
   КонецЦикла;
12 FN
 
16.01.12
15:50
(11)+ А вообще держи готовый код (только почисти):

   
   WinHttp=СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
   WinHttp.Option(2,"Windows-1251");                  
   WinHttp.Open("POST","http://sta.gov.ua/control/uk/vat/search",0);
   WinHttp.SetRequestHeader("Accept-Language", "ru");
   WinHttp.SetRequestHeader("Accept-Charset","Windows-1251");
   WinHttp.setRequestHeader("Content-Language", "ru");
   WinHttp.setRequestHeader("Content-Charset", "Windows-1251");
   WinHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=Windows-1251");
   
   
   ПостЗапрос = "isJuridical="+Число(ЮрЛицо);
   Если КритерийПоиска="ОКПО" Тогда
       ПостЗапрос=ПостЗапрос+"&individualCode="+СокрЛП(ОКПО);
   ИначеЕсли КритерийПоиска="ИНН" Тогда
       ПостЗапрос=ПостЗапрос+"&individualNumber="+СокрЛП(ИНН);
   ИначеЕсли КритерийПоиска="НомерСвидетельства" Тогда
       ПостЗапрос=ПостЗапрос+"&licenseNumber="+СокрЛП(НомерСвидетельства);
   Иначе
       ПостЗапрос=ПостЗапрос+"&name="+СокрЛП(Название);
   КонецЕсли;
   WinHttp.Send(ПостЗапрос); //отправили запрос
   
   //Разбор ответа
   Истина=-1;
   Ложь=0;        
   RegExp = СоздатьОбъект("VBScript.RegExp");
   
   RegExp.IgnoreCase = Ложь; //Игнорировать регистр
   RegExp.Global = Истина; //Поиск всех вхождений шаблона
   RegExp.MultiLine = Ложь; //Многострочный режим
   RegExp.Pattern = "<td>(.*)</td>[\s]*<td align=""right"">(.*)</td>";
   // Опис патерна: Вертаємо весь текст і/або цифри між тегами, в результаті отримуєм спочатку назву реквізиту, потім сам реквізит
   Matches=RegExp.Execute(WinHttp.ResponseText());
   ЧислоВхождений=Matches.Count();
   Для к = 0 По ЧислоВхождений-1 Цикл
       Match = Matches.Item(к);
       SubMatches = Match.SubMatches;
       ЧислоПодвыражений=SubMatches.Count();
       Для н = 0 По ЧислоПодвыражений-1 Цикл
           SubMatch=SubMatches.Item(н);
           Если SubMatch="" Тогда
               //Продолжить;
           КонецЕсли;
           
           Результат = СтрЗаменить(SubMatch,"&#034;","""");
           
           Если ВРЕГ(СокрЛП(Результат))=Врег("Iндивiдуальний податковий номер (12 знаків) / номер ДРФО (10 знаків)") Тогда
               н=н+1;
               ТЗ.НоваяСтрока();
               ТЗ.Параметр="ИНН";
               ТЗ.ВБазе = ИНН;
               ТЗ.ДПА = СтрЗаменить(SubMatches.Item(н),"&#034;","""");
               ТЗ.Раскраска = СравнитьПоля(ТЗ.ВБазе,ТЗ.ДПА);
               ТЗ.Исправлять = 0;
           КонецЕсли;
           Если ВРЕГ(СокрЛП(Результат))=Врег("Код ЄДРПОУ (8 знаків) / номер із ТРДПАУ (9 знаків)") Тогда
               н=н+1;
               ТЗ.НоваяСтрока();
               ТЗ.Параметр="ОКПО";
               ТЗ.ВБазе = ОКПО;
               ТЗ.ДПА = СтрЗаменить(SubMatches.Item(н),"&#034;","""");
               ТЗ.Раскраска = СравнитьПоля(ТЗ.ВБазе,ТЗ.ДПА);
               ТЗ.Исправлять = 0;
           КонецЕсли;
           Если ВРЕГ(СокрЛП(Результат))=Врег("Найменування або прiзвище, iм`я та по батьковi") Тогда
               н=н+1;
               ТЗ.НоваяСтрока();
               ТЗ.Параметр="Название";
               ТЗ.ВБазе = Название;
               ТЗ.ДПА = СтрЗаменить(SubMatches.Item(н),"&#034;","""");
               ТЗ.Раскраска = СравнитьПоля(ТЗ.ВБазе,ТЗ.ДПА);
               ТЗ.Исправлять = 0;
           КонецЕсли;
           Если ВРЕГ(СокрЛП(Результат))=Врег("Номер свiдоцтва (8 або 9 знаків)") Тогда
               н=н+1;
               ТЗ.НоваяСтрока();
               ТЗ.Параметр="№ св-ва";
               ТЗ.ВБазе = НомерСвидетельства;
               ТЗ.ДПА = СтрЗаменить(SubMatches.Item(н),"&#034;","""");
               ТЗ.Раскраска = СравнитьПоля(ТЗ.ВБазе,ТЗ.ДПА);
               ТЗ.Исправлять = 0;
           КонецЕсли;
       КонецЦикла;    
   КонецЦикла;
13 rotting
 
16.01.12
17:27
(12) За код спасибо, но я не знаю какие пост параметры передавать именно для моего сайта, может подскажешь как их узнать?
14 FN
 
16.01.12
18:57
(13) твой сайт берет информацию с сайта ДПА. в (12) код для доступа к сайту ДПА. Поиск по ИНН,ОКПО,№Свид или названию.
15 FN
 
16.01.12
19:05
(14) + код для 7.7, но там буквально СоздатьОбъект заменить на Новый COMОбъект
16 rotting
 
16.01.12
19:27
(15) у меня не ДПА, у меня юр портал
помогло вот это IE.Busy
17 FN
 
16.01.12
19:36
(16) я имел ввиду, что функционал странички http://jurportal.org/tax_base полностью соответствует функционалу странички http://sta.gov.ua/control/uk/vat/search
а в (12) готовый код получения нужных данных. Причем быстрее чем через IE
18 rotting
 
17.01.12
18:50
(17) да ДПА есть не плательщики НДС?
19 FN
 
17.01.12
19:48
(18) хм... нет.
Значит я ошибся, юрпортал не дублирует дпа