|   |   | 
| 
 | Управление видимостью элементов. Мобильная платформа. | ☑ | ||
|---|---|---|---|---|
| 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) Извиняюсь, не увидел.
 С обработчиком ожидания работает как надо. Спасибо. Тема закрыта | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |