AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.08.2009, 12:07   #1  
natalias_imported is offline
natalias_imported
Участник
 
3 / 10 (1) +
Регистрация: 10.08.2009
Уважаемые форумчане, у меня возникла следующая проблема.
Необходимо из Nav открыть интернет-страницу.
Для этого создаю переменную Аutomation'Microsoft Internet Controls'.InternetExplorer и пытаюсь использовать ее методы.
Проблема возникает при попытке передать на страницу данные из Nav, т.е.

appExpl.Document().forms(0).elements(1).value:='XXX';

Ругается на вызов appExpl.Document()
Ошибка следующая: "Возвращаемое значение должно использоваться для этой функции"

Может кто-то уже сталкивался с этой проблемой и смог ее решить?
Старый 10.08.2009, 12:17   #2  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (3) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от natalias Посмотреть сообщение
Необходимо из Nav открыть интернет-страницу.
Для этого создаю переменную Аutomation'Microsoft Internet Controls'.InternetExplorer и пытаюсь использовать ее методы.
Проблема возникает при попытке передать на страницу данные из Nav, т.е.

appExpl.Document().forms(0).elements(1).value:='XXX';

Ругается на вызов appExpl.Document()
Ошибка следующая: "Возвращаемое значение должно использоваться для этой функции"

Может кто-то уже сталкивался с этой проблемой и смог ее решить?
А чем отличается работа кнопки "Гиперссылка" например на карточке Клиента на закладке Контакты?
__________________
-------------------------------------------
С уважением, RedFox
Старый 10.08.2009, 12:24   #3  
natalias_imported is offline
natalias_imported
Участник
 
3 / 10 (1) +
Регистрация: 10.08.2009
Отличается тем, что после открытия страницы нужно передать туда данные из Nav (например, авторизироваться).
Именно открытие страницы происходит без проблем.
Старый 10.08.2009, 15:50   #4  
.Quattro. is offline
.Quattro.
Участник
Лучший по профессии 2009
 
194 / 22 (1) +++
Регистрация: 22.05.2006
Вы пошли не тем путем.
Для того, чтобы авторизоваться, не нужно заполнять форму. Необходимо передать необходмые парамеры на страницу, на которой происходит проверка логина и пароля.

К примеру. Есть страница для авторизации user.php.
На ней 2 поля - UserName и Password
При Submit'е формы запускается login.php.

Из нава можно попробовать открыть страницу след. образом:
login.php?username=ИмяПользователя&password=Пароль
Тут параметры страницы совпадают с именами полей на форме user.php

Пирмерно так.
Если не получится (сам я такого не делал), то рекомендую почитать про http-get и http-post. Возможно, что найдете решение.
Старый 20.08.2009, 14:09   #5  
TAM is offline
TAM
Участник
 
30 / 10 (1) +
Регистрация: 15.06.2007
Скажите, а кто-нибудь пробовал вытянуть в Навижн что-нибудь из окна браузера?
Как это делается?
Я пытался сделать так:
Ie.Document.body.innerText
где Ie - Automation 'Microsoft Internet Controls'.InternetExplorer
ругается на неопределенную переменную body
Старый 21.08.2009, 11:52   #6  
.Quattro. is offline
.Quattro.
Участник
Лучший по профессии 2009
 
194 / 22 (1) +++
Регистрация: 22.05.2006
Страница скорее всего еще не загрузилась, а вы уже пытаетесь получить ее содержимое.
После Navigate SLEEP() на несколько секунд поставьте и проверьте.
Старый 21.08.2009, 12:00   #7  
TAM is offline
TAM
Участник
 
30 / 10 (1) +
Регистрация: 15.06.2007
Sleep есть. Написано вот так после Navigate

IF Ie.ReadyState<4 THEN REPEAT
SLEEP(1000);
UNTIL (Ie.ReadyState < 4);

