|
Программное нажатие кнопок на форме | ☑ | ||
---|---|---|---|---|
0
Kuklachel
10.09.13
✎
11:42
|
Добрый день. Такая задача. Есть форма справочника, в которой введен кадастровый номер земельного участка. Нужно, по кнопке скопировать в буфер обмена этот номер, открыть сайт РосРеестра, 4 раза нажать TAB, вставить из буфера номер и нажать Enter.
Пока не знаю как скопировать в буфер, полагаю, что через: Wsh=Новый COMОбъект("WScript.Shell"); Wsh.SendKeys("^c"); Делаю так: открываю в форме, кнопкой, сайт РосРеестра через макет: <SCRIPT>document.location.href = "http://maps.rosreestr.ru";</SCRIPT> Далее, мне нужно выполнить следующее: Wsh = Новый COMОбъект("Wscript.shell"); Wsh.SendKeys("{TAB}"); Wsh.SendKeys("{TAB}"); Wsh.SendKeys("{TAB}"); Wsh.SendKeys("{TAB}"); Wsh.SendKeys("^v"); Wsh.SendKeys("{ENTER}"); Внимание вопрос! Подскажите, пожалуйста. Как скопировать в буфер значение реквизита и при каком событии отрабатывать нажатие кнопок? |
|||
1
Тролль главный
10.09.13
✎
11:43
|
извращенцы
|
|||
2
Kuklachel
10.09.13
✎
11:45
|
А что делать.
|
|||
3
shamannk
10.09.13
✎
11:45
|
(0) Делается все проще. В моцк пользователя вживляется чип который говорит ему нажать кнопки.
|
|||
4
Галахад
гуру
10.09.13
✎
11:47
|
А если Инет тормозить будет? А ты уже все кнопки нажал?
|
|||
5
Kuklachel
10.09.13
✎
11:48
|
Ну можно использовать "ПодключитьОбработчикОжидания" с запасом.
|
|||
6
Infsams654
10.09.13
✎
11:49
|
(0) йё, зачем кнопки то нажимать? Есть же уже html-документ, заполняй чем хочеш
|
|||
7
Kuklachel
10.09.13
✎
11:53
|
(6) А как в HTML документе это проделать?
|
|||
8
Kuklachel
10.09.13
✎
13:47
|
Неужели нет решения?
|
|||
9
Asmody
10.09.13
✎
14:03
|
document = ЭлементыФормы.ПолеHTMLДокумента1.Документ;
document.getElementById('serchTextbox').value="qwerty"; document.getElementById('serchButton').click(); |
|||
10
Asmody
10.09.13
✎
14:04
|
идентификаторы только посмотри в исходнике документа
|
|||
11
Kuklachel
10.09.13
✎
16:36
|
(10)Спасибо за подсказку.Делаю вот так:
Document = Элементы.Карта.Документ; Document.getElementById("searchTextbox").value="qwerty"; Document.getElementById("searchButton").click(); Выдается ошибка: Значение не является значением объектного типа (value) Document.getElementById("searchTextbox").value="qwerty"; |
|||
12
Asmody
10.09.13
✎
16:45
|
(11) посмотри в отладчике свойства Document.getElementById("searchTextbox")
|
|||
13
Kuklachel
10.09.13
✎
17:11
|
Странно, в скрипте сайта:
<div> <input id="searchTextbox" class="searchTextbox" type="text" title="Поиск земельных участков и единиц кадастрового деления" value=""> <a id="searchButton" class="searchButton" onclick="searchButtonClick(); return false;"> </a> </div> То есть ID верные. А в отладчике Document.getElementById("searchTextbox") Неопределено. |
|||
14
vvp91
10.09.13
✎
17:15
|
Капитан очевидность - getElementById не ищет по классам.
|
|||
15
Kuklachel
10.09.13
✎
17:17
|
Ясно, что ищет по ID
|
|||
16
vvp91
10.09.13
✎
17:18
|
Не ищет - к тегу input аттрибут id не применяется (rfc).
|
|||
17
vvp91
10.09.13
✎
17:19
|
упс!!!
к тегу input атрибут должен применяться. поспешил. |
|||
18
Kuklachel
10.09.13
✎
17:46
|
Так как же быть, ID тот, а значение не передается? Помогите, пожалуйста.
|
|||
19
Kuklachel
10.09.13
✎
18:52
|
Удалось добиться свойства Document.getElementById("searchTextbox") отличного от Неопределено. Теперь в отладчике, напротив searchTextbox, стоит: Ошибка чтения значения. В чем может быть проблема?
|
|||
20
Kuklachel
10.09.13
✎
19:04
|
||||
21
Infsams654
11.09.13
✎
08:11
|
(20) не обращай внимание. Например, если выборку из запроса так смотреть, то тоже "Ошибка чтения значения"
|
|||
22
Kuklachel
11.09.13
✎
08:57
|
Хорошо, если не обращать внимания, то ошибка: Поле объекта не обнаружено (value)
Document.getElementById("searchTextbox").value = "qwerty"; |
|||
23
Infsams654
11.09.13
✎
09:02
|
(22) так посмотри в отладчике
Изм = Document.getElementById("searchTextbox"); что там есть на самом деле |
|||
24
PLUT
11.09.13
✎
09:04
|
(0) поимей AutoIT
|
|||
25
Kuklachel
11.09.13
✎
09:12
|
А там до сих пор Неопределено...
|
|||
26
Kuklachel
11.09.13
✎
09:14
|
А, нет Doc = Document.getElementById("searchTextbox");
Doc - Ошибка чтения значения. |
|||
27
Kuklachel
11.09.13
✎
10:31
|
Может быть сайт нужно открывать не через:
<SCRIPT>document.location.href = "http://maps.rosreestr.ru";</SCRIPT>; ? |
|||
28
Asmody
11.09.13
✎
10:36
|
(27) документ-то загружен к тому моменту, когда ты к его элементам обращаешься?
|
|||
29
Kuklachel
11.09.13
✎
10:44
|
На форме он появляется до точки останова.
&НаКлиенте Процедура ПриОткрытии(Отказ) ПодключитьОбработчикОжидания("Нажатие", 3); КонецПроцедуры &НаКлиенте Процедура Нажатие() Document = Элементы.Карта.Документ; Doc = Document.getElementById("searchTextbox"); Doc.value = "qwerty"; Document.getElementById("searchButton").click(); КонецПроцедуры |
|||
30
shpioleg
11.09.13
✎
10:52
|
(29) У Document тип у тебя какой? Сдается мне, ты рано приступил к getElementById.
|
|||
31
Asmody
11.09.13
✎
10:56
|
Процедура ПриОткрытии()
ЭлементыФормы.ПолеHTMLДокумента1.Перейти("http://maps.rosreestr.ru/"); КонецПроцедуры Процедура КнопкаВыполнитьНажатие(Кнопка) document = ЭлементыФормы.ПолеHTMLДокумента1.Документ; if document.readyState = "complete" then document.getElementById("searchTextbox").value="61:6:10104:12"; document.getElementById("searchButton").click(); endif; КонецПроцедуры проверил - работает |
|||
32
Asmody
11.09.13
✎
10:57
|
(31) парсер испортил url, но смысл понятен
|
|||
33
Odavid
11.09.13
✎
10:58
|
(31) а КнопкаВыполнитьНажатие кто нажимает?
|
|||
34
Kuklachel
11.09.13
✎
12:17
|
(31) А URL должен выглядеть именно так как ты написал? Т.е. с атрибутами target, rel, class?
И еще, в своем решении ты обошелся без макета? |
|||
35
Kuklachel
11.09.13
✎
12:37
|
Какой аналог ЭлементыФормы.ПолеHTMLДокумента1.Перейти "Перейти" в 1с 8.2 ?
|
|||
36
Kuklachel
11.09.13
✎
14:15
|
Я правильно понял, что в тонком клиенте этот вариант не получится?
|
|||
37
shpioleg
11.09.13
✎
14:39
|
(35) РеквизитФормыПутьКДанным = "forum.mista.ru";
|
|||
38
Infsams654
11.09.13
✎
15:00
|
(37) РеквизитФормыПутьКДанным = "v8: Программное нажатие кнопок на форме;;
|
|||
39
Kuklachel
11.09.13
✎
17:43
|
То есть в моем случае это: Элементы.КартаЗУ.ПутьКДанным = "http://maps.rosreestr.ru/";
Ругается: Ошибка при установке значения атрибута контекста (ПутьКДанным) Элементы.КартаЗУ.ПутьКДанным = "http://maps.rosreestr.ru/"; по причине: Недопустимое значение |
|||
40
Зойч
11.09.13
✎
17:46
|
Проще послать пост запрос на сайт и обработать полученные данные
|
|||
41
Asmody
11.09.13
✎
17:50
|
(40) не проще. там javascript
|
|||
42
Kuklachel
11.09.13
✎
18:05
|
(41) Виктор, у меня получился твой вариант на 8.1 ,вот не могу его заточить под УФ 8.2
|
|||
43
Asmody
11.09.13
✎
18:27
|
чего не получается?
|
|||
44
Kuklachel
11.09.13
✎
18:32
|
У тебя:
ЭлементыФормы.ПолеHTMLДокумента1.Перейти("http://maps.rosreestr.ru/"); В 8.2 нет метода перейти, в таком контексте. На сколько я понял, мне нужно: Элементы.КартаЗУ.ПутьКДанным = "http://maps.rosreestr.ru/"; но выдается ошибка: Ошибка при установке значения атрибута контекста (ПутьКДанным) Элементы.КартаЗУ.ПутьКДанным = "http://maps.rosreestr.ru/";; по причине: Недопустимое значение |
|||
45
Asmody
11.09.13
✎
18:46
|
(44) Элементы.КартаЗУ.Документ.navigate(НужныйУрл);
|
|||
46
Kuklachel
11.09.13
✎
19:01
|
Ругается: Метод объекта не обнаружен (navigate)
Элементы.КартаЗУ.Документ.navigate("http://maps.rosreestr.ru/"); Пробовал и с большой и с маленькой буквы. |
|||
47
shpioleg
11.09.13
✎
19:39
|
(39) Зачем Элементы.КартаЗУ?
Просто присвой адрес перехода Реквизиту формы который отвечает за ПутьКДанным в ПолеHTML. У тебя у поля HTML документа есть ПутьКДанным которому ты присвоил строковый реквизит формы, например, РеквизитФормыПутьКДаннымХТМЛСтраницы. Ему и присваивай. Или JS пробовать еще document.location = ... То что тебе до этого писали про getElement работает под всеми клиентами. Проверь тип у document. Это или КОМОбъект или ВнешнийОбъект. Ты с ним должен работать через яваскрипт. |
|||
48
shpioleg
11.09.13
✎
19:46
|
Вот тоже работает под тонким. Под Веб не могу сейчас проверить.
Элементы.Карта.Document.location.href = "v8: Программное нажатие кнопок на форме;; |
|||
49
Kuklachel
12.09.13
✎
09:29
|
Спасибо за помощь.
Сделал так: &НаКлиенте Процедура ПриОткрытии(Отказ) Элементы.КартаЗУ.Документ.location.href = ("http://maps.rosreestr.ru/"); КонецПроцедуры &НаКлиенте Процедура НайтиУч(Команда) document = Элементы.КартаЗУ.Документ; if document.readyState = "complete" then document.getElementById("searchTextbox").value="61:06:0010104:44"; document.getElementById("searchButton").click(); endif; КонецПроцедуры Снова ошибка: {Справочник.ОбъектыНедвижимости.Форма.ФормаЗУНаКарте.Форма(22)}: Поле объекта не обнаружено (value) document.getElementById("searchTextbox").value="61:06:0010104:44"; Точно такой же обработчик нажатия кнопки в 8.1 работает на ура. В чем же дело? |
|||
50
Kuklachel
12.09.13
✎
11:04
|
У Document.getElementById("searchTextbox") Значение - COMОбъект, но если раскрыть его, то Значение - "Ошибка чтения значения".
|
|||
51
shpioleg
12.09.13
✎
11:32
|
(50) А у тебя сайт росреестр в ХТМЛ поле без ошибок открывается?
У меня 3 ошибки в скриптах выдает. Но поиск все равно работает.Попробуй у поля ХТМЛ в событии ДокументСформирован прописать процедуру и в ней делать присвоение и клик.
|
|||
52
Kuklachel
12.09.13
✎
11:44
|
Как удалось выяснить, первый вариант отлично работает в "толстом клиенте", "тонком", карта отображается без ошибок, а поиск не работает.
Добавил в "ДокументСформирован" присвоение и клик (так даже удобней, без кнопки), тоже выдаются ошибки, правда 2. Но поиск работает. |
|||
53
Kuklachel
12.09.13
✎
12:14
|
Ну если все работает, может просто отключить сообщения об ошибках? На форуме нашел обсуждение этой темы: v8: Возможно ли для ПолеHTMLДокумента отключить сообщения об ошибке сценария?
Но у меня вопрос, где у ПоляHTMLДокумента событие onreadystatechange, в 8.1 оно есть, но в 8.2 выбор ограничен тремя событиями. |
|||
54
shpioleg
12.09.13
✎
13:34
|
(53) Это полеHTML прямо "черный ящик какой-то". Толкового описания не найдешь.
Кстати, Asmody, удалось разобраться почему 2 раза срабатывает событие ДокументСформирован? |
|||
55
Kuklachel
12.09.13
✎
15:18
|
Так все-таки, как можно установить обработчик события ПолеHTMLДокумента onreadystatechange?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |