|
Из 1с нажать на кнопку HTML | ☑ | ||
---|---|---|---|---|
0
CnupT45rus
29.04.15
✎
07:45
|
Приветствую друзья.
Как можно из 1С нажать на кнопку в html? Всем заранее благодарен :) Код html: <center> <form name=form action="index.php" method="POST"> <table><tr><td> <font size="-1">text1</font><br><textarea class=text cols=75 rows=10 wrap=virtual name=text value="Здесь исходник"></textarea><br> </td><td><font size="-1">text2</font><br><textarea class=text cols=75 rows=10 wrap=virtual name=text2></textarea><br> </td></tr></table> <input type=button onclick="Paste();" value="Paste ↑"> <input type=button onclick="Copy();" value="Copy ↓"> <input type=button onclick="ClearForm();return 0;" value="Clear ↓↑"> <p><input type="submit" value="go"></p> </form> </center> |
|||
1
CnupT45rus
29.04.15
✎
07:46
|
Пробую так:
HTML=ЭлементыФормы.ПолеHTMLДокумента; Form=HTML.Документ.forms.namedItem("form"); сообщить(form); Если Form<>Неопределено Тогда Попытка Form.submit(); Исключение КонецПопытки; КонецЕсли; Не выходит :( |
|||
2
Jonny_Khomich
29.04.15
✎
07:47
|
может просто запустить процедуру, которая выполняется после запуска кнопки?
|
|||
3
CnupT45rus
29.04.15
✎
07:51
|
"может просто запустить процедуру, которая выполняется после запуска кнопки?"
а можно поподробнее И да, код php зашифрован :( |
|||
4
Jonny_Khomich
29.04.15
✎
07:57
|
(3) это была просто идея. узнавай у того, кто это делал.
|
|||
5
CnupT45rus
29.04.15
✎
08:03
|
Jonny_Khomich, В любом случаи спасибо :)
Друзья, может есть какие нибудь идеи? |
|||
6
alexoren
29.04.15
✎
08:49
|
(3) как это php зашифрован? Первый раз такое слышу
|
|||
7
alexoren
29.04.15
✎
08:50
|
(4) при этом php процедуру php ты никак не выполнишь, она на сервере по запросу выполняется.
|
|||
8
alexoren
29.04.15
✎
08:51
|
(5) ты можешь получить данные из элементов, а потом из 1C послать POST запрос к скрипту на сервере
|
|||
9
alexoren
29.04.15
✎
08:52
|
(8) а это есть в форуме
v8: POST запрос из 1С |
|||
10
alexoren
29.04.15
✎
08:54
|
(0) "Paste();" это функция не php, js. Форма вероятно ajax,
Обращайся к полям и POST запрос. |
|||
11
CnupT45rus
29.04.15
✎
08:59
|
"(3) как это php зашифрован? Первый раз такое слышу"
Как то так:( "nРЃьшJУу>ъЙ—ѕтRя9їЯѓNїЌЏфрЇЗO•Э«џWFЭЋ†Рђc{‘—‹8yн]~"M@?Яй ѓаqGояDTв—H5Њ|>rщЇ.?уЪWџ^ш{0Xш‰з|їЌ¬Г€Ѕ\Lў‹{Й3@ИпEЭ~аswЬtпїют‡Оn^щgџнэ" Шифровали Zend'ом |
|||
12
CnupT45rus
29.04.15
✎
09:07
|
Забыл уточнить, что мне нужно нажать это <input type="submit" value="go">
|
|||
13
alexoren
29.04.15
✎
09:12
|
(11) а всё понял. Да какая нафиг разница? Он на сервере исполняется. <input type="submit" value="go"> - это чисто отправляет форму, делает POST запрос. Выцепляй значения полей и делай POST запрос. Php в данном случае для тебя "чёрный ящик".
|
|||
14
alexoren
29.04.15
✎
09:17
|
(12) и не просто POST запрос, а именно в скрипт action="index.php"
|
|||
15
Котокот
29.04.15
✎
10:01
|
(0) ПолеHTMLДокумента.document.getElementById('IDКНопки').click()
|
|||
16
Котокот
29.04.15
✎
10:02
|
Если ID у кнопки нет, то найти ее перебором по типу элемента, ну или другим способом.
|
|||
17
Котокот
29.04.15
✎
10:03
|
Хотя можно еще проще, там же при нажатии кнопок вызываются функции яваскрипта, можно сразу их вызывать из 1С.
|
|||
18
palpetrovich
29.04.15
✎
10:08
|
Извините что встреваю, не подскажите, а можно-ли избавиться от "ошибок сценария " пр иоткрытии страницы?
http://www.fayloobmennik.net/4835319 |
|||
19
palpetrovich
29.04.15
✎
10:10
|
+(18) не та ссылка :)
|
|||
20
palpetrovich
29.04.15
✎
10:11
|
||||
21
CnupT45rus
29.04.15
✎
10:18
|
Извините что встреваю, не подскажите, а можно-ли избавиться от "ошибок сценария " пр иоткрытии страницы?
Видел на инфостарте статью, поищите там |
|||
22
CnupT45rus
29.04.15
✎
10:22
|
"Если ID у кнопки нет, то найти ее перебором по типу элемента, ну или другим способом."
Котокот, а можно поподробнее |
|||
23
Котокот
29.04.15
✎
10:30
|
(22) ДокументHTML.ПолучитьЭлементыПоИмени (HTMLDocument.GetElementsByName)
ДокументHTML (HTMLDocument) ПолучитьЭлементыПоИмени (GetElementsByName) Синтаксис: ПолучитьЭлементыПоИмени(<Имя>) Параметры: <Имя> (обязательный) Тип: Строка. Имя требующегося элемента (коллекции элементов). Возвращаемое значение: Тип: КоллекцияЭлементовHTML. Описание: Возвращает коллекцию элементов HTML документа с заданным именем. Доступность: Тонкий клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). Примечание: Для элемента HTML имена элементов не чувствительны к регистру. -------------------------------------------------------------------------------- Методическая информация |
|||
24
Котокот
29.04.15
✎
10:30
|
Ищем все элементы с именем button, находим нужный (первый, второй или третий) и кликаем его.
|
|||
25
CnupT45rus
29.04.15
✎
10:41
|
нужно нажать кнопку
<p><input type="submit" value="go"></p> |
|||
26
CnupT45rus
29.04.15
✎
10:48
|
Не робит
//Индусский код БЛИН :( Документ = ЭлементыФормы.ПолеHTMLДокумента.Документ; type="submit"; ЭлементыHTMLДокумента = Документ.GetElementsByName(type); Сообщить (ЭлементыHTMLДокумента); Для Каждого ТекЭлементHTMLДокумента Из ЭлементыHTMLДокумента Цикл ТекЭлементHTMLДокумента.click(); КонецЦикла; |
|||
27
Serginio1
29.04.15
✎
10:58
|
||||
28
Serginio1
29.04.15
✎
11:00
|
function getElementsByAttrib(attrib) {
return document.querySelectorAll('[' + attrib + ']'); } var elements = getElementsByAttrib('type="submit"'); MySubmit = elements[0]'; |
|||
29
lalolo
29.04.15
✎
11:07
|
(26) Элемент можно искать ...ByName, можно ...ById. Чуть выше товарищ написал ...ByAttrib, что судя по всему и является самым подходящим вариантом.
|
|||
30
alexoren
29.04.15
✎
11:13
|
||||
31
Котокот
29.04.15
✎
11:57
|
(26) type="submit";
поменять на type="input"; |
|||
32
Serginio1
29.04.15
✎
13:49
|
(31) См 27
function get_submit_button() { var inputs = document.getElementsByTagName('INPUT'); for(var i=0; i < inputs.length; i++) { var inp = inputs[i]; if(inp.type != 'submit') continue; if(inp.value == 'Invoeren' && inp.name == 'submit') { return inp; break; // exits the loop } } return false; } function click_submit() { var inp = get_submit_button(); if(inp) inp.click(); } |
|||
33
Котокот
29.04.15
✎
14:02
|
(32) А я за что
|
|||
34
Serginio1
29.04.15
✎
14:31
|
(33) ты за GetElementsByName
http://www.wisdomweb.ru/HDOMd/byname.php |
|||
35
CnupT45rus
29.04.15
✎
15:29
|
Пробую так, опять не выходит.
Процедура Кнопка2Нажатие(Кнопка) ScrptCtrl= Новый COMОбъект ("MSScriptControl.ScriptControl"); ScrptCtrl.Language="jscript"; ScrptCtrl.AddCode("function get_submit_button() { |var inputs = document.getElementsByTagName('INPUT'); |for(var i=0; i < inputs.length; i++) { | var inp = inputs[i]; | if(inp.type != 'submit') continue; | if(inp.value == 'go') { | return inp; | break; // exits the loop | } | } | return false; | } | | function click_submit() { | var inp = get_submit_button(); | if(inp) inp.click(); | } | "); КонецПроцедуры |
|||
36
Котокот
29.04.15
✎
15:35
|
(34) А, ну то я имею в виду одно, а пишу другое )
|
|||
37
Serginio1
29.04.15
✎
15:47
|
(35) Зачем тебе скрипт?
Будь проще Документ = ЭлементыФормы.ПолеHTMLДокумента.Документ; ЭлементыHTMLДокумента =Документ.querySelectorAll("[type="""submit"""]"); Для Каждого ТекЭлементHTMLДокумента Из ЭлементыHTMLДокумента Цикл ТекЭлементHTMLДокумента.click(); КонецЦикла; Либо если один такой элемент или первый то ЭлементHTMLДокумента =Документ.querySelector("[type="""submit"""]"); ЭлементHTMLДокумента.click(); |
|||
38
Serginio1
29.04.15
✎
15:52
|
ЭлементHTMLДокумента =Документ.querySelector("input[type="""submit"""]");
ЭлементHTMLДокумента.click(); |
|||
39
CnupT45rus
29.04.15
✎
18:16
|
Serginio1, спасибо огромное, и вообще, всем всем спасибо. Заработало. Рабочий код:
Документ = ЭлементыФормы.ПолеHTMLДокумента.Документ; СТ = "submit"; ЭлементHTMLДокумента = Документ.querySelector("input[type="""+СТ+"""]"); ЭлементHTMLДокумента.click(); А про скрипт, решил попробовать, так как он тоже должен сработать, кот то логически верен, но чего то не хватает |
|||
40
Serginio1
29.04.15
✎
18:27
|
(39) Тьфу ты ну да
ЭлементHTMLДокумента =Документ.querySelector("input[type=""submit""]"); |
|||
41
Котокот
29.04.15
✎
21:13
|
(39) Поздравляем!
|
|||
42
CnupT45rus
29.04.15
✎
21:32
|
Друзья, а вот еще один интересный вопрос. Интересно, а как теперь вытащить текст из html? конкретно "text2": (<textarea class=text cols=75 rows=10 wrap=virtual name=text2></textarea>)
Так не работает, текстHtml = ЭлементыФормы.ПолеHTMLДокумента.Документ.GetElementsByName("text2").ПолучитьТекст(); Сообщить(текстHtml); И понятно что не работает и не должно тк COMОбъект, а как можно? |
|||
43
Serginio1
29.04.15
✎
22:13
|
||||
44
Котокот
29.04.15
✎
22:20
|
текстHtml = ЭлементыФормы.ПолеHTMLДокумента.Документ.GetElementsByName("text2").innerHTML;
|
|||
45
CnupT45rus
29.04.15
✎
22:29
|
"текстHtml = ЭлементыФормы.ПолеHTMLДокумента.Документ.GetElementsByName("text2").innerHTML;"
Поле объекта не обнаружено (innerHTML) |
|||
46
Serginio1
29.04.15
✎
23:00
|
Типа такого
текстHtml = ЭлементыФормы.ПолеHTMLДокумента.Документ.GetElementsByName("text2")[0].innerHTML; http://shpargalkablog.ru/2013/04/value-input-javascript.html |
|||
47
Serginio1
29.04.15
✎
23:13
|
Можно попробовать такую конструкцию
Элементы=ЭлементыФормы.ПолеHTMLДокумента.Документ.GetElementsByName("text2"); iter = Элементы.GetEnumerator(); Текст=""; Если iter.MoveNext() Тогда Текст=iter.Current.innerHTML; КонецЕсли; |
|||
48
CnupT45rus
30.04.15
✎
06:36
|
Попробовал обе конструкции:
Элементы=ЭлементыФормы.ПолеHTMLДокумента.Документ.GetElementsByName("text2"); iter = Элементы.GetEnumerator(); Текст=""; Если iter.MoveNext() Тогда Текст=iter.Current.innerHTML; КонецЕсли; Говорит: {Форма.Форма.Форма(113)}: Метод объекта не обнаружен (GetEnumerator) iter = Элементы.GetEnumerator(); И так: текстHtml = ЭлементыФормы.ПолеHTMLДокумента.Документ.GetElementsByName("text2")[0].innerHTML; Говорит: {Форма.Форма.Форма(105)}: Получение элемента по индексу для значения не определено текстHtml = ЭлементыФормы.ПолеHTMLДокумента.Документ.GetElementsByName("text2")[0].innerHTML; |
|||
49
CnupT45rus
30.04.15
✎
06:48
|
Ребята, получилось так, но это блин опять индусский код какой то получился :)
//Да БЛИН, опять индусский код Документ = ЭлементыФормы.ПолеHTMLДокумента.Документ; Name="text2"; ЭлементыHTMLДокумента = Документ.GetElementsByName(Name); Для Каждого ТекЭлементHTMLДокумента Из ЭлементыHTMLДокумента Цикл АВ = ТекЭлементHTMLДокумента.Value; Сообщить (АВ); КонецЦикла; |
|||
50
Serginio1
30.04.15
✎
10:40
|
(49) 1C не поддерживает свойства массивы.
По аналогии с Net можно попробовать ЭлементыHTMLДокумента.get_Item(0) или ЭлементыHTMLДокумента.getItem(0 Конструкция Для Каждого ТекЭлементHTMLДокумента Из на самом деле вызывает [DISPID=-4] для получения IEnumVARIANT |
|||
51
mzelensky
30.04.15
✎
10:46
|
Чет вы как-то мудрите сильно...в большенстве случаев делается все гораздо проще (хотя конечно все зависит от конкретного случая).
Открываешь браузер "Огненая Лисичка", включаешь там анализатор\дебагер, заходишь на нужную тебе страничку и тыкаешь нужную кнопку. Далее смотришь какие запросы формируются. СКОРЕЕ всего увидишь там нужную тебе ссылку\команду которая запускает нужное действие. Ну и далее запускаешь это все в 1С-ке. |
|||
52
Serginio1
30.04.15
✎
10:47
|
Судя по https://developer.mozilla.org/en-US/docs/Web/API/NodeList
Methods item ( idx )Returns an item in the list by its index, or null if the index is out-of-bounds; can be used as an alternative to simply accessing nodeList[idx] (which instead returns undefined when idx is out-of-bounds). |
|||
53
mzelensky
30.04.15
✎
10:48
|
(51) + Я таким макаром с десятокдругой сайтов распарсил\обработал :)
Но повторюсь - все зависит от конкретного сайта и более детально нужно смотреть по факту |
|||
54
Serginio1
30.04.15
✎
10:49
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |