|
v7: Formex закрыть неактивное окно 7.7 | ☑ | ||
---|---|---|---|---|
0
Franchiser
гуру
05.05.17
✎
13:28
|
Можно ли каким-то образом по имена получить список откртытых окон и закрыть некоторые из них?
|
|||
1
Злопчинский
05.05.17
✎
22:42
|
Процедура ПриДеактивацииОкна()КонецПроцедуры
Назначение: Предопределенная процедура при деактивации окна СписокВсехОткрытыхОкон() Синтаксис: СписокВсехОткрытыхОкон() Назначение: возвращает список значений со всеми открытыми формами АктивныйКонтекст(<?>) Синтаксис: АктивныйКонтекст(<Контекст>) Назначение: Возвращает контекст активного в данный момент окна. Возвращает 1 в случае успеха, 0 в противном случае. Параметры: <Контекст> - Переменная, в которую записывается активный контекст. ПРИМЕР: Процедура ЗакрытьАктивноеОкно() Перем Конт; Сервис = СоздатьОбъект(''Сервис''); Если Сервис.АктивныйКонтекст(Конт) = 1 Тогда Конт.Форма.Закрыть(0); Иначе Сообщить(''Активное окно не является контекстным или нет активного окна.''); КонецЕсли; КонецПроцедуры |
|||
2
Franchiser
гуру
05.05.17
✎
23:37
|
Можно примерчик как найти по имени нужное окно и закрыть? Что-то не до конца понятно...
|
|||
3
Злопчинский
05.05.17
✎
23:47
|
(2) для начала просто возьми формексовский вордовский хелп и посмотри там,если уже непонятно будет...
можно посмотерть например как у меян сделана работа с открытыми печатными формами на экране (http://catalog.mista.ru/public/14180/) - собираю их (только активную или вообще все) и обрабатываю, в т.ч. и закрываю. с оканми форм - аналогично. можем попробовать с окнами поработать, вместе - давай удаленку... попробуем, бо сам впрямую не делал (ибо бяковая идея) |
|||
4
Злопчинский
05.05.17
✎
23:55
|
вот, навалял, работает
//******************************************* Процедура Сформировать() КонтТекущегоОкна = ""; глСервис.АктивныйКонтекст(КонтТекущегоОкна) ; СЗ = глСервис.СписокВсехОткрытыхОкон(); //ОТЛАДКА: //СЗ.ВыбратьЗначение(,); РС = СЗ.РазмерСписка(); Для ы=1 По РС Цикл Конт = СЗ.ПолучитьЗначение(ы); Если Конт = КонтТекущегоОкна Тогда Продолжить; КонецЕсли; //попробуй заремить эту строку Конт.Форма.Закрыть(0); КонецЦикла; КонецПроцедуры |
|||
5
Franchiser
гуру
06.05.17
✎
00:40
|
Написал так, но почему-то закрывается первая форма и останавливается на этом:
Процедура ИсправитьБагОткрытияФормы() Сервис = СоздатьОбъект("Сервис"); Окна = Сервис.СписокВсехОткрытыхОкон(); Конт = ""; РасшФ = СоздатьОбъект("РасширениеФормы"); Если Окна.РазмерСписка()>0 Тогда для й=-Окна.РазмерСписка() по -1 Цикл Окно = Окна.ПолучитьЗначение(-й,КОнт); Если ТипЗначенияСтр(Конт) ="Строка"Тогда Если Найти(Конт,"Планировщик регламента")>0 Тогда РасшФ.УстановитьФорму(Окно.форма); РасшФ.Закрыть(); КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры |
|||
6
Злопчинский
06.05.17
✎
00:57
|
фигня какая-то понаписана.. наверное...
ща.. вкурю... |
|||
7
Злопчинский
06.05.17
✎
01:02
|
Процедура ИсправитьБагОткрытияФормы()
Сервис = СоздатьОбъект("Сервис"); Окна = Сервис.СписокВсехОткрытыхОкон(); РС = Окна.РазмерСписка(); Если РС = 0 Тогда Возврат; КонецЕсли; для й=1 По РС Цикл Конт=""; Окно = Окна.ПолучитьЗначение(й,Конт); Если Найти(ВРЕГ(Конт),"ПЛАНИРОВЩИК РЕГЛАМЕНТА")>0 Тогда Окно.Форма.Закрыть(0); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
8
Злопчинский
06.05.17
✎
01:03
|
И.. эта.. может не надо "исправлять баг открытия формы", а форму открывать правильно...? баг открытия формы в чем?
|
|||
9
Franchiser
гуру
06.05.17
✎
01:06
|
Да блин, есть справочник, у него в форме списка прописан в процедуре
ПриВыбореСтроки() код ОткрытьФорму(ТекущийЭлемент()); Код конфигурации менять нельзя. В результате сейчас выбирая в обработке элемент этого справочника автоматически открывается вторая форма элемента, которую и нужно закрыть... |
|||
10
Franchiser
гуру
06.05.17
✎
01:07
|
Вот так форма закрывается, но форма выбора теперь осталась висеть.
Функция прописана в реквизите на форме. Как бы еще форму подбора закрыть? Процедура ИсправитьБагОткрытияФормы() Сервис = СоздатьОбъект("Сервис"); Окна = Сервис.СписокВсехОткрытыхОкон(); Конт = ""; РасшФ = СоздатьОбъект("РасширениеФормы"); Если Окна.РазмерСписка()>0 Тогда для й=-Окна.РазмерСписка() по -1 Цикл Окно = Окна.ПолучитьЗначение(-й,КОнт); Если ТипЗначенияСтр(Конт) ="Строка"Тогда Если Найти(Конт,"Планировщик регламента")>0 Тогда //Окно.Закрыть(); Окно.Форма.Закрыть(0); //РасшФ.УстановитьФорму(Окно.форма); //РасшФ.Закрыть(); КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры |
|||
11
Franchiser
гуру
06.05.17
✎
01:14
|
может это потому что форма выбора - модальное окно, но странно почему закрытие каких то других форм приводит к тому что не закрывается модальное окно
|
|||
12
Злопчинский
06.05.17
✎
01:22
|
(10) блина, напиши в скайп Zlopun удаленку по тиму, а то так - мутно
|
|||
13
Злопчинский
06.05.17
✎
01:34
|
ты уже определись - у тебя форма выбора или форма подбора
|
|||
14
Злопчинский
06.05.17
✎
02:21
|
разрулено.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |