|   |   | 
| 
 | Доступность элементов формы асинхронно Ø (Волшебник 25.07.2023 15:14) | ☑ | ||
|---|---|---|---|---|
| 0
    
        Gross2023 24.07.23✎ 16:16 | 
        Возникла сложность: не могу понять как умудриться установить доступность элементов формы (УФ) раньше, чем исполнится цикл.
 Есть процедура на клиенте, в ней есть код: Элементы.Поле1.Доступность = Ложь; Для Каждого ЭлементМассива Из Массив Цикл ... КонецЦикла; Так вот в интерфейсе происходит задержка изменения доступности на время исполнения цикла. Как сделать так, чтобы пользователь сразу увидел что элемент недоступен? | |||
| 1
    
        Fish гуру 24.07.23✎ 16:18 | 
        Устанавливай доступность в процедуре, в которой нет цикла.     | |||
| 2
    
        Волшебник 24.07.23✎ 16:19 | 
        (0) Уберите цикл, передайте управление платформе, чтобы она отрисовала изменения на форме.     | |||
| 3
    
        Gross2023 24.07.23✎ 16:19 | 
        (1) Пробовал     | |||
| 4
    
        Gross2023 24.07.23✎ 16:19 | 
        (2) Это как? Без цикла нельзя     | |||
| 5
    
        lodger 24.07.23✎ 16:21 | 
        (4) сделай 2 разных процедуры. вызывай по-очереди.     | |||
| 6
    
        Fish гуру 24.07.23✎ 16:21 | 
        (3) Установи доступность в ПриСозданииНаСервере.     | |||
| 7
    
        Gross2023 24.07.23✎ 16:21 | 
        (6) Необходимо при нажатии на кнопку устанавливать доступность     | |||
| 8
    
        Gross2023 24.07.23✎ 16:22 | 
        (5) Не помогает     | |||
| 9
    
        Gross2023 24.07.23✎ 16:23 | 
        Сейчас вот так:
 &НаКлиенте Процедура ВыполнитьОбработку(Команда) УстановитьДоступностьЭлементовУправления(Ложь); МассивДанных = ПолучитьМассивДанных(); КонецПроцедуры | |||
| 10
    
        Fish гуру 24.07.23✎ 16:24 | 
        (9) Тут нет никакого цикла.     | |||
| 11
    
        Gross2023 24.07.23✎ 16:26 | 
        (10) ТУТ есть:
 Функция ПолучитьМассивДанных() | |||
| 12
    
        Мультук гуру 24.07.23✎ 16:30 | 
        (0) 
 Типовое решение из типовой конфигурации. &НаКлиенте Процедура СделатьХорошо() Экспорт Элементы.Поле1.Доступность = Ложь; ПодключитьОбработчикОжидания("СделатьХорошоВЦикле", 0.1, Истина); КонецПроцедуры &НаКлиенте Процедура СделатьХорошоВЦикле() Экспорт Для Каждого ЭлементМассива Из Массив Цикл КонецЦикла; КонецПроцедуры | |||
| 13
    
        Gross2023 24.07.23✎ 16:37 | 
        (12) Отлично, а как передать обратно массив?     | |||
| 14
    
        Donkey_hot 24.07.23✎ 16:38 | 
        Как вариант:
 &НаКлиенте Процедура Команда1(Команда) //Устанавливаем видимость; Оповестить("НадоВыполнитьЦикл"); КонецПроцедуры &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Если ИмяСобытия = "НадоВыполнитьЦикл" Тогда //выполняем цикл КонецЕсли; КонецПроцедуры | |||
| 15
    
        Gross2023 24.07.23✎ 16:41 | 
        (14) данные из цикла через глобальную переменную передавать?     | |||
| 16
    
        Donkey_hot 24.07.23✎ 16:46 | 
        (15) Куда передавать, не очень понятно... Вы хотели выполнить какой-то кусок кода на клиенте, он просто будет выполнен в другой процедуре.     | |||
| 17
    
        Мультук гуру 24.07.23✎ 16:47 | 
        (13) 
 Типовое решение из типовой конфигурации. &НаКлиенте Процедура СделатьХорошо() Экспорт Элементы.Поле1.Доступность = Ложь; ПодключитьОбработчикОжидания("СделатьХорошоВЦикле", 0.1, Истина); КонецПроцедуры &НаКлиенте Процедура СделатьХорошоВЦикле() Экспорт МассивДанных = ПолучитьМассивДанных(); Для Каждого ЭлементМассива Из МассивДанных Цикл КонецЦикла; КонецПроцедуры | |||
| 18
    
        Gross2023 24.07.23✎ 16:53 | 
        (17) Ну, короче, создавать реквизит, или глобальную переменную?     | |||
| 19
    
        Gross2023 24.07.23✎ 16:55 | 
        (17) В процедуре СделатьХорошо() нужны данные из МассивДанных     | |||
| 20
    
        Aleksandr N 24.07.23✎ 16:55 | 
        (0) Условное оформление не предлалагть?     | |||
| 21
    
        Gross2023 24.07.23✎ 16:56 | 
        (20) Предлагать, если будет работать     | |||
| 22
    
        Aleksandr N 24.07.23✎ 16:56 | 
        (21) Предлагаю.     | |||
| 23
    
        Donkey_hot 24.07.23✎ 16:56 | 
        (19) А что мешает получить массив и тут же его обработать в данной процедуре?     | |||
| 24
    
        Aleksandr N 24.07.23✎ 16:57 | 
        (22) хотя не, это же для таблиц вроде     | |||
| 25
    
        Gross2023 24.07.23✎ 16:57 | 
        (22) Спасибо     | |||
| 26
    
        Donkey_hot 24.07.23✎ 16:58 | 
        (23) Проще говоря, что мешает вынести все, что Вы планировали выполнить после установки видимости в отдельную процедуру и вызвать ее как угодно (через обработчик ожидания или через Оповестить())?     | |||
| 27
    
        Gross2023 24.07.23✎ 16:59 | 
        (26) Спасибо, попробую. И оформление попробую тоже     | |||
| 28
    
        Жан Пердежон 24.07.23✎ 18:49 | 
        (19) не нужны     | |||
| 29
    
        Gross2023 25.07.23✎ 08:10 | 
        Получилось так:
 &НаКлиенте Процедура ВыполнитьОбработку(Команда) УстановитьДоступностьЭлементовУправления(Ложь); ПодключитьОбработчикОжидания("ЗапуститьФоновоеЗаданиеНаКлиенте", 0.1, Истина); КонецПроцедуры Цикл выполняется в обработчике ожидания. Всем спасибо, а то к вечеру голова не работает совсем... | |||
| 30
    
        lodger 25.07.23✎ 12:06 | 
        (29) >> а то к вечеру голова не работает совсем
 какой знакомый симптом. был тут один многоликий .нус с таким симптомом. | |||
| 31
    
        Gross2023 25.07.23✎ 15:07 | 
        (30) Это оскорбление?     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |