Имя: Пароль:
1C
1C 7.7
v7: Управление IE через OLE. вопрос с полями ввода
0 Const000
 
20.08.12
20:31
Никто не сталкивался с такой штукой: есть страница из инета, в ней активные поля. Нужно ввести в них строчки и отправить :)
Я сначала вытаскиваю список форм, потом список элементов из них а дальше никак пробиться не могу - ткните носом плиз. MSDN что мог прочел, но видимо много букв :(

И что интересно: При анализе страницы яндекса нашел только следующие поля input:
<form id=form class="b-head-search" action = http://yandex.ru/yandsearch >
<input autofocus="true"name="text"class="b-form-input__input"id="text"tabindex="1"autocomplete="off" maxlength="400" />
<input name=lr type=hidden value="47">
<input name=msid type=hidden value="20947.24450.1345477932.71505">
<input type="submit"value=""tabindex="20"class="b-form-button__input"/>
</form>

<form class="b-domik b-domik_type_onpage b-domik_service_mail g-js"onclick="return {name:'b\-domik', title:'Почта', register:'', err_msg:'введите латиницей'}" action="http://passport.yandex.ru/passport?mode=auth&amp;retpath=http%3A%2F%2Fmail.yandex.ru" method="post">
<input class="b-input__text"id="b-domik-username"type="text"name="login"tabindex="30">
<input class="b-input__text"id="b-domik-password"type="password"name="passwd"tabindex="40">
<input id="b-domik-permanent"class="b-domik__check"name="twoweeks"type="checkbox"value="yes" checked tabindex="50">
<input hidefocus="true"type="submit"onmousedown="cp('v12uidetalon.mail.logout.loginmenu.mail')" value="" class="b-form-button__input" tabindex="60"/>
</form>
А 1С выдает одно "лишнее"...
В идеале хотелось бы научиться определять поле ввода по имени (тег name) и заполнять его произвольной ерундой :)

//-----------------------------------
Процедура sleep(ms)
   стр="Ожидание "+ТекущееВремя();
   Состояние(стр);
   сек=цел(ms/1000);
   ВвестиСтроку(стр, стр, 100, 0, сек);
КонецПроцедуры    
//*******************************************
Процедура Сформировать()
   True=-1;
   False=0;
   oIE = CreateObject("InternetExplorer.Application");
   oIE.Visible=True;
   oIE.Navigate("http://www.yandex.ru/");
   While oIE.Busy()=True Do
       sleep(1000);
   EndDo;
   doc1=oIE.Document;
   obj1_=doc1.Forms;
     LenObj1=obj1_.length();
     For Form1=0 to LenObj1-1 Do
       objForm=obj1_.item(Form1);
         LenObj2=objForm.length();
         Сообщить ("форма "+Form1+" полей "+LenObj2);
         For ElemForm=0 to LenObj2-1 Do  
           objElem=objForm.item(ElemForm);
             Сообщить ("поле "+ElemForm);
       EndDo;
   EndDo;
КонецПроцедуры
//*******************************************
1 zladenuw
 
20.08.12
21:23
а зачем формы ? разве по полям нельзя только ?
2 oleg_prg
 
20.08.12
22:22
Лови!
Вот код который на сайт rabota.by в поле поиска вбивает программист и делает отправку запроса

Процедура Сформировать()
   ИЕ=СоздатьОбъект("InternetExplorer.Application");
   ИЕ.Visible=0;
   НомерКомпании = 0;
   Адрес1 = "rabota.by";
   ИЕ.Navigate(Адрес1);
   Пока ИЕ.ReadyState<4 Цикл
   КонецЦикла;    
   ИЕ.Document.Forms(1).elements("key_string").Value=СокрЛП("Программист 1С");
   ИЕ.Document.Forms(1).submit();    
КонецПроцедуры
3 Const000
 
28.08.12
16:43
Запоздалое спасибо, получилось вот так:
 LenObj2=objForm.length();
 For ElemForm=0 to LenObj2-1 Do  
   ХХХ=objForm.elements (ElemForm);
   Сообщить ("Поле "+ElemForm+" - "+ХХХ.id+" : "+ХХХ.type);
   ХХХ.Value="1";
 EndDo;
 obj1_.Submit ()

Аналогичный вопрос с картинками:

Images=doc1.Images;
Картинок=Images.length();
For ImageCounter=0 to Картинок-1 Do
 CurrentImage=Images.item(ImageCounter);
 Сообщить (""+CurrentImage.id+":"+CurrentImage.src);
EndDo;

т.е. названия и адреса картинок + сами объекты картинок видны и доступны.
Хочется сохранить их на диск :) нашел http://www.sql.ru/forum/actualthread.aspx?tid=948455 из него
http://bit.pirit.info/forum/viewtopic.php?t=9824
Так же прочел похожее Как скачать файл из инета? где уважаемый  smaharbA решил вопрос с загрузкой файла через XMLHTTP. Но вот тут засада - мне нужно проанализировать капчу. Соответственно повторно читать с сайта нельзя. Она изменится, т.к. сессия будет другой. Можно ли как-то сохранить именно уже открытую в IE картинку в любом формате? Эксплорер мышкой это делает (сохранить как). И вроде бы execWB похож на искомое, но никак не выходит...
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший