![]() |
|
Отображение формы длительной операции в ВебКлиенте | ☑ | ||
---|---|---|---|---|
0
Perez512
30.01.20
✎
09:44
|
8.3.16.1063, самописная конфигурация, работаем через веб.
Задача: перед открытием "тяжёлой" формы (через браузер открывается секунды 3-4) - показывать форму просто с текстовой декорацией "Пожалуйста, подождите", а после открытия "тяжёлой" формы - её закрывать. Ок, сделал, в тонком клиенте всё работает, а в вёб клиенте эта форма не показывается. Не показывается, я так понимаю, пока ФормаПодождите.Открыть() и ФормаТяжелая.Открыть() находятся подряд, без ПодключенияОбработокОжидания, т.е.: Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) ФормаПодождите=ПолучитьФорму(....); ФормаПодождите.Открыть();//вот тут, по идее, она должна открыться и показывать "Пожалуйста, подождите" пока происходят длительные события ниже, но отображается она только в тонком клиенте, а в веб-клиенте - нет, ждёт, пока наступит КонецПроцедуры. //тут заполнение параметров, для передачи в ФормаТяжелая ФормаТяжелая=ПолучитьФорму(....); //тут заполнение реквизитов ФормаТяжелая ФормаТяжелая.Открыть();//при открытии закрывается ФормаПодождите КонецПроцедуры Пробовал: * Открыть ФормаПодождите через подключение обработчика ожидания, но не вариант, иногда ТяжелаяФорма открывается быстрее (если в ней мало данных), чем срабатывает этот обработчик. * ФормаПодождите.ОбновитьОтображениеДанных(); * ФормаПодождите.Активизировать();// вот, хочется, какой-то подобный вариант решения найти. Потомучто открывать ТяжелаяФорма через обработчик ожидания, с передачей всех необходимых ей параметров через "жопу" - не очень хочется... Может, кто сталкивался уже с таким? Помогите, плиз! |
|||
1
Perez512
30.01.20
✎
09:53
|
Попробовал поставить между открытиями форм ОбработкаПрерыванияПользователя(); тоже не помогает...
|
|||
2
Cyberhawk
30.01.20
✎
10:12
|
ПолучитьФорму // Тебе не поможет
|
|||
3
DrWatson
30.01.20
✎
10:12
|
#Если ВебКлиент Тогда
&НаКлиенте Перем ФормаОжидания; #КонецЕсли &НаКлиенте Процедура ОткрытьТяжелуюФорму(Команда) #Если ВебКлиент Тогда ФормаОжидания = ОткрытьФорму("Документ.МойДокумент.Форма.ФормаОжидания",, ЭтотОбъект); ЭтотОбъект.ПодключитьОбработчикОжидания("ТяжелаяФормаПослеОткрытияФормыОжидания", 0.1, Истина); #Иначе ТяжелаяФормаПослеОткрытияФормыОжидания(); #КонецЕсли КонецПроцедуры &НаКлиенте Процедура ТяжелаяФормаПослеОткрытияФормыОжидания() ОткрытьФорму("Документ.МойДокумент.Форма.ТяжелаяФорма"); #Если ВебКлиент Тогда ЭтотОбъект.ПодключитьОбработчикОжидания("ТяжелаяФормаПослеОткрытияТяжелойФормы", 0.1, Истина); #КонецЕсли КонецПроцедуры #Если ВебКлиент Тогда &НаКлиенте Процедура ТяжелаяФормаПослеОткрытияТяжелойФормы() Если НЕ ФормаОжидания = Неопределено Тогда ФормаОжидания .Закрыть(); ФормаОжидания = Неопределено; КонецЕсли; КонецПроцедуры #КонецЕсли |
|||
4
Perez512
30.01.20
✎
10:56
|
(3) Да, примерно так и придётся делать, только параметры заранее собирать и через переменную в ПроцедуруПодключенияОбработчикаОжидания передавать (там их дофига)...
И я сделал закрытие ФормыОжидания через Оповестить(..), наверное, переделаю через переменную, меньше ресурсов будет жрать, думаю. Спасибо! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |