Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Сервис.СписокВсехОткрытыхОкон() (число прочтений - 7591 )
RinGo
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 26
Местоположение: г.Уфа
Зарегистрирован: 18. Декабря 2007
Пол: Мужской
Сервис.СписокВсехОткрытыхОкон()
03. Декабря 2009 :: 10:15
Печать  
В список, возвращаемый методом Сервис.СписокВсехОткрытыхОкон(), не попадают окна, открытые модально!
Так задумано или ...?
Хотелось бы, чт. список был полным!
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Сервис.СписокВсехОткрытыхОкон()
Ответ #1 - 03. Декабря 2009 :: 10:39
Печать  
Ээ...А откуда это метод вызываешь то?
Не уж то из самой модальной формы ? Улыбка)
  
Наверх
 
IP записан
 
RinGo
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 26
Местоположение: г.Уфа
Зарегистрирован: 18. Декабря 2007
Пол: Мужской
Re: Сервис.СписокВсехОткрытыхОкон()
Ответ #2 - 03. Декабря 2009 :: 12:12
Печать  
из глобальника(дополнительного)...
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Сервис.СписокВсехОткрытыхОкон()
Ответ #3 - 04. Декабря 2009 :: 10:01
Печать  
Ну и ? В какой момент ?
Из какой формы вызов ?
  
Наверх
 
IP записан
 
RinGo
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 26
Местоположение: г.Уфа
Зарегистрирован: 18. Декабря 2007
Пол: Мужской
Re: Сервис.СписокВсехОткрытыхОкон()
Ответ #4 - 04. Декабря 2009 :: 12:04
Печать  
В доп.глоб.модуле - процедура:

процедура адм_закрытьВсеОкна()
  // Закрыть все открытые окна сеанса 1С
  перем Конт;
  окнаСЗ=Сервис.СписокВсехОткрытыхОкон();
  если окнаСЗ.размерСписка() > 0 тогда
     для й=1 по окнаСЗ.размерСписка() цикл
       Конт="";
       Окно=сокрЛП(окнаСЗ.получитьЗначение(й,Конт));
       ...
       ...
     конецЦикла;
  конецЕсли;
конецПроцедуры;

Так вот, модально открытые формы не попадают в список окнаСЗ!
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Сервис.СписокВсехОткрытыхОкон()
Ответ #5 - 04. Декабря 2009 :: 12:42
Печать  
Еще раз.. в какой момент добавляешь доп.глобальный модуль,
И самое главное -откуда запускаешь
адм_закрытьВсеОкна() ?????
  
Наверх
 
IP записан
 
RinGo
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 26
Местоположение: г.Уфа
Зарегистрирован: 18. Декабря 2007
Пол: Мужской
Re: Сервис.СписокВсехОткрытыхОкон()
Ответ #6 - 04. Декабря 2009 :: 13:04
Печать  
Доп.глоб мод. добавляю в процедуре  ПриНачалеРаботыСистемы().
В этом доп.глоб. модуле есть процедура адм_ОбработкаОжидания(), которая запускается тоже в процедуре  ПриНачалеРаботыСистемы():

процедура ПриНачалеРаботыСистемы()
//.........
//.........
//.........
загрузитьВнешнююКомпоненту(dll_FormEx);   
Сервис=создатьОбъект"Сервис");
Сервис.добавитьГлобальныйМодуль "#загрузитьИзФайла  адмДопГлМод.txt");
шаблон("[Сервис.обработкаОжидания(""адм_обработкаОжидания"",адм_интРег*60*1000)]");
конецПроцедуры  //ПриНачалеРаботыСистемы()

Таквот: адм_ЗакрытьВсеОкна() запускается в процедуре
адм_ОбработкаОжидания() при выполнении нескольких условий...
Все! Куда еще подробнее?!



  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Сервис.СписокВсехОткрытыхОкон()
Ответ #7 - 04. Декабря 2009 :: 13:19
Печать  
Ну и ? Думаешь, тут телепаты одни на форуме сидят ?
И видят что у тебя вызов идёт из обработки ожидания из объекта сервис ?
То что она обходит блокировку модальных окон, вовсе еще не означает, что Список всех открытых окон будет работать правильно..
Да и цель то какая ? Закрыть все окна ?

ЗакрытьВсеОкна(Таймаут) используй из объекта Окна
  
Наверх
 
IP записан
 
RinGo
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 26
Местоположение: г.Уфа
Зарегистрирован: 18. Декабря 2007
Пол: Мужской
Re: Сервис.СписокВсехОткрытыхОкон()
Ответ #8 - 07. Декабря 2009 :: 10:57
Печать  
Так в том-то и фишка, что Окна.ЗакрытьВсеОкна(0) не закрывает модально открытые окна!.. Но модальные окна закрывает метод расширения формы Расш.Закрыть() через контекст. Поэтому я и хотел через список открытых окон сначала закрыть модальные окна(через Расш.Закрыть()), а потом все остальные(через Окна.ЗакрытьВсеОКна(0)):

для й=1 по окнаСЗ.размерСписка() цикл
  Конт="";      Окно=сокрЛП(окнаСЗ.получитьЗначение(й,Конт));
  если Окно="Таблица" тогда
     // Таблица не является контекстным окном, но и не модальное
     продолжить;
  конецЕсли;
  если Сервис.активныйКонтекст(Конт)=1 тогда
     если Конт.Форма.модальныйРежим()=1 тогда
           РФ.установитьФорму(Конт.Форма);
           РФ.Закрыть();
        иначе
           Окна.закрытьВсеОкна(0);
     конецЕсли;
  конецЕсли;
конецЦикла;
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Сервис.СписокВсехОткрытыхОкон()
Ответ #9 - 07. Декабря 2009 :: 13:01
Печать  
Так попробуй:

Код
Выбрать все
		Сервис = СоздатьОбъект("Сервис");
		Конт ="";
		РасшФ = СоздатьОбъект("РасширениеФормы");
		Пока Сервис.АктивныйКонтекст(Конт)=1 Цикл
			Если ТипЗначенияСтр(Конт)="ГрупповойКонтекст" Тогда
				РасшФ.УстановитьФорму(Конт.Форма);
				РасшФ.Закрыть();
			Иначе
				Сервис.ЗакрытьВсеОкна(1);
			КонецЕсли;
		КонецЦикла; 


  
Наверх
 
IP записан
 
RinGo
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 26
Местоположение: г.Уфа
Зарегистрирован: 18. Декабря 2007
Пол: Мужской
Re: Сервис.СписокВсехОткрытыхОкон()
Ответ #10 - 07. Декабря 2009 :: 13:39
Печать  
Спасибо!.. Заработало!..
  
Наверх
 
IP записан
 
RinGo
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 26
Местоположение: г.Уфа
Зарегистрирован: 18. Декабря 2007
Пол: Мужской
Re: Сервис.СписокВсехОткрытыхОкон()
Ответ #11 - 07. Декабря 2009 :: 13:57
Печать  
Так!
А как закрыть окно таблицы, если
ТипЗначенияСтр(Конт)="Таблица"?!
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Сервис.СписокВсехОткрытыхОкон()
Ответ #12 - 07. Декабря 2009 :: 13:59
Печать  
Не боись, там ужо сервис сам всё закроет.. если активный контекст = Таблица, то ужо нет модальной формы и всё закроется через Сервис.ЗакрытьВсеОкна
  
Наверх
 
IP записан
 
RinGo
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 26
Местоположение: г.Уфа
Зарегистрирован: 18. Декабря 2007
Пол: Мужской
Re: Сервис.СписокВсехОткрытыхОкон()
Ответ #13 - 07. Декабря 2009 :: 14:04
Печать  
А вот ни фига не закрывает!..
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Сервис.СписокВсехОткрытыхОкон()
Ответ #14 - 07. Декабря 2009 :: 14:05
Печать  
Проверил - всё закрыло...
Наоткрывал всё что можно..
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать