|
Доступность элементов формы асинхронно Ø (Волшебник 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) Это оскорбление?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |