Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Отображение формы длительной операции в ВебКлиенте

Отображение формы длительной операции в ВебКлиенте
Я
   Perez512
 
30.01.20 - 09:44
8.3.16.1063, самописная конфигурация, работаем через веб.
Задача: перед открытием "тяжёлой" формы (через браузер открывается секунды 3-4) - показывать форму просто с текстовой декорацией "Пожалуйста, подождите", а после открытия "тяжёлой" формы - её закрывать.
Ок, сделал, в тонком клиенте всё работает, а в вёб клиенте эта форма не показывается. Не показывается, я так понимаю, пока ФормаПодождите.Открыть() и ФормаТяжелая.Открыть() находятся подряд, без ПодключенияОбработокОжидания, т.е.:

Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ФормаПодождите=ПолучитьФорму(....);
ФормаПодождите.Открыть();//вот тут, по идее, она должна открыться и показывать "Пожалуйста, подождите" пока происходят длительные события ниже, но отображается она только в тонком клиенте, а в веб-клиенте - нет, ждёт, пока наступит КонецПроцедуры.

//тут заполнение параметров, для передачи в ФормаТяжелая
ФормаТяжелая=ПолучитьФорму(....);
//тут заполнение реквизитов ФормаТяжелая
ФормаТяжелая.Открыть();//при открытии закрывается ФормаПодождите

КонецПроцедуры

Пробовал:
* Открыть ФормаПодождите через подключение обработчика ожидания, но не вариант, иногда ТяжелаяФорма открывается быстрее (если в ней мало данных), чем срабатывает этот обработчик.
* ФормаПодождите.ОбновитьОтображениеДанных();
* ФормаПодождите.Активизировать();// вот, хочется, какой-то подобный вариант решения найти. Потомучто открывать ТяжелаяФорма через обработчик ожидания, с передачей всех необходимых ей параметров через "жопу" - не очень хочется...

Может, кто сталкивался уже с таким? Помогите, плиз!
   Perez512
 
1 - 30.01.20 - 09:53
Попробовал поставить между открытиями форм ОбработкаПрерыванияПользователя(); тоже не помогает...
   Cyberhawk
 
2 - 30.01.20 - 10:12
ПолучитьФорму // Тебе не поможет
   DrWatson
 
3 - 30.01.20 - 10:12
#Если ВебКлиент Тогда

&НаКлиенте
Перем ФормаОжидания;
#КонецЕсли


&НаКлиенте
Процедура ОткрытьТяжелуюФорму(Команда)
    
    #Если ВебКлиент Тогда

        ФормаОжидания = ОткрытьФорму("Документ.МойДокумент.Форма.ФормаОжидания",, ЭтотОбъект);
        ЭтотОбъект.ПодключитьОбработчикОжидания("ТяжелаяФормаПослеОткрытияФормыОжидания", 0.1, Истина);
    #Иначе

        ТяжелаяФормаПослеОткрытияФормыОжидания();
    #КонецЕсли

    
КонецПроцедуры

&НаКлиенте
Процедура ТяжелаяФормаПослеОткрытияФормыОжидания()

    ОткрытьФорму("Документ.МойДокумент.Форма.ТяжелаяФорма");
    
    #Если ВебКлиент Тогда

        ЭтотОбъект.ПодключитьОбработчикОжидания("ТяжелаяФормаПослеОткрытияТяжелойФормы", 0.1, Истина);
    #КонецЕсли


КонецПроцедуры

#Если ВебКлиент Тогда

&НаКлиенте
Процедура ТяжелаяФормаПослеОткрытияТяжелойФормы()

    Если НЕ ФормаОжидания  = Неопределено Тогда
    
        ФормаОжидания .Закрыть();
        ФормаОжидания = Неопределено;
    
    КонецЕсли;

КонецПроцедуры
#КонецЕсли
   Perez512
 
4 - 30.01.20 - 10:56
(3) Да, примерно так и придётся делать, только параметры заранее собирать и через переменную в ПроцедуруПодключенияОбработчикаОжидания передавать (там их дофига)...
И я сделал закрытие ФормыОжидания через Оповестить(..), наверное, переделаю через переменную, меньше ресурсов будет жрать, думаю.
Спасибо!

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.