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