Имя: Пароль:
1C
1С v8
Управление видимостью элементов. Мобильная платформа.
,
0 ТимурСФ
 
18.08.17
08:29
Добрый день.
Не происходит изменение видимости элементов на форме. Код:

&НаКлиенте
Процедура НачатьРаботу(Команда)
    Элементы.Приветствие.Видимость = Ложь;
    Элементы.Обмен.Видимость = Истина;
    Если МП_ОбменСервер.ПроверитьПодключение() Тогда
        Если МП_ОбменСервер.ВыполнитьСинхронизациюПошагово() Тогда
            Элементы.Обмен.Видимость = Ложь;
            Сообщить("Синхронизация прошла успешно!");    
        Иначе
            Элементы.Обмен.Видимость = Ложь;
            Сообщить("При синхронизации были ошибки!");
        КонецЕсли;    
        Элементы.Работа.Видимость = Истина;
        ОбработатьСтраницуЗаданий();
        МП_СлужебныйКлиент.ПроверкаНеЗавершенныхАктов();
        МП_ГеопозиционированиеКлиент.ВключитьАвтоЗаписьКоординат();
    Иначе
        Элементы.Обмен.Видимость = Ложь;
        Сообщить("Неверные данные подключения! Выполните настройку еще раз.");    
        Элементы.Подключение.Видимость = Истина;
        ЗаполнитьОпцииПодключения();
        Возврат;
    КонецЕсли;    
КонецПроцедуры

По логике при нажатии этой кнопки на экране должен отобразиться элемент "обмен", а затем начаться вызов всего последующего кода. На деле при нажатии кнопки экран зависает (выполняется весь код обмена) а затем происходит изменение видимости элементов. В чем может быть проблема?
1 Рэйв
 
18.08.17
08:32
а зачем тебе галки если сразу начинает работать код?
2 ТимурСФ
 
18.08.17
08:59
Должно быть так:
Пользователь нажимает кнопку "НачатьРаботу"
На экране отображается надпись "Идет обмен" (Элементы.Обмен.Видимость = Истина;)
Выполняется код (крутится колесико ожидания)

А на деле:
Пользователь нажимает кнопку "НачатьРаботу"
Выполняется код (крутится колесико ожидания)
и уже потом происходят все изменения видимости элементов
3 Рэйв
 
18.08.17
09:02
(2)Повторяю вопрос. Чем спасут пользователя видимые галки если код уже пошел выполняться? Эти галки и их видимость никак не влияют на код.
4 dezss
 
18.08.17
09:03
(2) потому что код выполняется асинхронно.
Если хочешь менять видимость до начала обмена, то обмен запускай через обработчик ожидания. И весь код после запуска обработчика переноси из этой процедуры в обработчик.
5 ТимурСФ
 
18.08.17
09:04
(3) Пока выполняется код, пользователь должен видеть на экране надпись "Идет обмен"
6 Рэйв
 
18.08.17
09:05
(5)Он ее и видит.А галки ему для чего?
7 ТимурСФ
 
18.08.17
09:08
(6) вы видимо невнимательно прочли первое сообщение. Нет никакой галки. И он не видит надпись.
8 ptiz
 
18.08.17
09:09
(0) "на экране должен отобразиться элемент "обмен"" - может, но не должен. Видимость, как правило, меняется только при завершении выполнения кода процедуры.
9 Рэйв
 
18.08.17
09:09
(7)а, так это у тебя просто текст чтоли? Ну так форма не успевает обновиться перед тем как ты запустил обрабатываться код.
10 ТимурСФ
 
18.08.17
09:09
(8) А вот это уже по делу.
А есть какой то способ вначале изменить видимость а потом уже выполнить весь остальной код?
11 Рэйв
 
18.08.17
09:10
чтобы не морочить себе голову сделай как все нормальные люди:

Состояние("Идет обмен...");
12 FoxFox
 
18.08.17
09:12
(11) На мобильной платформе?
13 dezss
 
18.08.17
09:14
(10) прочти (4)
14 ТимурСФ
 
18.08.17
09:30
(13) Извиняюсь, не увидел.
С обработчиком ожидания работает как надо. Спасибо. Тема закрыта