#0
by Codimca
Обнаружил, что платформа 1С некорректно работает с несколькими экземплярами Интернет-эксплорера (Windows 7, IE 11). Если в системе запущен 1 экземпляр приложения iexplore.exe (1 страница в обозревателе) - всё норм. Но стоит запустить ещё и возникают проблемы со свойством Document. Нашёл решение в использовании объекта MSScriptControl.ScriptControl: выполнять действия с объектом InternetExplorer.Application через него. Чтобы увидеть как это функционирует, создайте внешнюю обработку, добавьте на форму 4 широких надписи с именами НадписьСостояние0, НадписьСостояние1, НадписьСостояние2, НадписьСостояние3. Для кнопки "Выполнить" добавьте обработчик события "Нажатие": IE = Новый COMОбъект("InternetExplorer.Application"); IE.Visible = Истина; //IE.Silent = Ложь; Состояние("Запуск Internet Explorer и переход на нужные сайты"); ПроцессыЭксплорера = Новый Массив; IE.Navigate2("ССЫЛКА1"); IE.Navigate2("ССЫЛКА2", 4096); IE.Navigate2("ССЫЛКА3", 4096); IE.Navigate2("ССЫЛКА4", 4096); ПодключитьОбработчикОжидания("ОбновитьСостояния",1); Замените строки ССЫЛКА1, ССЫЛКА2, ССЫЛКА3, ССЫЛКА4 на нужные адреса веб-страниц. Добавьте процедуру Процедура ОбновитьСостояния Оболочка = Новый COMОбъект("Shell.Application"); Скрипт=Новый COMОбъект("MSScriptControl.ScriptControl"); Скрипт.language="JScript"; ИндексПроцесса = 0; // Получение всех открытых процессов - для каждой вкладки происходит создание нового процесса Для каждого ОкноПроцесса Из Оболочка.Windows Цикл Если ОкноПроцесса.Name = "Internet Explorer" Тогда СостояниеПроцесса = ""; СостояниеПроцесса = СостояниеПроцесса+"Адрес: " + ОкноПроцесса.LocationURL + Символы.ПС; СостояниеПроцесса = СостояниеПроцесса+"Busy: " + ОкноПроцесса.Busy + Символы.ПС; СостояниеПроцесса = СостояниеПроцесса+"ReadyState: " + ОкноПроцесса.ReadyState + Символы.ПС; Попытка СостояниеПроцесса = СостояниеПроцесса+"Document.readyState: " + ОкноПроцесса.Document.readyState + Символы.ПС; Исключение СостояниеПроцесса = СостояниеПроцесса+"Document.readyState: " + ОписаниеОшибки + Символы.ПС; КонецПопытки; Попытка Скрипт.AddObject("IE",ОкноПроцесса); СостояниеПроцесса = СостояниеПроцесса+"Document.readyState - ч/з скрипт: " + Скрипт.Eval("IE.document.readyState") + Символы.ПС; Исключение СостояниеПроцесса = СостояниеПроцесса+"Document.readyState - ч/з скрипт: " + ОписаниеОшибки + Символы.ПС; КонецПопытки; Скрипт.Reset; Попытка СостояниеПроцесса = СостояниеПроцесса+"Длина строки Document.documentElement.innerHTML: " + СтрДлина(ОкноПроцесса.Document.documentElement.innerHTML) + Символы.ПС; Исключение СостояниеПроцесса = СостояниеПроцесса+"Длина строки Document.documentElement.innerHTML: " + ОписаниеОшибки + Символы.ПС; КонецПопытки; Попытка Скрипт.AddObject("IE",ОкноПроцесса); СостояниеПроцесса = СостояниеПроцесса+"Длина строки Document.documentElement.innerHTML - ч/з скрипт: " + СтрДлина(Скрипт.Eval("IE.document.documentElement.innerHTML")); Исключение СостояниеПроцесса = СостояниеПроцесса+"Длина строки Document.documentElement.innerHTML - ч/з скрипт: " + ОписаниеОшибки; КонецПопытки; Скрипт.Reset; //Если СостояниеПроцесса Тогда // СтраницПолучено = СтраницПолучено + 1; //КонецЕсли; Если ИндексПроцесса=0 Тогда ЭлементыФормы.НадписьСостояние0.Заголовок = СостояниеПроцесса; ИначеЕсли ИндексПроцесса=1 Тогда ЭлементыФормы.НадписьСостояние1.Заголовок = СостояниеПроцесса; ИначеЕсли ИндексПроцесса=2 Тогда ЭлементыФормы.НадписьСостояние2.Заголовок = СостояниеПроцесса; ИначеЕсли ИндексПроцесса=3 Тогда ЭлементыФормы.НадписьСостояние3.Заголовок = СостояниеПроцесса; КонецЕсли; ИндексПроцесса = ИндексПроцесса + 1; КонецЕсли; ОбработкаПрерыванияПользователя; КонецЦикла; КонецПроцедуры На событие "ПриЗАкрытии" добавьте код Состояние("Выгрузка объектов интернет-эксплорера"); ПроцессыЭксплорера = Новый Массив; Шелл = Новый COMОбъект("Shell.Application"); Для каждого ОкноПроцесса Из Шелл.Windows Цикл Если ОкноПроцесса.Name = "Internet Explorer" Тогда ПроцессыЭксплорера.Добавить(ОкноПроцесса); КонецЕсли; КонецЦикла; Для каждого ОкноПроцесса Из ПроцессыЭксплорера Цикл ОкноПроцесса.Quit; КонецЦикла;
#1
by Torquader
А почему бы не создать несколько объектов InternetExplorer.Application ? Будет работать в несколько потоков и будет создано несколько InternetExplorer и никогда ещё не подводило.
#3
by Torquader
Наверное, он должен был назвать тему - "одновременное открытие нескольких страниц в одном экземпляре InternetExplorer"
#4
by Codimca
Создание нескольких объектов InternetExplorer.Application приводило к неправильной работе свойства Document всех объектов, кроме одного (самого первого) Каждая вкладка - новый экземпляр объекта
#5
by Torquader
Каждая вкладка - это один и тот же OLE-сервер. Если не нравится использоваться вкладки, то можно открывать окна (window.open, window.showModelessDialog) или наваять iframe-ы в одной странице.
Тэги: Математика и алгоритмы
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Работа из 1С с Excel (да и вообще работа через OLE)
- Работа с индексами.
- Некорректная работа выгрузки в 7.7бухгалтерию из УТ
- Работа с несколькими сканерами штрих кодов в терминале...
- Как управлять FireFox через OLE-сервер, как InternetExplorer.Application
- "InternetExplorer.Application" - как сохранить страницу с картинками
В этой группе 1С
- проблема с установкой драйверов Атол в.8 Платформа 8.3 УТ 11.1
- Генерация штрихкода GS1-128 в 1С
- Конвертация данных (КД). ВходящиеДанные видны в ПКО, но не видны в ПКС-ах Хелп
- 1С 8.3.4 Обойти все именованые области ячеек табличного документа
- Перед записью документа различие ссылки и объекта
- v8: Объединение периодов в запросе
- v7: Введите пароль для просмотра событий журнала регистрации
- Сохранить вариант отчета во внешний файл
- УТ 11. Печать этикеток и ценников. Каждая этикетка идёт на отдельный лист А4
- УТ 11 и ТСД Opticon Smart (CLK-3000)
- Как определить тип реквизита в вычисляемых полях СКД ?
- Помогите разобратся с функцией максимум скд
- v7: Обновление ТиС
- v7: Как программно перейти к нужной строке?
- Конвертация. Параметр объекта
- v8: Мобильное приложение 8.3 - геопозиционирование
- 1С 8.3.5.1098 Пропадают колонки в табличной части
- v7: Шаблоны проводок в ЗиК
- 1с Excel WorkSheets Значение не является значением объектного типа
- УТ 11 РИБ с фильтром по подразделениям и организациям