Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Не обновляется ActiveX во время обработки (число прочтений - 1428 )
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Не обновляется ActiveX во время обработки
13. Сентября 2011 :: 17:22
Печать  
Стандартная ситуация: на форме лежит текстовый реквизит, крутим в обработке цикл по сотрудникам, устанавливаем Форма.тИнфо.Заголовок(ФИО), всё замечательно обновляется.

Нестандартная ситуация: на форме лежит ActiveX (в конкретном случае WebBrowser), крутим цикл по сотрудникам, устанавливаем Браузер.getElementById("tInfo").text=ФИО, нифига не обновляется, обновляется только после того как прокрутится вся обработка. Не помогает даже РасшФормы.Обновить() - в этом случае активикс вообще пропадает с формы до окончания обработки.

Вопрос: и что делать? Почему ActiveX обновляться динамически не хочет?
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Не обновляется ActiveX во время обработки
Ответ #1 - 13. Сентября 2011 :: 17:34
Печать  
Да, вот что еще заметил: если вызываем обработку нажатием кнопки на форме - то обновляется и текcт и ActiveX, если же вызываем обработку программно (по таймеру или событию из активикса) - то текст обновляется а ActiveX нет...

Но даже если вызов процедуры идет по кнопке, то обновление AciveX происходит с какой-то задержкой, а не мгновенно. Вот если после изменения автивикса мы сразу прекращаем выполнение процедуры, тогда мгновенно обновляется. В общем хрень какая-то... сильно мешает жить дальше...  Печаль
« Последняя редакция: 13. Сентября 2011 :: 18:41 - maljaev »  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Не обновляется ActiveX во время обработки
Ответ #2 - 13. Сентября 2011 :: 19:39
Печать  
Я вот даже вам примерчик рабочий написал.



Код
Выбрать все
Перем Браузер;

Процедура Запустить()
	Форма.ОбработкаОжидания("Запустить",0);
	Начало=_GetPerformanceCounter();
	Пока (_GetPerformanceCounter()-Начало)<=20000 Цикл
		Браузер.Объект.Document.getElementById("tInfo").InnerHTML=ТекущееВремя();
		Форма.тИнфо.Заголовок(ТекущееВремя());
	КонецЦикла;
	Браузер.Объект.Document.getElementById("tInfo").InnerHTML="Запустить";
	Форма.тИнфо.Заголовок("");
КонецПроцедуры

Процедура HTML_BeforeNavigate2(Контейнер,Ссылка,Флаги,Фрэйм,Пост,Заголовки,Отмена)
	ПозицияРазделителя=Найти(Ссылка,"#");
	Если ПозицияРазделителя>0 Тогда
		Отмена=1;
		Действие=СокрЛП(Сред(Ссылка,ПозицияРазделителя+1));
		Если Действие="запустить" Тогда
			Форма.ОбработкаОжидания("Запустить",1);
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

Процедура HTML_DocumentComplete()
	Браузер.Объект.Document.Write("
	|<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">
	|<html xmlns=""http://www.w3.org/1999/xhtml"">
	|<head>
	|<meta http-equiv=""Content-Type"" content=""text/html; charset=utf-8"" />
	|</head>
	|<body>
	|<a href=""# запустить"">
	|<span id=""tInfo"">Запустить</span>
	|</a>
	|</body>
	|</html>
	|");
КонецПроцедуры

Процедура ПослеОткрытия()
	Браузер=СоздатьОбъект("АктивИкс");
	Браузер.УстановитьАтрибут(Форма,"HTML");
	Браузер.СоздатьЭУ("Shell.Explorer.2");
	Браузер.ОбработкаСобытий = 1;
	Браузер.Объект.Navigate("about:blank");
КонецПроцедуры
 

  

_______003.ert ( 28 KB | Загрузки )
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Не обновляется ActiveX во время обработки
Ответ #3 - 13. Сентября 2011 :: 20:24
Печать  
В общем, господа, методом тыка и неимоверного изврата удалось найти нормально работающий вариант. Надеюсь кому-нибудь пригодится. Всем спасибо за помощь! Улыбка

Код
Выбрать все
Перем Браузер;
Перем Сервис;

Процедура Запустить()
	Начало=_GetPerformanceCounter();
	Пока (_GetPerformanceCounter()-Начало)<=20000 Цикл
		Браузер.Объект.Document.getElementById("tInfo").InnerHTML=ТекущееВремя();
		Форма.тИнфо.Заголовок(ТекущееВремя());
	КонецЦикла;
	Браузер.Объект.Document.getElementById("tInfo").InnerHTML="Запустить";
	Форма.тИнфо.Заголовок("");
КонецПроцедуры

Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные)
	Если Источник="HTML" Тогда
		Если Данные="запустить" Тогда
			Запустить();
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

Процедура HTML_BeforeNavigate2(Контейнер,Ссылка,Флаги,Фрэйм,Пост,Заголовки,Отмена)
	ПозицияРазделителя=Найти(Ссылка,"#");
	Если ПозицияРазделителя>0 Тогда
		Отмена=1;
		Действие=СокрЛП(Сред(Ссылка,ПозицияРазделителя+1));
		Сервис.ВнешнееСобытие("HTML",,Действие);
	КонецЕсли;
КонецПроцедуры

Процедура HTML_DocumentComplete()
	Браузер.Объект.Document.Write("
	|<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">
	|<html xmlns=""http://www.w3.org/1999/xhtml"">
	|<head>
	|<meta http-equiv=""Content-Type"" content=""text/html; charset=utf-8"" />
	|</head>
	|<body>
	|<a href=""# запустить"">
	|<span id=""tInfo"">Запустить</span>
	|</a>
	|</body>
	|</html>
	|");
КонецПроцедуры

Процедура ПослеОткрытия()
	Браузер=СоздатьОбъект("АктивИкс");
	Браузер.УстановитьАтрибут(Форма,"HTML");
	Браузер.СоздатьЭУ("Shell.Explorer.2");
	Браузер.ОбработкаСобытий = 1;
	Браузер.Объект.Navigate("about:blank");
КонецПроцедуры

Процедура ПриОткрытии()
	Сервис=СоздатьОбъект("Сервис");
КонецПроцедуры 

  

_______004.ert ( 28 KB | Загрузки )
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Не обновляется ActiveX во время обработки
Ответ #4 - 14. Сентября 2011 :: 03:52
Печать  
в ложном закрытии формы тоже работает.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать