|
Блокировка всех элементов управляемой формы, кроме одного | ☑ | ||
---|---|---|---|---|
0
Лкфае гтв Дшысре
15.03.21
✎
13:35
|
Добрый день!
Нужно, чтобы по логическому условию вся форма была заблокирована, кроме одной кнопки. Пытаюсь установить доступность = ложь у всех элементов формы, кроме этой кнопки в цикле перебора всех элементов. И возникает такая проблема - в коллекции элементов формы есть элемент ИмяЭлементаExtendedTooltip, тип которого - "ДекорацияФормы". Но у него отсутствует свойство "Доступность". Вываливается исключение. При этом, на форме есть другие элементы с типом "ДекорацияФормы" у которых есть свойство доступность. Вопрос: как выловить этот кривой элемент ExtendedTooltip без использования Попытка-Исключение и поиска "ExtendedTooltip" в имени реквизита? Может вообще можно как-то по-другому блокировать все элементы, кроме одного? Свойство "ТолькоПросмотр" формы - не вариант, поскольку по кнопке изменяются данные. |
|||
1
acht
15.03.21
✎
13:42
|
J xtv vjlyj ujdjhbnm c xtkjdtrjv, rjnjhsq yt pyftn rfr gbitncz Light?
|
|||
2
Масянька
15.03.21
✎
13:44
|
(1) О! Месье понимает толк в извращениях!
|
|||
3
Woold
15.03.21
✎
13:58
|
Тем, кому интересно, но кто ленивый, (1) написал "О чем модно говорить с человеком, который не знает как пишется Light?".
Почему (1) общается только модно осталось за кадром. |
|||
4
Kassern
15.03.21
✎
14:02
|
(1) ну так он по немецки написал...kraft und licht (сила и свет)
|
|||
5
Ёпрст
15.03.21
✎
14:05
|
(0) если лень проверять свойство, то Попытка-Исключение.. и привет.
|
|||
6
Ёпрст
15.03.21
✎
14:05
|
А так, можно только нужным Группам делать доступность, так быстрее, чем всем элементам формы
|
|||
7
Woold
15.03.21
✎
14:09
|
(0) Можешь еще перед блокировкой обойти все элементы формы, и собрать список элементов, являющихся "РасширеннымиПодсказками" для других элементов формы.
Ну а потом обходи все элементы повторно, и если элемент не будет входить в собранный массив "РасшиернныеПодсказки" устанавливай этим элементам доступность. |
|||
8
acht
15.03.21
✎
14:13
|
(7) > и собрать список элементов, являющихся "РасширеннымиПодсказками"
А там, конечно, определение того, что элемент является расширенной подсказкой, будет сделано совершенно по другому, да. |
|||
9
Масянька
15.03.21
✎
14:15
|
(4) Вот это "Лкфае гтв Дшысре" по-немецки?!
|
|||
10
программистище
15.03.21
✎
14:16
|
(1) двойной слепой метод ввода
|
|||
11
Ёпрст
15.03.21
✎
14:16
|
(9) lf
|
|||
12
Ёпрст
15.03.21
✎
14:17
|
(9) ybrjulf nfr yt gbcfkf xnj kt &
|
|||
13
программистище
15.03.21
✎
14:17
|
(0) делай тогда уж через попытку
|
|||
14
Лкфае гтв Дшысре
15.03.21
✎
14:20
|
(1) уже написали, что это по-немецки) И да, забыл, написал Lischt. Стыд мне и позор)
|
|||
15
Лкфае гтв Дшысре
15.03.21
✎
14:21
|
(5) Попытка - исключение - это медленно. Поэтому и возник вопрос.
|
|||
16
Лкфае гтв Дшысре
15.03.21
✎
14:22
|
(7) Смешная шутка)
|
|||
17
Масянька
15.03.21
✎
14:22
|
(12) E vtyz gthtrk.xfntkm cnjbn/
|
|||
18
Ёпрст
15.03.21
✎
14:23
|
(15) медленно ? )) Схрена ли ?
|
|||
19
Ёпрст
15.03.21
✎
14:24
|
(17) фу, какая бяка.. никогда не понимал этих автоматических переключателей клавы.
|
|||
20
Масянька
15.03.21
✎
14:25
|
(19) Рада за тебя. Правда.
|
|||
21
Лкфае гтв Дшысре
15.03.21
✎
14:26
|
(18) Перебор происходит при открытии формы. В цикле из ~100 элементов отлавливать исключение - это неплохо так тормознёт открытие
|
|||
22
Ёпрст
15.03.21
✎
14:27
|
(21) ну дык, ты проверь. Нет там никаких тормозов при этом.
Нужна скорость - рули доступностью группы. Можешь хоть все элементы в одну группу затолкать |
|||
23
Ёпрст
15.03.21
✎
14:27
|
Точнее, не скорость, а меньше кода.. :)
|
|||
24
Kassern
15.03.21
✎
14:28
|
(21) помести все элементы формы в одну группу и ограничь доступ к ней. А твой нужный реквизит запихни вне этой группы.
|
|||
25
Многолетний Апельсин
15.03.21
✎
14:31
|
>>Вопрос: как выловить этот кривой элемент ExtendedTooltip без использования Попытка-Исключение и поиска "ExtendedTooltip" в имени реквизита?
Использовать что-то типа такой функции для проверки: Функция ЕстьРеквизитОбъекта(Объект,ИмяРеквизита) ИД = новый УникальныйИдентификатор; Проверка = новый Структура(ИмяРеквизита,ИД); ЗаполнитьЗначенияСвойвств(Проверка,Объект); Возврат (Проверка[ИмяРеквизита] <> Ид); КонецФункции |
|||
26
Лкфае гтв Дшысре
15.03.21
✎
14:33
|
(24) Пожалуй, да. Пока это самый оптимальный вариант
|
|||
27
Лкфае гтв Дшысре
15.03.21
✎
14:34
|
(25) Можно и так, но слишком громоздко. Я надеялся, что кто-нибудь поделиться более быстрым вариантом, чем перебор всех элементов формы.
|
|||
28
программистище
15.03.21
✎
14:36
|
так может проверять на
Тип: ДекорацияФормы, ГруппаФормы, КнопкаФормы, ТаблицаФормы, ПолеФормы. |
|||
29
polosov
15.03.21
✎
14:38
|
(27) Это "бест практис" из типовых.
|
|||
30
banco
15.03.21
✎
14:54
|
(0) ЭтаФорма.ТолькоПросмотр = Истина а у команды снимаешь галочку изменяет данные
|
|||
31
Лкфае гтв Дшысре
15.03.21
✎
14:59
|
(30) Эта кнопка реально изменяет данные объекта. Если снять галку изменяет данные, то не будет меняться модифицированность и объект не будет блокироваться для изменения. Модифицированность можно и вручную включить, а вот с блокировкой связываться не хочется
|
|||
32
Лкфае гтв Дшысре
15.03.21
✎
15:03
|
(28) С проверкой по типу данных вот такой интересный прикол: https://ibb.co/svQXPpr
|
|||
33
acht
15.03.21
✎
16:10
|
(32) ЭтоРасширеннаяПодсказка = Элемент.Родитель.РасширеннаяПодсказка = Элемент;
Ваш К.О. Наличие реквизита РасширеннаяПодсказка у родителя сам уж проверишь - по типу или (25). И не забудь, что на расширенной подсказке может быть активная гиперссылка, которая тоже что-то там меняет. |
|||
34
acht
15.03.21
✎
16:11
|
(33) Потом сделай замер, сравни с Попытка/Исключение и не парь народу мозг своими 100 элементами.
|
|||
35
zmaximka
15.03.21
✎
16:18
|
Для каждого Элемент Из Элементы Цикл
Если ТипЗнч(Элемент) = Тип("ДекорацияФормы") Тогда Продолжить; КонецЕсли; Элемент.Доступность = Ложь; КонецЦикла; |
|||
36
acht
15.03.21
✎
16:21
|
(35) И тут тебе хрясь, такая декорацияформы типа надпись с гиперссылкой или просто с нажатием
|
|||
37
Лкфае гтв Дшысре
15.03.21
✎
16:25
|
(34)
Для Каждого Элемент Из ЭтаФорма.Элементы Цикл Попытка Элемент.Доступность = Ложь; Исключение КонецПопытки; КонецЦикла Всегда считал такой способ проверки существования реквизита *овнокодом, так как задействуется ресурсоёмкий механизм исключений. Связывал это с тем, что исключения медленно обрабатываются. Если я не прав, то поправьте. |
|||
38
Ёпрст
15.03.21
✎
16:26
|
(37) замер то включи уже
|
|||
39
Лкфае гтв Дшысре
15.03.21
✎
16:28
|
(35) скрин посмотрите в (32)
|
|||
40
Лкфае гтв Дшысре
15.03.21
✎
16:28
|
(38) Лениво, поверю на слово)))
|
|||
41
banco
15.03.21
✎
17:34
|
(31) В чем проблема программно ставить модифицированность и блокировку?
ЗаблокироватьДанныеФормыДляРедактирования(); И если изменили объект модифицированность = истина; |
|||
42
Dzenn
гуру
15.03.21
✎
17:55
|
Думаю, задача В ПРИНЦИПЕ звучит неверно. Ставь ВСЮ форму на просмотр, а кнопку располагай так, чтобы она не являлась элементом формы. Если это управляшки, то можно вынести в команду или в подчинённую форму. Если обычные формы, то форму списка документов, например. Способов много, мораль одна — не ищи обходных путей, будь в тренде возможностей платформы.
|
|||
43
acht
15.03.21
✎
18:00
|
(42) Бедные твои пользователи
|
|||
44
ДедМорроз
15.03.21
✎
21:32
|
А зачем все,когда мы делаем недоступным элемент,то все его дети также становятся недоступными.
Поэтому,проверять на владельца,чтобы только верхний уровень и в путь. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |