Работа 1С 8.3 с Internet Explorer
Интеграция информационной системы с сторонними приложениями — очень важная и интересная задача. Платформа 1С не осталась в стороне и приложила множество усилий для того, чтобы решения на базе 1С могли уверенно работать с другими продуктами.
Самый популярный вид взаимодействия — интеграция с приложениями MS Windows: Excel, Word, Acces, Outlook, SQL и так далее. Среди этих программ интернет-браузер Internet Explorer — приложение, которое установлено на любой машине с ОС Windows. Рассмотрим на примере взаимодействие платформы 1С с браузером Internet Explorer с помощью COM соединения.
Вход в почту web-страницы из 1С
Для нашего примера напишем небольшую обработку, которая будет подключаться к веб-браузеру, вводить логин и пароль пользователя и нажимать кнопку «войти», а также иметь кнопку выхода из системы.
Первое действие — подключение к приложению, создание com-объекта:
IE = Новый COMОбъект(«InternetExplorer.Application»);
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания — попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
После этого с помощью метода Navigate() переходим на необходимую страницу сайта:
Но загрузка веб-страниц не происходит мгновенно, необходимо дождаться полной загрузки документа (статус > 4):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Windows Script Host — объект InternetExplorer и WebBrowser
1. Создание объекта
Internet Explorer включает два ActiveX-объекта: WebBrowser Object и InternetExplorer Object. Элемент управления WebBrowser может быть интегрирован непосредственно в форму VB или размещён на Web-странице, а объект InternetExplorer доступен только через механизм OLE Automation. Функциональность WebBrowser меньше по сравнению с функциональностью InternetExplorer. Упрощенно говоря, WebBrowser — это собственно окно просмотра документа в браузере, а InternetExplorer — это весь браузер, включая меню, панели инструментов, строку состояния и прочее. Оба объекта находятся в библиотеке «Microsoft Internet Controls» (shdocvw.dll в каталоге system32). Также может пригодиться библиотека «Microsoft HTML Object Library» (mshtml.dll там же) — это именно та среда, с которой оперируют скрипты на языках JavaScript и VBScript на Web-страницах. Примечание: приведённое ниже описание свойств, методов и событий не является до конца исчерпывающим (исчерпывающее описание можно найти в MSDN) и предназначено, в первую очередь, для работы с обозревателем как с OLE-Automation сервером из различных скриптовых сред или Visual Basic.
Пример создания OLE-объекта InternetExplorer:
Set objIE = CreateObject(«InternetExplorer.Application»)
Пример размещения ActivX-объекта WebBrowser на Web-странице:
2. Свойства
Применение некоторых свойств.
Свойство | Описание | Доступно |
---|---|---|
Application | Возвращает сам объект. Только чтение. | InternetExplorer, WebBrowser |
Visible | Управляет видимостью окна обозревателя (булево). Чтение и запись. По умолчанию — False. | InternetExplorer, WebBrowser |
AddressBar | Управляет отображением адресной строки обозревателя (булево). Чтение и запись. По умолчанию — True. | InternetExplorer |
MenuBar | Управляет отображением строки меню обозревателя (булево). Чтение и запись. По умолчанию — True. | InternetExplorer |
ToolBar | Управляет отображением панелей инструментов обозревателя (булево). Чтение и запись. По умолчанию — True. | InternetExplorer |
StatusBar | Управляет отображением строки состояния обозревателя (булево). Чтение и запись. По умолчанию — True. | InternetExplorer |
FullScreen | Управляет отображением окна обозревателя в полный экран (булево). Чтение и запись. По умолчанию — False. | InternetExplorer |
TheaterMode | Управляет отображением окна обозревателя в режиме театра (булево). Чтение и запись. По умолчанию — False. Примечание: переход в режим театра и обратно интерактивно осуществляется с помощью команды меню «Вид» — «Во весь экран» или клавишей «F11». | InternetExplorer |
Resizable | Управляет возможностью изменения размеров окна обозревателя (булево). Чтение и запись. По умолчанию — True. | InternetExplorer |
Silent | Управляет возможностью выдачи обозревателем диалоговых окон о критических ошибках и сообщений безопасности (булево). Чтение и запись. По умолчанию — False (диалоговые окна не запрещены). | InternetExplorer, WebBrowser |
Offline | Управляет переводом обозревателя в режим Offline (булево). Чтение и запись. По умолчанию — False. В режиме Offline обозреватель принудительно отдаёт предпочтение чтению HTML-страниц из локального кэша. | InternetExplorer, WebBrowser |
RegisterAsBrowser | Управляет регистрацией объекта как «top-level browser» (булево). Чтение и запись. По умолчанию — False. Архитектура Microsoft Internet Explorer допускает наличие нескольких экземпляров объекта WebBrowser. Например, веб-страница с фреймами может содержать объект WebBrowser для каждого фрейма. Термин «top-level» означает объект WebBrowser, который является родительским для всех других объектов WebBrowser. | InternetExplorer, WebBrowser |
Parent | Возвращает ссылку на родительский объект. Только чтение. | InternetExplorer, WebBrowser |
Container | Возвращает ссылку на объект-контейнер. Только чтение. | InternetExplorer, WebBrowser |
TopLevelContainer | Возвращает признак того, является ли объект «top-level» контейнером (булево). Только чтение. | InternetExplorer, WebBrowser |
RegisterAsDropTarget | Управляет регистрацией объекта как принимающего данные при операциях «drag-and-drop» (булево). Чтение и запись. По умолчанию — False. | InternetExplorer, WebBrowser |
StatusText | Устанавливает или возвращает текст строки состояния обозревателя. Чтение и запись. | InternetExplorer |
Height | Управляет высотой окна обозревателя (в пикселах). Чтение и запись. | InternetExplorer, WebBrowser |
Width | Управляет шириной окна обозревателя (в пикселах). Чтение и запись. | InternetExplorer, WebBrowser |
Top | Управляет положением верхнего края окна обозревателя. Чтение и запись. | InternetExplorer, WebBrowser |
Left | Управляет положением левого края окна обозревателя. Чтение и запись. | InternetExplorer, WebBrowser |
Name | Возвращает имя объекта, в котором содержится элемент управления WebBrowser. Только чтение. | InternetExplorer |
FullName | Возвращает полный путь к исполняемому файлу Microsoft Internet Explorer. Только чтение. | InternetExplorer |
Path | Возвращает полный путь к каталогу исполняемомого файла Microsoft Internet Explorer. Только чтение. | InternetExplorer |
Type | Возвращает тип объекта, содержащегося в документе (строка). Только чтение. | InternetExplorer, WebBrowser |
LocationName | Возвращает имя отображаемого в данный момент ресурса (строка). Только чтение. Если отображается HTML-страница, имя ресурса — заголовок этой страницы. Если отображается папка или файл, имя ресурса — полный путь в UNC-формате. | InternetExplorer, WebBrowser |
LocationURL | Возвращает URL отображаемого в данный момент ресурса (строка). Только чтение. Если отображается папка или файл, URL ресурса — полный путь в UNC-формате. | InternetExplorer, WebBrowser |
HWND | Возвращает handle главного окна Microsoft Internet Explorer (целое число, Long). Только чтение. | InternetExplorer |
Busy | Возвращает булево значение, сигнализирующее о том, занят ли объект операцией навигации или скачивания. Только чтение. Если объект занят, можно применить метод Stop для прерывания операции. | InternetExplorer, WebBrowser |
ReadyState | Возвращает значение, сигнализирующее состояние готовности объекта. Только чтение. Возможные значения: 0 — не инициализирован, 1 — загрузка, 2 — загрузка завершена, 3 — доступны не все данные (это то состояние, когда браузер позволяет просматривать страницу в интерактивном режиме, хотя загружены ещё не все компоненты; начиная с этого момента HTML-код вполне пригоден для обработки), 4 — готово. | InternetExplorer, WebBrowser |
Document | Возвращает объект документа (объект, функционально эквивалентный объекту документа, используемому в скриптах на Web-страницах). Только чтение. | InternetExplorer, WebBrowser |
3. Методы
Применение некоторых методов.
Метод | Описание | Доступно |
---|---|---|
Stop | Отменяет любую незаконченную операцию навигации или скачивания и останавливает любые динамические элементы страницы, такие, как фоновую музыку и анимацию. | InternetExplorer, WebBrowser |
Quit | Закрывает объект. | InternetExplorer |
ExecWB | Выполняет команду и возвращает статус выполнения. | InternetExplorer, WebBrowser |
QueryStatusWB | Возвращает статус указанной команды. | InternetExplorer |
ShowBrowserBar | Показывает или скрывает указанную панель обозревателя. | InternetExplorer |
ClientToWindow | Конвертирует клиентские координаты точки (от левого верхнего угла клиентской области окна) в координаты окна (от левого верхнего угла окна). Первый параметр — целое число, х-координата точки в клиентской области, после вызова ClientToWindow содержит х-координату точки в координатах окна. Второй параметр — аналогично, y-координата. | InternetExplorer |
GoBack | Осуществляет навигацию на один шаг назад по истории. | InternetExplorer, WebBrowser |
GoForward | Осуществляет навигацию на один шаг вперёд по истории. | InternetExplorer, WebBrowser |
GoHome | Осуществляет навигацию на домашнюю страницу. | InternetExplorer, WebBrowser |
GoSearch | Осуществляет навигацию на страницу поиска. | InternetExplorer, WebBrowser |
Navigate | Осуществляет навигацию к указанному ресурсу. | InternetExplorer, WebBrowser |
Navigate2 | Аналогичен методу Navigate, но параметр PostData имеет тип массива SAFEARRAY. Кроме того, ресурс может быть представлен в виде PIDL (Pointer to an Item Identifier List) в пространстве имён оболочки Windows. | InternetExplorer, WebBrowser |
Refresh | Обновляет (перезагружает) страницу. Чтобы избежать обновления ресурса из дискового кэша браузера, следует использовать соответствующие параметры при предшествующих вызовах методов Navigate или Navigate2. | InternetExplorer, WebBrowser |
Refresh2 | Аналогичен методу Refresh, но имеет единственный необязательный параметр, который задаёт «уровень» обновления. | InternetExplorer, WebBrowser |
3.1. Метод ExecWB
Выполняет команду и возвращает статус выполнения. Доступен в InternetExplorer и WebBrowser.Параметры:
- CmdID — идентификатор команды.
- CmdExecOpt — опции команды.
- PvaIn — необязательный, Variant, входные аргументы команды.
- PvaOut — необязательный, Variant, выходные аргументы команды.
Некоторые возможные значения параметра «CmdID» (подробнее — см. в MSDN описание «OLECMDID enumeration»):
1 | Меню «Файл» — «Открыть. «. |
4 | Меню «Файл» — «Сохранить как. «. |
6 | Меню «Файл» — «Печать. «. |
7 | Меню «Файл» — «Предварительный просмотр. «. |
8 | Меню «Файл» — «Параметры страницы. «. |
Возможные значения параметра «CmdExecOpt»:
0 | Команда исполняется так, как принято по умолчанию. |
1 | Перед выполнением выводится окно диалога или дополнительных настроек. |
2 | Не запрашивать ввод пользователя (не задается никаких вопросов). |
3 | Выводится справка по запрошенному действию, но сама команда не выполняется. |
Пример:
Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1 objIE.ExecWB 6, 1 ‘выдача диалога печати ‘objIE.ExecWB 6, 2 ‘немедленная печать
3.2. Метод QueryStatusWB
Возвращает статус указанной команды. Доступен в InternetExplorer.
Параметры: CmdID — идентификатор команды.
Возможные значения флагов в возвращаемом значении (возвращаемое значение — сумма флагов):
1 | Команда поддерживается. |
2 | Команда доступна и разрешена. |
4 | Команда является переключателем и в данный момент включена. |
8 | Команда зарезервирована для будущего использования. |
Пример:
Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1 If objIE.QueryStatusWB(6) = 2+1 Then objIE.ExecWB 6, 1 ‘выдача диалога печати End If
3.3. Метод ShowBrowserBar
Показывает или скрывает указанную панель обозревателя. Доступен в InternetExplorer.
Параметры:
- vClsID — строка, идентификатор класса панели.
- bShow — необязательный, булево. False — скрыть панель, True — показать.
Некоторые возможные значения параметра «vClsID»:
Search |
Favorites |
History |
Folders |
Пример:
Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1 objIE.ShowBrowserBar «<30d02401-6a81-11d0-8274-00c04fd5ae38>«, True
3.4. Метод Navigate
Осуществляет навигацию к указанному ресурсу (инициирует операцию открытия документа). Доступен в InternetExplorer и WebBrowser.
Параметры:
- Url — строка, определяющая URL или полный путь к файлу.
- Flags — необязательный. Набор флагов, определяющий, нужно ли добавлять ресурс в историю, записывать/читать ресурс в/из кэша, отображать ресурс в новом окне.
- TargetFrameName — необязательный. Строка, имя фрейма HTML, в котором следует отобразить ресурс. Если такого фрейма не существует, откроется новое окно.
- PostData — необязательный. Позволяет передать на Web-сервер данные, полученные в результате заполнения формы, если этот сервер требует HTTP — транзакции POST. Если этот параметр не определён, метод осуществляет HTTP GET транзакцию. Если указанный Url — не HTTPURL, параметр игнорируется.
- Headers — необязательный. Значение, определяющее дополнительные HTTP заголовки для отправки на сервер. Эти заголовки добавляются к заголовкам Microsoft Internet Explorer по умолчанию. Заголовки могут определять тип данных, код состояния и т.п. Если указанный Url — не HTTPURL, параметр игнорируется.
Возможные значения флагов параметра «Flags»:
1 | navOpenInNewWindow. Открыть ресурс в новом окне. |
2 | navNoHistory. Не добавлять ресурс в историю просмотренных. Текущая страница добавляется в историю. |
4 | navNoReadFromCache. Не загружать страницу из кэша. |
8 | navNoWriteToCache. Не сохранять страницу в кэше. |
16 | navAllowAutosearch. Если навигация не удалась, осуществляется попытка навигации к корневому домену (.com, .edu и т.д.). Если и эта попытка не удалась, запускается поиск. |
32 | navBrowserBar. Пытается использовать для навигации текущую панель браузера, если это возможно. |
64 | navHyperlink. Если навигация не удалась, следуя гиперссылке, ресурс будет связан с псевдонимом с использованием флага BINDF_HYPERLINK. |
Возможные значения параметра «TargetFrameName» (кроме собственно имени конкретного фрейма):
_BLANK | Загружать ресурс в новое безымянное окно. |
_SELF | Загружать документ в тот же фрейм, в котором находится ссылающийся на него документ. |
_PARENT | Загружать документ в непосредственный родительский фрейм этого фрейма в наборе фреймов FRAMESET. Это значение эквивалентно _SELF, если текущий фрейм не имеет родительского фрейма. |
_TOP | Загружать документ в полное окно (закрывая все остальные фреймы). Это значение эквивалентно _SELF, если у текущего фрейма нет родительского фрейма. |
Пример:
Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1
3.5. Метод Refresh2
Аналогичен методу Refresh, но имеет единственный необязательный параметр, который задаёт «уровень» обновления. Заголовок «pragma:nocashe» запрещает серверу возвращать кэшированную копию документа, обеспечивая самую свежую информацию, однако этот заголовок может послужить причиной проблем на некоторых серверах. Возможные значения параметра:
0 | REFRESH_NORMAL. Обновить без отправки HTTP-заголовка «pragma:nocashe» на сервер. |
1 | REFRESH_IFEXPIRED. Обновить, если истёк срок давности страницы. |
2 | REFRESH_CONTINUE. Только для внутреннего использования. Не используется. |
3 | REFRESH_COMPLETELY. Обновить с отправкой HTTP-заголовка «pragma:nocashe» на сервер. Только для HTTP URL’ов. |
4. События
Событие | Описание | Доступно |
---|---|---|
OnQuit | Перед завершением работы обозревателя. | InternetExplorer |
OnFullScreen | При изменении свойства FullScreen. | InternetExplorer |
OnMenuBar | При изменении свойства MenuBar. | InternetExplorer |
OnStatusBar | При изменении свойства StatusBar. | InternetExplorer |
OnToolBar | При изменении свойства OnToolBar. | InternetExplorer |
OnVisible | При изменении свойства Visible. | InternetExplorer |
PrintTemplate Instantiation | При вызове диалога печати или предварительного просмотра. | InternetExplorer, WebBrowser |
PrintTemplate Teardown | При закрытии диалога печати или предварительного просмотра. | InternetExplorer, WebBrowser |
BeforeNavigate2 | Перед началом навигации. | InternetExplorer, WebBrowser |
DownloadBegin | Когда начинается операция навигации. | InternetExplorer, WebBrowser |
NavigateComplete2 | Когда документ объявляется найденным, его URL попадает в стек навигации и становится доступным для проверки. | InternetExplorer, WebBrowser |
DownloadComplete | Когда навигация завершена, остановлена или не удалась. Возникает неоднократно: перед событием NavigateComplete2 и после него. Наступление события DownloadComplete вслед за событием NavigateComplete2 соответствует переходу в состояние READYSTATE_INTERACTIVE (свойство ReadyState = 3). | InternetExplorer, WebBrowser |
DocumentComplete | Когда какой-либо документ полностью загружен и в строке состояния браузера появляется слово «Готово». При открытии страницы с фреймами событие может возникнуть многократно: в процессе разметки с пустым URL для каждого фрейма, затем с непустым URL для каждого фрейма, и наконец, для всего документа с URL, указанным при вызове метода Navigate. Поэтому в обработчике события следует проверять URL (который передаётся туда как аргумент). | InternetExplorer, WebBrowser |
NavigateError | Когда во время навигации происходит ошибка. Событие происходит перед тем, как обозреватель отобразит страницу ошибки. | InternetExplorer, WebBrowser |
CommandStateChange | Когда изменяется состояние доступности команды. | InternetExplorer, WebBrowser |
NewWindow2 | Когда создаётся новое окно, например, при открытии ссылки в новом окне. Возможна отмена навигации. | InternetExplorer, WebBrowser |
StatusTextChange | Когда изменяется текст в строке состояния. | InternetExplorer, WebBrowser |
TitleChange | Когда изменяется заголовок документа. | InternetExplorer, WebBrowser |
5. Примеры кода
Свойства AddressBar и MenuBar:
Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.AddressBar = False objIE.MenuBar = False objIE.Visible = 1
Свойства ToolBar, StatusBar и Resizable:
Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.ToolBar = False objIE.StatusBar = False objIE.Resizable = False objIE.Visible = 1
Свойство FullScreen:
Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.FullScreen = True objIE.Visible = 1
Свойство TheaterMode:
Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.TheaterMode = True objIE.Visible = 1
Свойство StatusText:
Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1 objIE.Document.Write objIE.StatusText objIE.StatusText = «ТЕКСТ СТРОКИ СОСТОЯНИЯ»
Свойства Height, Width, Top и Left:
Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.Height = 200 objIE.Width = 300 objIE.Top = 0 objIE.Left = 0 objIE.Visible = 1
Свойства Name, FullName, Path, type, LocationName и LocationURL:
Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.Document.Write «Name = «»» & objIE.Name & «»»
» objIE.Document.Write «FullName = «»» & objIE.FullName & «»»
» objIE.Document.Write «Path = «»» & objIE.Path & «»»
» objIE.Document.Write «Type = «»» & objIE.Type & «»»
» objIE.Document.Write «LocationName = «»» & objIE.LocationName & «»»
» objIE.Document.Write «LocationURL = «»» & objIE.LocationURL & «»»
» objIE.Visible = 1
Свойство Busy и метод Stop:
Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «qwerty» If objIE.Busy Then objIE.Stop End If objIE.Visible = 1
Свойство HWND:
On Error Resume Next Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1 Set objShellApp = CreateObject(«Shell.Application») Set objFolder = objShellApp.BrowseForFolder(objIE.HWND, «Выбор папки», 0, «C:\») objIE.Document.Write objFolder.Self.Path If Err.Number <> 0 Then objIE.Document.Write «Папка не выбрана!» End If
Свойство Document:
Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.Document.Write «Hello, Internet Explorer!» objIE.Visible = 1
Свойство ReadyState:
Set objIE = CreateObject(«InternetExplorer.Application») MsgBox «ReadyState = » & objIE.ReadyState objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend MsgBox «ReadyState = » & objIE.ReadyState objIE.Visible = 1
Управление заголовком окна, отключение контекстного меню: