Имя: Пароль:
1C
1С v8
При нажатии на кнопку определить, какое поле активно
0 ic-kat
 
24.08.12
17:45
задача такая - есть форма, на ней несколько полей ввода и кнопок,
встаем на одно поле и нажимаем кнопку и нужно чтобы в поле,
в котором только что были, менялось значение.
как отследить, в каком поле только что были?
по  ЭтаФорма.ТекущийЭлемент.Имя   выдает имя кнопки, на которую нажали.
1 Wobland
 
24.08.12
17:51
чего только ни понапридумывают. на зачем?
2 ic-kat
 
24.08.12
17:54
(1)не было бы нужно, не спрашивала бы.
ты попробуешь помочь или покритиковать зашел?
3 sanja26
 
24.08.12
17:55
фотку?
какие формы?
4 Wobland
 
24.08.12
17:56
(2) критиковать цели не имею. а любопытство имею
5 PR
 
24.08.12
17:56
(0) Никак.
6 ic-kat
 
24.08.12
17:56
(3) УФ
вот мне интересно, зачем фотку спрашивают? уродливым не помогаете?
7 Wobland
 
24.08.12
17:56
часто иногда спрашивают "а как сделать ересь", не понимая, что правильный ответ: "ересь делать не нужно"
8 Wobland
 
24.08.12
17:57
(6) это такая традиция, и мы не в силах её изменить
9 sanja26
 
24.08.12
17:57
(5) че это?
10 ic-kat
 
24.08.12
17:58
(5) совсем никак?
(4) на форме расположены поля ввода неких параметров и клавиатура с цифрами, нужно заполнить каждое поле.
11 ic-kat
 
24.08.12
18:00
нашла конечно обходной путь, но он что-то мне не нравится - вставить группу с рамкой и в нее кнопку, при нажатии ее фиксировать, какое "поле" активно
(9) можно все-таки?
12 Wobland
 
24.08.12
18:00
(10) обработкой активизации запоминаешь, в кнопке узнаёшь
13 Юрий Лазаренко
 
24.08.12
18:00
(10) Ну если совсем не думать, то заведи переменную, в которой храни имя последнего активизированного поля. Переменную заполнять при активизации поля. При нажатии кнопки в переменной у тебя будет имя последнего активного поля. Если думать, то возможно найдется более изящное решение.
14 Wobland
 
24.08.12
18:01
(13) я что-то более изящного даже нафантазировать не могу
15 Юрий Лазаренко
 
24.08.12
18:01
(14) Ну ХЗ, если в СП покопаться, то может и найдется что. Хотя пока навскидку ничего в голову не идет.
16 ic-kat
 
24.08.12
18:02
(12) что за обработка активизации?
17 Wobland
 
24.08.12
18:03
о! нафантазировал! свойство формы ПредыдущийАктывныйЭлемент ;)
18 Wobland
 
24.08.12
18:03
(16) в свойства поля сходи
19 sanja26
 
24.08.12
18:04
(18) в УФ нет приАктивизации()
20 PR
 
24.08.12
18:04
(19) Можно подумать в обычных есть :))
21 sanja26
 
24.08.12
18:05
так она фотку не выложит...
ОкончаниеВВодаТекста() и реквизит формы с типом строка, в который заносить наименование последнего активного реквизита
22 ic-kat
 
24.08.12
18:06
не нашла ни активизации, ни предыдущегоАктивного...
23 Wobland
 
24.08.12
18:06
аа, это я у формы смотрел ;)
24 Wobland
 
24.08.12
18:07
делай радиобаттон возле каждого поля
25 ic-kat
 
24.08.12
18:09
(21) выложу. если разберусь. на радостях-то)
почему на окончании? я же в него ничего пока не ввожу и вводить буду кнопками с цифрами, а для этого надо понять, в какое именно
26 ic-kat
 
24.08.12
18:09
(24) чего делать?
27 Wobland
 
24.08.12
18:11
(26) круглая галка. переключатель
28 ic-kat
 
24.08.12
18:12
(27) костыль получается
хотим уйти на такую форму как раз чтобы меньше кликов делать при заполнении параметров
29 Wobland
 
24.08.12
18:12
(28) тогда жди 8.4 ;)
30 Wobland
 
24.08.12
18:13
плин, если у юзера нету рук (клавиатуры), то придётся жертвовать каким-то удобством
31 sanja26
 
24.08.12
18:14
(28) ты когда с поля ввода уходишь на любой другой элемент формы должно сработать ОкончаниеВВодаТекста()
32 ic-kat
 
24.08.12
18:14
не срабатывает ((
33 ic-kat
 
24.08.12
18:14
(30) с галками ну совсем криво получится, поставить, заполнить, снять, поставить у другого поля...
34 Wobland
 
24.08.12
18:16
(33) радиобаттон. один раз поставить и вводить
35 PR
 
24.08.12
18:16
Делай кнопки без фокусирования, тогда свойство формы "ТекущийЭлемент" будет указывать на поле ввода.
Например, если ты нажимаешь кнопку в панели кнопок, то фокус на кнопку не переходит.

С тебя фото :))
36 Wobland
 
24.08.12
18:18
(35) сейчас она захочет это видеть справа от полей. не знаю, мож, в УФ панели кнопок можно и в "тело" формы засунуть...
37 PR
 
24.08.12
18:20
(36) Если справа от полей, то при нажатии кнопки известно поле ввода, в котором нужно менять. В чем проблема-то?
38 Wobland
 
24.08.12
18:23
(37)
ПолеВвода1    7 8 9
ПолеВвода2    4 5 6
ПолеВвода3    1 2 3
39 PR
 
24.08.12
18:25
(38) И че?
Делай три панели по три кнопки и нажимай.
40 Wobland
 
24.08.12
18:26
(39) ну я не до конца понимаю, как это реализовать. и не хочу. главное, чтоб автор понял ;)
41 Aprobator
 
24.08.12
18:32
(6)он не про конфигурацию (... какие формы ....) )))
42 Wobland
 
24.08.12
18:33
(41) они пока не управляются никак
43 SUA
 
24.08.12
18:34
как вариант - кликом по полю ввода открывается вспомогательная форма и там кнопками вводится значение
44 Aprobator
 
24.08.12
18:39
я вообще не понимаю, а чем стандартные поля ввод или выбора не катят?
45 SUA
 
24.08.12
18:44
(44)как я понял тачпад
46 Aprobator
 
24.08.12
18:47
ну и?
47 ic-kat
 
25.08.12
08:02
(35) как без фокусирования делать?
(45) да, тачпад
48 Wobland
 
25.08.12
08:07
(47) там же чуть ниже: нажимаешь кнопку в панели кнопок
49 echo77
 
25.08.12
08:14
(47) а как без фотки разбираться?
50 ic-kat
 
25.08.12
08:33
(48) где - там?
51 ic-kat
 
25.08.12
08:38
(43) она так и было изначально, хотят сделать, чтобы меньше кликов было - открыли и заполнили все
52 ic-kat
 
25.08.12
08:38
(49) я же сказала - будет фотка.
только ни на шаг еще не продвинулась...
53 Wobland
 
25.08.12
09:07
(50) -> (35)
(52) уже несколько вариантов предложили. делать за тебя никто не станет
54 Lex_Liven
 
25.08.12
09:11
(52) в поле ввода - никак. используй ПолеНадписи + Гиперссылка. Там можно обработать событие ПриНажатии, только надо сделать СтандарьнаяОбработка = Ложь; а то выскакивает окошко со значением поля.
55 Lex_Liven
 
25.08.12
09:12
+(54) Ну и шрифт для тачскрина подогнать надо, конечно. Если совсем никак - пиши на мыло, скину пример.
56 ic-kat
 
25.08.12
09:41
(54) ты про декорацию? так и хотела, но без гиперссылки нажатие на обрабатывается, с гиперссылкой не подойдет, сейчас делаю вместо поля кнопку, но не в восторге от этого
(53) да за меня делать не надо. я не поняла про фокусирование, где отключить его. как сделать, чтобы при нажатии не фокусировалось?
57 Lex_Liven
 
25.08.12
09:43
(54) я про ПолеНадписи, а не декорацию. Почему с гиперссылкой не пойдет?
58 Wobland
 
25.08.12
09:58
(56) кнопку на тулбар (или как его там в УФ) забабашь
59 ic-kat
 
25.08.12
09:59
(57) да что надпись, что поле надписи, если заголовка нет - то нажатие не отрабатывается.
а у меня открывается форма с пустыми значениями параметров, которые надо заполнить.
или я тебя не поняла
60 Lex_Liven
 
25.08.12
10:01
(59) я серьезно, напиши на мыло - вышлю пример. У меня все работает.
61 Wobland
 
25.08.12
10:04
не кнопка, а пункт меню
62 ic-kat
 
25.08.12
10:08
(61) и?
(60) написала
63 Lex_Liven
 
25.08.12
10:15
(62) отправил. Смотри, там два поля типа Число и одно - Строка. Одни и те же две кнопки для любого из трех полей.
64 Lex_Liven
 
25.08.12
10:16
(62) да, кстати, обрати внимание на свойство "Формат" у числовых полей - там задано представление нуля.
65 ic-kat
 
25.08.12
10:22
(64) получается, что если там поле надписи с ГС, то если его выводить пустым, то нажиматься не будет?
66 ic-kat
 
25.08.12
10:26
нет, даже не так, просто не получится при ГС вывести поле пустым, да?
67 Lex_Liven
 
25.08.12
10:27
(65) Именно так и получается - нажимать становится не на что.
68 ic-kat
 
25.08.12
10:27
можно только 0 оставить
69 ic-kat
 
25.08.12
10:28
через формат как раз
70 ic-kat
 
25.08.12
10:28
Wobland, ау, ты мне не объяснишь, чего с пунктом меню делать дальше? хочу перебрать все варианты.
71 ic-kat
 
25.08.12
10:30
(67)ага, а когда прочерк стоит как представление нуля, то как раз пустое поле выводится
72 ic-kat
 
25.08.12
10:33
(71) но чтобы отработалось нужно будет попасть именно в то место, где предположительно стоит этот прочерк ((
73 Lex_Liven
 
25.08.12
10:48
(72) там можно представление 0 написать вручную в виде "--------------"
74 ic-kat
 
25.08.12
10:56
(73) как-то немного коряво, по-моему
но, спасибо за помощь
75 Wobland
 
25.08.12
10:59
(70) автор идеи - PR, а я детально не представляю на УФ - общения с ними маловато. иллюстрирую на обычных:
http://screencast.com/t/iWcUlohfcn8r
http://screencast.com/t/4jcRVLLKbd0
76 Lex_Liven
 
25.08.12
10:59
Кажется, есть способ найти элемент формы по его имени, зафиксированному в переменной, но я, честно говоря, не хочу сейчас искать его.
Фотку это все не отменяет.
Кстати, для дописывания в число очередной введенной цифры простой алгоритм знаешь?
Число = Число*10+Цифра;
77 Wobland
 
25.08.12
11:04
(76) ЭлементыФормы["ПолеВвода1"]
78 ic-kat
 
25.08.12
11:06
(75) не уверена, что три ряда кнопок на панель засунуть в уф можно
79 Wobland
 
25.08.12
11:14
(78) пробовать за тебя добрый дядя будет?
http://screencast.com/t/HDTsfaNK
80 ic-kat
 
25.08.12
11:26
(79)ты вроде там командную панель воткнул, а тут просто группу кнопок.
по последней картинке не поняла, что нам это дает.
81 Wobland
 
25.08.12
11:38
(80) это нам даёт желаемый ТекущийЭлемент в команде по одному клику
82 shpioleg
 
25.08.12
11:43
А если на каждое нужное поле подвесить обработчик ПриНачалеВыбора, а АвтоВыборНезаполненного выставить в Да ?
Например,

&НаКлиенте
Перем ПредыдущийЭлемент;
&НаКлиенте
Процедура Фокусировать(Команда)
   Сообщить (ПредыдущийЭлемент.Имя);
КонецПроцедуры

&НаКлиенте
Процедура РеквизитЧислоНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   ПредыдущийЭлемент = Элемент;
   СтандартнаяОбработка = Ложь;
КонецПроцедуры

&НаКлиенте
Процедура РеквизитСтрокаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   ПредыдущийЭлемент = Элемент;
   СтандартнаяОбработка = Ложь;
КонецПроцедуры
83 Юрий Лазаренко
 
25.08.12
11:52
Повесить на форму обработчик ожидания, в котором запоминать последнее активное поле, а при нажатии кнопки писать в это поле значение, уже предлагали?
84 Wobland
 
25.08.12
11:54
(83) 0.1 секунды.. не очень мало, но как-то некрасиво
85 Юрий Лазаренко
 
25.08.12
11:55
(84) Зато дешево, удобно и практично (с)
86 shpioleg
 
25.08.12
11:59
Еще можно попробовать к полям добавить кнопку (КнопкаСпискаВыбора/КнопкаОчистки/КнопкаОткрытия) и в обработчике нажатия запоминать элемент

&НаКлиенте
Процедура РеквизитСтрокаНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
   ПредыдущийЭлемент = Элемент;
   СтандартнаяОбработка = Ложь;
КонецПроцедуры

А вообще, как то странно, что для строк таблиц есть события при активизации, а для простых элементов нет.
87 ic-kat
 
25.08.12
12:16
в общем, время поджимает, просто воткнула кнопки вместо полей ввода,
по нажатию на них в реквизит записывается, какое поле активно и в него забивается значение.
спасибо всем за идеи и желание помочь.
фотку вечером выложу)
88 Wobland
 
25.08.12
12:17
(87) все вы обещать горазды
89 Lex_Liven
 
25.08.12
12:18
(87) есть подозрение, что 46 и три года тем назад было то же самое :)
90 Lex_Liven
 
25.08.12
12:18
+(89) 46 тем и три года назад***
91 ic-kat
 
25.08.12
19:28
(88) ну что ж ты всех под одну гребенку-то...
92 mistеr
 
25.08.12
19:39
(10) А калькулятор в каждом поле задачи не решает?