Имя: Пароль:
1C
1С v8
Как узнать имя вызвавшего элемента
0 Jokerman
 
02.11.11
14:40
Здрасте всем. Есть некий набор кнопок, им все назначен одна команда. Как узнать имя элемента вызвавшего эту команду в теле самой команды?
1 Beduin
 
02.11.11
14:40
(0) В процедуру передается вроде элемент?
2 GROOVY
 
02.11.11
14:41
"им все назначен одна команда" - Это плохой стиль кода.
(1) +1
3 Jokerman
 
02.11.11
14:42
Сорри *назначена одна команда
4 Jokerman
 
02.11.11
14:42
(1) Нет команда - уже пробовал
5 Fish
 
02.11.11
14:45
(2) Почему же плохой? Универсальная процедура, если требуется сделать часть действий одних и тех же, а часть действий различных, в зависимости от имени кнопки. Зато потом, если что-то надо изменить, придется менять не в 10-ти местах, а только в одном :)))
6 Fish
 
02.11.11
14:47
(0) Стандартно при нажатии на кнопку панели в процедуру передается параметр "Кнопка". Посмотри "Кнопка.Имя".
7 Mort
 
02.11.11
14:47
(5) Не путай команду и процедуру
8 Jokerman
 
02.11.11
14:50
(7) Да, да
Забыл сказать что кнопы создаются динамически
9 unregistered
 
02.11.11
14:51
(5) >> Почему же плохой?
Потому что для каждого элемента формы (кнопки) лучше вызывать свой обработчик (для выполнения каждой команды свой обработчик). А вот уже из этих обработчиков обращаться к одной и той же универсальной процедуре. При этом, если есть различия в выполнении кода этой универсальной процедуры, то можно передавать различные значения параметра в эту самую процедуру из различных обработчиков (например, имя команды).

При этом сохраняется возможность вносить нужные изменения только в одном месте, а не в 10-ти.
10 Fish
 
02.11.11
14:53
(7) да, не обратил внимания :)))
11 Fish
 
02.11.11
14:55
(9) И чем же лучше? А если кнопки создаются программно и их количество заранее неизвестно?
12 Beduin
 
02.11.11
14:56
(0) ЭтаФорма.ТекущийЭлемент
13 Mort
 
02.11.11
14:56
(8) И команды тоже создавай и првязывай им один обработчик. А там по имени команды и смотри.
14 Mort
 
02.11.11
14:57
(12) Кнопки на КП так не палятся. И вообще криво.
15 Beduin
 
02.11.11
14:59
(14) Если на какой либо форме надо узнать кнопку, то этого достаточно.
Криво сделано в 1С. Так что это - кривость кривости.
16 Fish
 
02.11.11
15:00
в (13), наверное, самое правильное решение
17 shamannk
 
02.11.11
15:10
Если тебе надо отработать нажатие кнопок назнач им одну процедуру а дальше:
ПриИзменении(Кнопка) Экспорт
   Если Кнопка.Имя="КнопкаСравнить"
18 Jokerman
 
02.11.11
15:11
(13) Спасибо, как не догадался
19 Jokerman
 
02.11.11
15:11
(17) че то нето
20 GROOVY
 
02.11.11
15:12
Коллеги, представьте себе форму где 100500 элементов, и процедуры в модуле по наименованию ну никак не отражают сути элемента который их вызывает. Вы что будете "протыркивать" все элементф формы чтобы найти нужную процедуру-обработчик?! Я с такими формами работал. Хочется по рукам надавать тому кто так пишет.
21 skunk
 
02.11.11
15:13
(20)а в свойствах глянуть религия не позоволяет?
22 Fish
 
02.11.11
15:14
(20) Еще раз повторюсь, как быть, если элементы формы добавлены программно? Или кошерная религия 1С запрещает это делать, а надо тупо рисовать 100500 кнопочек? :))
23 Fish
 
02.11.11
15:16
+(22) И прописывать для них 100500 разных процедур, которые делают практически одно и то же?
24 Jokerman
 
02.11.11
15:22
(23) Согласен, мне лично удобнее так
25 GROOVY
 
02.11.11
15:23
(21) В своствах чего? Каждого из элементов формы?
(22) Про программное добавление в оригинале речи не шло.
26 Fish
 
02.11.11
15:25
(25) в (8) только сказал :))
(24) Так это как? Как в (20)? :))
27 Jokerman
 
02.11.11
15:28
Да, ладно вам Mort сказал дело, как кому делать это его выбор, спасибо всем за участие!!!
28 Fish
 
02.11.11
15:31
(25) Мне кстати гораздо быстрее посмотреть в свойствах элемента формы, какую он процедуру вызывает, чет искать наименование процедуры среди длинных одинэсовских названий типа "ОсновныеДействияФормыБлаБлаБлаКнопочкаЧтоТоТамДелающаяПриИзменении" :)))

Забыли уже люди досовские времена, когда было ограничение на имя файла 8 символов, и оно должно было отражать суть выполняемой программы :)))
29 skunk
 
02.11.11
16:07
(25)зачем каждого ... зачем мне протыкивать все элементы формы что-бы найти нужную процедуру-обработчик ... если я хочу глянуть какой у кнопки обработчик ... то тыкаю на кнопку и смотрю ... какой у нее обработчик...


все кнопки для этого мне тыкнать не надо
30 skunk
 
02.11.11
16:09
(28)+100500 ... тем более учитывая определенную тягу менять обработчик у кнопок не мения названия обработчика ...


и оказывается, "ОсновныеДействияФормыБлаБлаБлаКнопочкаЧтоТоТамДелающаяПриИзменении" вызывается при клике на БлаБлаБлаКнопочкаДругая
31 GROOVY
 
02.11.11
17:30
(29) Зайдем с другой стороны. Есть процедура обработчик события элемента формы, называется "Афигеть(Элемент)". Элементов 100500, как узнать из какого элемента, из какого события она вызывается?
32 skunk
 
03.11.11
06:49
(31)хм ... поиск отменили?