Ну у меня вообще не получается скомпилировать модуль с такой строкой
txt := FORMAT(Ie.Document.body.innerText;

может у кого то есть пример работы с браузером?
Заранее благодарен.
Старый 21.08.2009, 17:23   #8  
.Quattro. is offline
.Quattro.
Участник
Лучший по профессии 2009
 
194 / 22 (1) +++
Регистрация: 22.05.2006
Код:
IE: Automation 'Microsoft Internet Controls'.InternetExplorer	
MSHTML: Automation 'Microsoft HTML Object Library'.HTMLDocument	
HTMLBody: Automation 'Microsoft HTML Object Library'.HTMLBody	
---------------------
CREATE(IE, TRUE);
IE.Navigate('www.ya.ru');
WHILE IE.ReadyState<4 DO
   SLEEP(10);

MSHTML := IE.Document;
HTMLBody := MSHTML.body;
MESSAGE(HTMLBody.innerText);
IE.Quit;
CLEAR(MSHTML);
CLEAR(IE);
Старый 21.08.2009, 17:53   #9  
TAM is offline
TAM
Участник
 
30 / 10 (1) +
Регистрация: 15.06.2007
Это работает!
Еще раз большое спасибо!
Старый 21.08.2009, 21:36   #10  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,291 / 203 (9) ++++++
Регистрация: 11.01.2006
настоящее спасибо - плюс к рейтингу
Старый 24.08.2009, 15:14   #11  
TAM is offline
TAM
Участник
 
30 / 10 (1) +
Регистрация: 15.06.2007
Разобрался как увеличить рейтинг. Выполнено
Старый 16.10.2013, 13:28   #12  
zuzka is offline
zuzka
Участник
Аватар для zuzka
 
131 / 10 (1) +
Регистрация: 29.07.2013
Есть проблема в работе с браузером из Nav.

Существующий код открывает IE, вводит логин и пароль пользователя и клацает по кнопке.

Код:
iExplorer	Automation	'Microsoft Internet Controls'.InternetExplorer	
HTMLDoc	Automation	'Microsoft HTML Object Library'.HTMLDocument	
HTMLInputElem	Automation	'Microsoft HTML Object Library'.HTMLInputElement
_________________________________________________________________________________

SiteAdress := WebSetup."Web Site Adress";

UserLogin := WebSetup.Login;
UserPassword := WebSetup."Open Password";

CLEAR(iExplorer);
IF NOT CREATE(iExplorer, TRUE, TRUE) THEN
  ERROR(Text005);
iExplorer.Visible(TRUE);
iExplorer.Navigate(SiteAdress); // open url
WHILE iExplorer.Busy DO;        // wait for full load

HTMLDoc := iExplorer.Document;   // copy html page
WHILE iExplorer.Busy DO;        // wait fo full copy

// set login
HTMLInputElem := HTMLDoc.getElementById('LoginUserName');
HTMLInputElem.value := UserLogin;

// set password
HTMLInputElem := HTMLDoc.getElementById('LoginPassword');
HTMLInputElem.value := UserPassword;

// enter site
HTMLInputElem := HTMLDoc.getElementById('NAV_ENTER');
HTMLInputElem.click;
Все работает отлично - однако у пользователя с IE 10 выкидывает ошибку:
"Не удалось вызвать член getElementByID: Исключение из HRESULT: 0x800A01B6".
Кто-нибудь сталкивался с такими вещами?
__________________
Как только вы проиграете, все ваши прошлые победы забудут.
Старый 16.10.2013, 15:33   #13  
zuzka is offline
zuzka
Участник
Аватар для zuzka
 
131 / 10 (1) +
Регистрация: 29.07.2013
На данный момент удалось найти информацию что дело не в версии IE а в версии ОС: данная ошибка вылетает на машинах под Windows 7/2008, на XP такого нет.
__________________
Как только вы проиграете, все ваши прошлые победы забудут.
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:34.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.