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