Имя: Пароль:
1C
 
Как подключиться к уже существующему OLE-объекту?
0 Гений 1С
 
гуру
22.09.14
10:31
Есть задача - создать OLE-объект, чтобы можно было подключиться к нему из другого приложения.
Допустим, для этого я могу заранее запустить его с неким GUID, или просто получить от него GUID.

Т.е. можно ли подключиться к OLE-объекту, если он создан не из текущего приложения, а его идентификатор, допустим у нас есть (вопрос как получить этот идентификатор тоже актуален)
1 Torquader
 
22.09.14
10:41
Можно, RunObjectTable тебе в помощь. И GetObject в VbScript.
2 DrZombi
 
гуру
22.09.14
10:42
(0) А поконкретней можно? В деталях. Приложение такое то подключается туда-то
3 Гений 1С
 
гуру
22.09.14
10:57
(2) проблема в том, что IE9 глючит при его создании из 1С.
Я создам IE9 (internetExplorer.Application) из скрипта. А потом подключусь из 1С.

Дело в том, что из скрипта нормально работает, не глючит.

(1) GetObject разве подключится к существующему ком-объекту? а как работать с RunObjectTable?
4 Torquader
 
22.09.14
11:06
(3) IE как раз в RunObjectTable не регистрируется.
Если хочется его "создать", то запускай с ключом -embedded и подключайся, как обычно - у меня в 7.7 именно так и сделано, иначе - ну не стартует иногда эта "длинноухая шняга".
5 Гений 1С
 
гуру
22.09.14
11:12
(4) мне нужно, чтобы он запустился не из одного потока с 1С, а с другого потока,если стартует в потоке 1С, то глючит.
6 Кирпич
 
22.09.14
11:27
(5) моя многолетняя программерская практика подсказывает мне, что глючит обычно по вине самого жалующегося на глючность. покажи код и тебе скажут, почему у тебя глючит.
7 Гений 1С
 
гуру
22.09.14
11:45
(6) мой опыт (и поиск в гугле) подсказывает мне что это корявая работа 1С с COM. методы и свойства объекта BODY выдают ошибку.
т.е. это ошибка COM-модели.

Я захожу на сайт, прошу Body.InnerHTML, а он мне выдает ошибку.
но не всегда, иногда работает, иногда нет.

Только с IE9, до этого нормально работает код.
На IE8 ок.

но у меня дома IE9, т.к. на Win8 более ранний использовать нельзя.
8 Кирпич
 
22.09.14
11:56
(7) ну если с ie8 нормально работает, то причем тут 1с?
9 Гений 1С
 
гуру
22.09.14
12:23
(8) ха. я гуглил на эту тему, нашел что 1С криво работает с COM, т.е. конкретно с новой версией IE9
10 Гений 1С
 
гуру
22.09.14
12:23
поэтому я и хочу обойти эту проблему, запуская IE в отдельном потоке, не связанным с 1С, а ему передавать только вызовы методов
11 Кирпич
 
22.09.14
12:25
(9) Думаешь, что COM сильно изменился с приходом IE9? Я думаю нет.
12 Кирпич
 
22.09.14
12:26
Лучше посмотри настройки IE9. Безопасность там всякую, сертификаты и прочее.
13 Torquader
 
22.09.14
12:27
Enternet Explorer - это:
1) SingleInstance - то есть создаётся один объект на одного запрашивающего и повторные подключения к объекту не предусмотрены. Получить объект InternetExplorer через GetObject невозможно.
2) LocalServer32, то есть отдельное приложение и работает всегда в своём процессе, а все вызовы OLE идут через RemoteProcedureCall и очередь сообщений самого InternetExplorer. В одном потоке с 1С можно запустить только Proxy для OLE-обмена, а она стандартная для всех OLE-объектов.

Если хочется извращаться - создай сценарий VbScript и вызывай его из 1С через MSScriptControl, а уже из этого сценария создавай "Осла".
14 Torquader
 
22.09.14
12:29
Если Body.innerHTML выдаёт ошибку, то нужно проверить, а есть ли страница, то есть сначала нужно дождаться готовности InternetExplorerOle.Busy должна возвращать False, только после этого к нему можно лезть - не забывайте, что он работает в отдельном процессе и никак не связан с вашим сценарием, и если вы ему дали команду, то выполняться она может начать даже после того, как вам ответили, что она успешная.
15 Гений 1С
 
гуру
22.09.14
12:31
(13) Я так пробовал. Я даже пробовал запускать отдельное 1С через OLE.APPLICATION, а уже из него запускать IE.

Суть проблемы такова - какое-то время IE9 из первичной 1С работает, потом что-то ломается в OLE и уже ничего не помогает - ни создание IE в скрипте, ни создание IE в новой 1С.

Пока не перезапустишь первичную 1С.
16 Гений 1С
 
гуру
22.09.14
12:31
(14) прикол в том, что InternetExplorerOle.Busy = false, а ожидаемые свойства не читаются, выдая ошибку с каким-то там кодом, счас его не помню. Погуглив этот код, нашел, что это какая-то несовместимость 1с с IE9.
17 Гений 1С
 
гуру
22.09.14
12:32
(12) там я уже все перепробовал.
причем безопасность к тому, что свойтво BODY выдает ошибку?
это какая-то ошибка COM.
18 Torquader
 
22.09.14
13:02
Если сначала читает, а потом - нет, то это ошибка фрагментации памяти. Фрагмент всего тела передаётся из одного объекта в другой посредством WM_COPYMEMORY, но у приёмника может просто не найтись свободного пространства в памяти.
Пробуйте копировать по-частям, то есть через перечисление вложенных в BODY объектов.

Вариант 2 - написать VbScript, который будет не только "осла" по OLE "дёргать", но и саму 1С через Внешнее соединение.
19 Гений 1С
 
гуру
22.09.14
13:27
(18) Я не копирую, я просто обращаюсь к свойствам и методам IE.
ну вариант со скриптом, который дергает 1С, кстати, возможен.
т.е. управляться будет не IE по COM, а 1C, которая управляет ослом. и если 1С падает, то будет перезапущена.
1С в таком режиме надо запускать по COM, наверное, для скорости.
ОК, подумаю в этом направлении.
20 Кирпич
 
22.09.14
13:38
Офигенно вы проблемы решаете. Код не смотрели. Какую ошибку выдает IE им даже не интересно. Зато смело предположили, что 1с неправильно работает с COM и тут же, поверив в это, начали выдумывать какие то костыли. Снимаю шляпу. :)
21 Serginio1
 
22.09.14
13:39
22 Гений 1С
 
гуру
22.09.14
14:14
(21) в моем случае нужен IE, я не парсингом занимаюсь, а длительной сессией.

(20) причина не лечится, нужен обходной маневр.
23 Кирпич
 
22.09.14
14:23
(22) и в чем причина? я вот думаю, что причина скорее всего в том, что IE просто не загрузил страницу. код покажи.
24 Serginio1
 
22.09.14
14:35
25 Гений 1С
 
гуру
22.09.14
14:51
(23) Тогда бы не работало под IE8
Причина именно в браузере.

(24) мне нужно сессии поддерживать, а не просто GET и POST делать, т.е. полностью эмулировать работу браузера от входа до поста и перехода по последующим страницам.

Код? Пожалуйста. Часто проваливается в неадекватное состояние.

//Переход на адрес
Функция ПерейтиНаАдрес(_Адрес, Параметры = Неопределено) Экспорт
~СначалаБраузер:    
    Попытка
        ДобавитьМаркерТекущейСтраницы();
        Если Параметры = Неопределено Тогда
            Параметры = Новый Структура();
        КОнецЕсли;
        
        //Смотрим, нужно ли создавать новый браузер...

        флНуженБраузер = ложь;
        Если Браузер = Неопределено Тогда
            флНуженБраузер = истина;
        ИначеЕсли Браузер.Busy = истина Тогда
            флНуженБраузер = истина;
        Иначе
            Если Браузер.Document <> Неопределено Тогда
                //Если веб-страница находится во взаимодействии с пользователем
                Попытка
                    Если Браузер.Document.readystate = "interactive" Тогда
                        //Попытка
                        //Если Браузер.Document.parentWindow.event.type = "showmessage" Тогда
                        //    Браузер.Document.parentWindow.event = Неопределено;
                        //    //флНуженБраузер = истина;
                        //КонецЕсли;
                        Если Браузер.Document.parentWindow.event <> Неопределено Тогда
                            //Браузер.Document.parentWindow.close();
                            флНуженБраузер = истина;
                        КонецЕсли;
                        //Исключение
                        //КонецПопытки;
                        //Браузер.Stop();
                    КонецЕсли;
                    
                    ////Если после остановки документ по прежнему интерактивен, значит это настоящее модальное окно.
                    //Если Браузер.Document.readystate = "interactive" Тогда
                    //    флНуженБраузер = истина;
                    //КонецЕсли;
                Исключение
                    флНуженБраузер = истина;
                КонецПопытки;
            КонецЕсли;
        КонецЕсли;
        
        //Если браузер уже есть, но находится в неадекватном состоянии, закрываем...
        Если флНуженБраузер И Браузер <> Неопределено Тогда
            Закрыть();
        КонецЕсли;

        ~ОпятьБраузер:
        Если флНуженБраузер Тогда
            Если УбиватьБраузер = истина Тогда
                УбитьБраузер();
            КонецЕсли;
            ОшибкаБраузера = ложь;
            Если Браузер <> Неопределено Тогда
                Попытка
                    //Браузер.Quit();
                Исключение
                    Сообщить("  не удалось закрыть браузер: " +ОписаниеОшибки());
                КонецПопытки;
                Браузер = Неопределено;
            КонецЕсли;
            Попытка
                //Скрипт = Новый COMОбъект("MSScriptControl.ScriptControl");
                //Скрипт.language="vbscript";
                //Скрипт.addCode("Function MY()
                //|  Set B = CreateObject(""InternetExplorer.Application"")
                //|  B.RegisterAsDropTarget = false
                //|  B.Silent = truE
                //|  B.AddressBar = false
                //|  B.MenuBar = false
                //|  B.ToolBar = false
                //|  B.StatusBar = false
                //|  B.Visible = false
                //|  Set My = B
                //|End Function
                //|");
                //Браузер = Скрипт.eval("My()");
                //Браузер = Новый COMОбъект("InternetExplorer.Application");    
                
                //СоздаватьБраузерЧерезCOM = Истина;
                //СоздаватьБраузерЧерезApplication = Истина;
                
                //СоздаватьБраузерЧерезWebBrowser = истина;
                
                //СоздаватьБраузерЧерезПолеHTMLДокумента = Истина;
                
                //СоздаватьБраузерЧерезMSScriptControl = истина;
                
                Если СоздаватьБраузерЧерезMSScriptControl = Истина  Тогда
                    Скрипт = Новый COMОбъект("MSScriptControl.ScriptControl");
                    Скрипт.language="vbscript";

                    Скрипт.addCode("Dim IE
                    |Function Navigate(Addr)
                    |  IE.Navigate(Addr)
                    |End Function
                    |  
                    |Sub click
                    |  IE.click()
                    |End Sub
                    |  
                    |Function ReadyState
                    |      ReadyState = IE.ReadyState
                    |End Function
                    |  
                    |Function Forms
                    |      set Forms = IE.Document.Forms
                    |End Function
                    |  
                    |Function Busy
                    |      Busy = IE.Busy
                    |End Function
                    |  
                    |Function Body
                    |      Set Body = IE.Body
                    |End Function
                    |  
                    |Function Navigate(Addr)
                    |      IE.Navigate(Addr)
                    |End Function
                    |  
                    |Function Quit
                    |      IE.Quit
                    |End Function
                    |  
                    |Function Start()
                    |      Set IE = CreateObject(""InternetExplorer.Application"")
                    |      IE.RegisterAsDropTarget = false
                    |      IE.Silent = truE
                    |      IE.AddressBar = false
                    |      IE.MenuBar = false
                    |      IE.ToolBar = false
                    |      IE.StatusBar = false
                    |      IE.Visible = false
                    |End Function
                    |  
                    |Function MY()
                    |  Start
                    |  Set My = IE
                    |End Function
                    
                    |Function GetBody(Obj)
                    |  GetBody = Obj.Body
                    |End Function
                    |");
                    //Скрипт.eval("Start()");
                    Браузер = Скрипт.eval("My()");
                //Браузер = Новый COMОбъект("InternetExplorer.Application");    
                ИначеЕсли СоздаватьБраузерЧерезCOM = Истина  Тогда
                    СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
                    
                    СтрокаСоединения = СтрокаСоединения + "Usr=" + ИмяПользователя() + ";Pwd=""" + Константы.пимПарольДляПодключенияКБазе.Получить() + """";
                    //Коннектор = Новый COMОбъект("V81.ComConnector");
                    Коннектор = Новый COMОбъект("V81.Application");
                    Соединение = Коннектор.Connect(СтрокаСоединения);
                    //Браузер = Соединение.CreateComObject("InternetExplorer.Application");
                    Браузер = Коннектор.CreateComObject("InternetExplorer.Application");
                ИначеЕсли СоздаватьБраузерЧерезApplication = Истина  Тогда
                    СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
                    СтрокаСоединения = СтрокаСоединения + "Usr=" + ИмяПользователя() + ";Pwd=""" + Константы.пимПарольДляПодключенияКБазе.Получить() + """";
                    //Коннектор = Новый COMОбъект("V81.ComConnector");
                    Соединение = Новый COMОбъект("V81.Application");
                    Соединение.Connect(СтрокаСоединения);
                    Браузер = Соединение.CreateComObject("InternetExplorer.Application");
                    
                ИначеЕсли СоздаватьБраузерЧерезWebBrowser = Истина  Тогда
                    СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
                    СтрокаСоединения = СтрокаСоединения + "Usr=" + ИмяПользователя() + ";Pwd=""" + Константы.пимПарольДляПодключенияКБазе.Получить() + """";
                    Соединение = Новый COMОбъект("V81.Application");
                    Соединение.Connect(СтрокаСоединения);
                    Браузер = Соединение.Create1SBrowser();
                    
                    
                ИначеЕсли СоздаватьБраузерЧерезПолеHTMLДокумента = Истина  Тогда
                    //СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
                    //СтрокаСоединения = СтрокаСоединения + "Usr=" + ИмяПользователя() + ";Pwd=""" + Константы.пимПарольДляПодключенияКБазе.Получить() + """";
                    //Соединение = Новый COMОбъект("V81.Application");
                    //Соединение.Connect(СтрокаСоединения);
                    //Браузер = Соединение.Create1SSBrowser();
                    //Браузер = Create1SSBrowser();
                    Браузер = Create1SBrowser();
                    
                    
                Иначе
                    Браузер = 0; Браузер = Новый COMОбъект("InternetExplorer.Application");
                КонецЕсли;

                //Браузер.RegisterAsDropTarget = false;
                Попытка
                    Браузер.Silent = truE;
                Исключение
                КонецПопытки;
                
                //Попытка Браузер.AddressBar = false; Исключение КонецПопытки;
                //Попытка Браузер.MenuBar = false;     Исключение КонецПопытки;
                //Попытка Браузер.ToolBar = false;    Исключение КонецПопытки;
                //Попытка Браузер.RegisterAsBrowser = false; Исключение КонецПопытки;
                //Попытка Браузер.StatusBar = false; Исключение КонецПопытки;
                Попытка Браузер.visible = Видимость = истина; Исключение КонецПопытки;
            Исключение
                ОписаниеОшибки = ОписаниеОшибки();
                ОшибкаБраузера = истина;
            КонецПопытки;
            Если ОшибкаБраузера Тогда
                Сообщить("Ошибка создания браузера: " + ОписаниеОшибки);
                ОбработкаПрерыванияПользователя();
                флНуженБраузер = истина;
                Перейти ~ОпятьБраузер;
            КонецЕсли;
            ПерваяМинимизацияПрошла = ложь;
            //Браузер.visible = Истина;
        КонецЕсли;
        
        //ЗапомнитьМаркерДокумента();
        //Теперь переходим и дожидаемся загрузки
        ЕстьНеадекватноеСостояние = ложь;
        
        //Браузер.Navigate("about:blank");
        //Пока Браузер.Busy Цикл
        //    бфДиалоги.ксСостояние("Создаю пустую веб-страницу Ctrl+Break - останов");
        //    бфДиалоги.ксОбработкаПрерыванияПользователя();
        //КонецЦикла;

        Если СоздаватьБраузерЧерезMSScriptControl = истина Тогда
            Скрипт.eval("Navigate (""" + _Адрес + """) ");
        Иначе
            Браузер.Navigate(_Адрес);
        КонецЕсли;
        Адрес = _Адрес;
        Р = ДождатьсяЗагрузки(Параметры);
        Если ЕстьНеадекватноеСостояние Тогда
            //Браузер.Navigate("about:blank");

            флНуженБраузер = истина;
            Перейти ~ОпятьБраузер;
        КонецЕсли;
    
        //СвойствоForms = Скрипт.eval("Forms()");
        //СвойствоForms1 = Скрипт.eval("Forms().item(0)");
        //ТелоПервой = Скрипт.run("GetBody", СвойствоForms1);

        
        //Минимизируем, когда создаем видимым...
        Если ПерваяМинимизацияПрошла <> истина И Браузер.Document <> Неопределено Тогда
            Если Видимость = истина Тогда
                Браузер.visible = Истина;
                Попытка
                    Браузер.Document.parentWindow.blur();
                Исключение
                КонецПопытки;
            КонецЕсли;
            ПерваяМинимизацияПрошла = истина;
        КонецЕсли;
    Исключение
        Перейти ~СначалаБраузер;
    КонецПопытки;
    
    
    Если Р = Неопределено Тогда
        Если УбиватьБраузер = истина Тогда
            УбитьБраузер();
        КонецЕсли;            
        //Перейти  ~СначалаБраузер;
    КонецЕсли;
    Возврат Р;
КонецФункции

Функция Загружена(Параметры = Неопределено) Экспорт
    //ТекМаркерДокумента = ПолучитьМаркерДокумента();
    //Возврат Браузер <> Неопределено И Браузер.ReadyState = 4 И ТекМаркерДокумента <> Неопределено И ТекМаркерДокумента <> МаркерДокумента И Браузер.Document <> Неопределено ;
    Попытка
        //Если Браузер <> Неопределено И Браузер.ReadyState = 4 И Браузер.Document <> Неопределено Тогда
        //Проверяем остался ли тег
        Попытка        
            Если бфДом.АтрибутЭлемента(Браузер.Document.body, "_ba4c88dfc4034298a653d10b3f84860b") <> Неопределено Тогда
                Возврат Ложь;
            КонецЕсли;
        Исключение
        КонецПопытки;
        //Проверяем есть ли стоп-строки
        Попытка        
            Для Каждого Строка ИЗ Параметры.СтопСтроки Цикл
                Если Найти(Браузер.Document.body.innerText, Строка) <> 0 Тогда
                    Возврат истина;
                КонецЕсли;
            КонецЦикла;
        Исключение
        КонецПопытки;
        
        //Проверяем, может сработала ловушка
        Попытка
            фл = Ловушка.ДожидатьсяЛиЗагрузки(Браузер, Параметры);
        Исключение
            фл = Неопределено;
        КонецПопытки;
        Если фл = ложь Тогда
            Браузер.Stop();
            Возврат истина;
        КонецЕсли;

        Если Браузер.readyState = 3 Тогда
            Попытка
            Если Найти(ВРЕГ(Браузер.Document.documentElement.outerHTML), "</BODY>") <> 0 Тогда
                Возврат истина;
            КонецЕсли;
            Исключение
            КонецПопытки;
        КонецЕсли;
        
        
        
        Для Инд = 1 По 1 Цикл
            Попытка
                Статус = Браузер.readyState;
                Если Браузер.readyState = 4 Тогда
                    Тест = Браузер.Document.body.innerHTML; //Проверяем, загружено ли тело страницы.
                КонецЕсли;
            Исключение
                ////Пробуем найти объект
                //Шелл = Новый COMОбъект("Shell.Application");
                //Найдено = ложь;
                //Попытка
                //For Each ШеллОкно In Шелл.Windows() Цикл
                //    If ВРег(ШеллОкно.LocationName) = ВРег(Браузер.LocationName) Then
                //        Браузер = ШеллОкно;
                //        Найдено = истина;
                //        Прервать;
                //    КонецЕсли;
                //КонецЦикла;
                //Исключение КонецПопытки;
                //
                //Если Не Найдено Тогда
                //    Перейти ~Неадекватное;
                //КонецЕсли;
                Перейти ~Неадекватное;
            КонецПопытки;
            Прервать;
            
            
            ~Неадекватное:    
            Сообщить("Выявлено неадекватное состояние браузера: " + Инд + " " + ТекущаяДата() + " " + Адрес);
            Если Инд = 1 Тогда
                ЕстьНеадекватноеСостояние = истина;
            Иначе
                бфДиалоги.Задержка(10); //Ждем 10 секунд
            КонецЕсли;
            ОбработкаПрерыванияПользователя();
            Возврат истина; //Загружено, но неадекватно...
        КонецЦикла;

        
        Если Браузер <> Неопределено И Браузер.Busy = Ложь И Браузер.Document <> Неопределено Тогда
            Если Браузер.readyState = 4  И Браузер.Document.body <> Неопределено и Браузер.Document.body.readystate = "complete" и Браузер.Document.readystate = "complete" Тогда
                Если НЕ бфДом.ДоступныАтрибуты(Браузер.Document.body) Тогда
                    Возврат Ложь;
                КонецЕсли;
                
                Тест = Браузер.Document.body.innerHTML; //Вылетит - значит не загружена...
                //Пробуем получить текст тела, если нет, то еще не загружена
                //Вылетит в ошибку
                Тест = Браузер.Document.body.innerText;
                Возврат Истина;
            КонецЕсли;
        КонецЕсли;
    Исключение
    КонецПопытки;
    Возврат Ложь;
    

КонецФункции
26 Serginio1
 
22.09.14
15:19
(25) Так  GET и POST и держит твою сессию через . Просто ты интерактивно работать не можешь.
Кстати а какого нибудь activex microsoft web browser нет?
27 Кирпич
 
22.09.14
15:34
(25) в коде ничо не понял, но если 1с будет вычислять все условия в этом выражении, то наверное будет глюк

Если Браузер.readyState = 4  И Браузер.Document.body <> Неопределено и Браузер.Document.body.readystate = "complete" и Браузер.Document.readystate = "complete" Тогда
28 Кирпич
 
22.09.14
15:37
+(27) я бы написал так

            Если Браузер.readyState = 4  Тогда
Если Браузер.Document.body <> Неопределено Тогда Если Браузер.Document.body.readystate = "complete" и Браузер.Document.readystate = "complete" Тогда
...
КонецЕсли;
КонецЕсли;
КонецЕсли;
29 Кирпич
 
22.09.14
16:04
Хотя нет. 1с вычисляет в принципе правильно. Проверил.
30 Гений 1С
 
гуру
22.09.14
16:09
(29) не ищи траблов там, где их нет. Проблема в IE9.
(26) соответственно нельзя использовать такие шняги, как CLICK и прочие вкусности JAVA-SCRIPT.
Некоторые сайты без JAVA-SCRIPT тупо не работают.
31 Гений 1С
 
гуру
22.09.14
16:10
(26) ACTIVEX есть, но он работает через тот же IE9, например полеHTMLдокумента

Function Create1SBrowser() Export
    Ф = ПолучитьОбщуюФорму("пимФормаБраузера");
    Ф.Открыть();
    //Ф.ЭлементыФормы.ЭлементУправленияБраузер.Application.visible = false;
    
    Возврат Ф.ЭлементыФормы.ЭлементУправленияБраузер;
    
EndFunction
32 Serginio1
 
22.09.14
16:25
(30) Попробуй http://watin.org/
33 Serginio1
 
22.09.14
16:33
34 Torquader
 
22.09.14
16:52
Попробуйте в Ie9 отключить вкладки - там с ними действительно какие-то проблемы были.
Ну и нужно перед проверкой readyState всё-таки проверять Busy, чтобы не попасть в просак или куда-то ещё.
35 Гений 1С
 
гуру
22.09.14
17:20
(32) и как его заюзать из 1S? это ж плагин к фирефоксу
(34) с вкладками это идея, хотя конечно из области плясок с бубнами. А насчет проверки редистейт не надо, попытка-исключение животворящая все это обходит.
36 Кирпич
 
22.09.14
17:20
(30) просто, единственные траблы, которые у меня были с IE это busy и readyState
вот мне и подозрительно, что всё дело в писанине
37 Гений 1С
 
гуру
22.09.14
17:24
(36) ну ты просто мало гонял IE. А я его гонял огого сколько.
у IE тут монополия - больше никакой браузер программно не управляется, к сожалению.
38 Serginio1
 
22.09.14
17:31
(32) Из 1С ты можешь достучаться к любым классам Net v8: v8: Использование сборок .NET в 1С 7.x и 8.x

watin в Основном к IE
http://www.software-testing.ru/library/testing/general-testing/1791-watin-
39 Гений 1С
 
гуру
22.09.14
17:42
(38) ну хоть что-то, хотя и сложно. да.
40 Torquader
 
22.09.14
18:06
Вообще-то, есть ServerXMLHttpRequest и его методы SetRequestHeader, позволяющие устанавливать любые ключи (cookies), если это нужно.
В IE самое удобное - это интерфейс, а не его работа в сети.
Кстати, у меня "осёл" рулится из VbScript и проблемы возникают, если вызываешь метод, который выполняется дольше определённого времени, тогда в подсистеме OLE возникает TimeOut и управление прекращается - но это обычно случается, когда получаешь событие от "осла" и долго не отдаёшь ему управление.
41 Serginio1
 
23.09.14
10:13
(39) Разве, что то может быть сложного для Гения?
.Net значительно мощнее скриптов. Можешь использовать события в 8 ке без ВК. Куча наработок исходного кода итд.
Сейчас уже без .Net уже тяжело жить
42 Torquader
 
23.09.14
10:19
(41) Насколько я помню, события в восьмёрке и без Net прекрасно ловятся - от того же Word-а, например.
43 Serginio1
 
23.09.14
11:48
(42) Они для этого и предназначены. Просто в (38) реализована поддержка нетовских событий через оболочку для передачи в восьмерку. Я про то, что использованте нетовских сборок значительно мощнее скриптов
44 DES
 
09.10.14
20:53
(0) Ну как, получилось подключиться ?
45 vis_tmp
 
09.10.14
21:09
(44) Его забанили уже.... Не узнам
46 TormozIT
 
гуру
10.10.14
07:29
Отправлял в 1С несколько проблем в работе с ActiveX IE9. Их все воспроизвели и прислали ответ в стиле "это проблема ActiveX IE9". Так что подтверждаю наличие как минимум несовместимости 1С и IE9.
47 Torquader
 
11.10.14
00:39
(46) Так IE9 и не только с 1С криво работает.
После его выхода вместо работы с mshta.exe просто хочется плюнуть в экран, так как бывают всяческие чудеса.
Слава богу, что пятый и шестой не подводят.