|
V8: Изменение значения в поле ввода. Какое событие? | ☑ | ||
---|---|---|---|---|
0
Liris
03.04.12
✎
14:53
|
Добрый день!
Поискал поиском по форуму, не нашел подобной темы. Платформа: 1С:Предприятие 8.2 (8.2.14.540) Есть типовая НЕ управляемая форма. На форме расположен элемент "ПолеВвода" (многострочный). В это поле вводится текст. Как в момент ввода текста считать количество символов? В других языках есть событие типа OnChange(), которое вызывается каждый раз при изменении значения в поле ввода. Здесь такого не нашел. Есть событие "ПриИзменении", но оно вызывается при потере фокуса объектом. Есть событие "АвтоПодборТекста". Использовать его можно только в случае набора текста. Стоит начать "затирать" набранный текст, событие не вызывается. У формы есть событие "ОбновлениеОтображения". Вообще не понятно в какой момент вызывается. Может быть кто-то делал подобное? Может можно подключить обработчик к "ПолюВвода" или форме? |
|||
1
Maxus43
03.04.12
✎
14:55
|
ПриИзменении
|
|||
2
Maxus43
03.04.12
✎
14:56
|
Есть событие "ПриИзменении", но оно вызывается при потере фокуса объектом - Ложь
|
|||
3
Maxus43
03.04.12
✎
14:57
|
Оно вызывается именно при изменении значения, пока вводиш - значение не меняется
|
|||
4
Fish
03.04.12
✎
14:58
|
(0) А цель этого можно озвучить? Может есть и другие варианты.
|
|||
5
Maxus43
03.04.12
✎
14:59
|
v8: Подскожите идею автоподбора в регистре сведений.
АвтоПодборТекста - работает криво, выход в подключении обработчика ожидания например |
|||
6
Liris
03.04.12
✎
15:01
|
(2) По какой-то причине событие "ПриИзменении" не вызывается.
|
|||
7
Kashemir
03.04.12
✎
15:02
|
(6) Не верю
|
|||
8
hhhh
03.04.12
✎
15:03
|
(6) процедура привязана к событию?
|
|||
9
orefkov
03.04.12
✎
15:03
|
В обработке ожидания делаешь ПолучитьГраницыВыделения, потом УстановитьГраницыВыделения(1, 1, 1, 10000),
потом читаешь ВыделенныйТекст, потом снова УстановитьГраницыВыделения по сохраненным данным. |
|||
10
Maxus43
03.04.12
✎
15:03
|
(6) вызовется когда данные изменяться. процесс набора текста - не есть изменени. нажми ентер - вызовется
|
|||
11
Liris
03.04.12
✎
15:10
|
(7)
Имя поля "SMSСообщение" В модуле формы:
Вызываю эту процедуру на событие SMSСообщениеПриИзменении. ДлинаSMSСообщения - реквизит формы.
При вводе текста в ПолеВвода не вызывается событие SMSСообщениеПриИзменении. Если закончить ввод тескта и перейти на другой объект - вызывается. |
|||
12
Fish
03.04.12
✎
15:12
|
(10) По энтеру не вызовется. Только что проверил :)) Тем более поле многострочное и энтер - это просто перевод строки.
|
|||
13
Liris
03.04.12
✎
15:13
|
(10) Поле многострочное, перевод строки получается.
Мне нужно при изменении содержимого ПоляВвода сразу знать число символов. |
|||
14
Maxus43
03.04.12
✎
15:14
|
тогда тока обработчик ожидания вешать, но там минимальный интервал - 1 секунда
|
|||
15
Maxus43
03.04.12
✎
15:14
|
можно комплексно - и обработчик ожидания и событие "АвтоПодборТекста"
|
|||
16
orefkov
03.04.12
✎
15:15
|
(13)
Так (9) же. Ну раз поле многострочное, делай УстановитьГраницыВыделения(1, 1, 10000, 10000) Проверено, работает. |
|||
17
orefkov
03.04.12
✎
15:17
|
(14)
Вроде как Форма.ПодключитьОбработчикОжидания - интервал задается в 1/10 сек. |
|||
18
Рэйв
03.04.12
✎
15:17
|
ОкончаниеВводаТекста
|
|||
19
Liris
03.04.12
✎
15:17
|
(15) Уже так делал. Но как-то не красиво получается. Простая функция, а городить такой огород.
(16) Попробую. Спасибо. Тема остается открытой для тех, кто знает более простые и изящные варианты. |
|||
20
Рэйв
03.04.12
✎
15:17
|
+(18)Но это только при интерактивном набивании строки вручную.При простом перещелвикании мышкой не сработает
|
|||
21
Maxus43
03.04.12
✎
15:18
|
(17) точно. тогда обработчика хватит, 0,1 секунды - приемлемая скорость. без автоподбора текста
|
|||
22
vmv
03.04.12
✎
15:18
|
опять костыли изобретаете
обработчики ожидания зло особенно для веб-клиента! границы выделения и есть костыль Вывод: служба обновления платформы должна занести в план работ пунктик - создать аналог метода OnChange() для поля ввода |
|||
23
Liris
03.04.12
✎
15:18
|
(18)(20) Вызывается после ввода текста при сходе с элемента управления.
Для моего случая не подходит. С элемента управления не ухожу |
|||
24
Infsams654
03.04.12
✎
15:18
|
(10) (7) - (0) пишет "В других языках есть событие типа OnChange(), которое вызывается каждый раз при изменении значения в поле ввода" - изменение значения в поле ввода - (10) как раз и есть изменени. И тут приходится изголяться (15)(16) - что не есть хорошо.
|
|||
25
vmv
03.04.12
✎
15:22
|
(24) опрботчик ПриИзменении() в 1С работает только в прошлом времени, т.е. когда событие уже произошло, наверное философия не позволяет разработчикам 1С сделать его работу и в настоящем времени или создать другое событие, например ПриИзмененииВНастоящемВремени()
|
|||
26
Liris
03.04.12
✎
15:22
|
(22) >Вывод: служба обновления платформы должна занести в план работ пунктик
Не имею опыта по общею со службой обновления платформы. Считаете, что имеет смысл обратиться? Тема открыта для более простого и изящного решения |
|||
27
orefkov
03.04.12
✎
15:23
|
(22)
Сидите и ждите, когда фирма 1С посчитает нужным это сделать. А мы не ждем, а делаем - http://snegopat.ru/mdnav.html - пример фильтрации по подстроке. |
|||
28
vmv
03.04.12
✎
15:24
|
(26) сиди тут и у них и ной раз в неделю на эту тему и прикрутят - я так часто делаю, практически все о чем ныл прикрутили)
|
|||
29
Maxus43
03.04.12
✎
15:25
|
(28) поной им что нет большой кнопки - "Сделать всё хорошо" :)
|
|||
30
vmv
03.04.12
✎
15:25
|
(27) Невозможно отобразить содержимое. Требуется Adobe Flash
на фига мне поделка котарая не может работать со стандартным дистрибутивом - это тожа костыль, чувак) |
|||
31
orefkov
03.04.12
✎
15:28
|
(30)
Какая поделка? Какой дистрибутив? Ты о чем вообще? |
|||
32
Liris
03.04.12
✎
15:28
|
(27) Могу поинтересоваться, каким образом работает верхнее ПолеВвода? Если АвтоПодборТекста, то он не реагирует на "стирание" текста. Только на набор.
(28) Понял. (29) :-) |
|||
33
Maxus43
03.04.12
✎
15:29
|
(32) сказали же - обработчик ожидания, раз в 0,1 секунды будет проверять содержимое твоего поля ввода
|
|||
34
vmv
03.04.12
✎
15:30
|
(33) запусти это чудо в веб-клиенте - накидай на форму пару таблиц, полей, подсказок и получай удовольствие
|
|||
35
Maxus43
03.04.12
✎
15:31
|
(34) мы ж не о веб
|
|||
36
vmv
03.04.12
✎
15:32
|
+(34) я считаю, что обработчики ожидания нужно уничтодить точто также как и обработчик ПриВыводеСтроки(), который был в 8.1. Это обработчики-паразиты, котрые исскушают неокрепшие умы писать г-код)
|
|||
37
orefkov
03.04.12
✎
15:33
|
(32)
Так и работает, как я описал в (9). |
|||
38
orefkov
03.04.12
✎
15:34
|
(36)
Пипец. Полсофта на таймерах работают, а это г-код оказываецца. |
|||
39
Maxus43
03.04.12
✎
15:34
|
(36) при выводе строки и в 8.2 есть если чо
|
|||
40
Fish
03.04.12
✎
15:35
|
(38) Ну некоторые и рекурсию г-кодом считают из-за неумения её понять :)))
|
|||
41
vmv
03.04.12
✎
15:39
|
(40) рекурсия - это стиль алгоритмизации кода.
я говорю не о стилях, а о методах. Любой стиль имеет право на жизнь в определенной ситуации, но не любой метод имеет право на жизнь в аналогичных ситуациях) |
|||
42
vmv
03.04.12
✎
15:41
|
(39) на УФ нету, обычные формы в 82 - это дань динозаврам, которые не могут без слез смотреть на свои культи-нетленки)
|
|||
43
vmv
03.04.12
✎
15:43
|
(38) именно так, обработчик ожидания - это как та сучка на помойке, сидит и тявкает и по делу и не по делу, нарушая общую идиллию
|
|||
44
orefkov
03.04.12
✎
15:47
|
(43)
А твое решение-то какое? Яви нам мудрости образчик. |
|||
45
Infsams654
03.04.12
✎
15:48
|
(39) на простом поле ввода события ПриВыводеСтроки() нет. Кстати, при вводе текста в ячейке ТП это событие срабатывает только при потере фокуса ячейки. Так, что не прокатит.
|
|||
46
Maxus43
03.04.12
✎
15:49
|
(42) полстраны на 7.7 сидят ещё, на 8.2 тоже на толстых клиентах сидят и ничо. переписаную в хлам УПП 1.2 переведи ка на управляемые формы, а таких контор много
|
|||
47
Maxus43
03.04.12
✎
15:49
|
(45) мы про ТП и говорим
|
|||
48
vmv
03.04.12
✎
15:51
|
(44) поставленную в сабже задачу на платформах линейки 8.1 и 8.2 можно решить только через озвученные выше костыли - мудро не получиться, настоящее время еще обрабатывать не научились яйцеголовые - но мы быдет ныть!
|
|||
49
Infsams654
03.04.12
✎
15:53
|
(44)(48) перехват клавиатуры может ?
|
|||
50
vmv
03.04.12
✎
15:54
|
(46) зачем переводить - сидят на старых релизах, ну и пусть сидят. я знаю десяток банков которые юзают софт под мс дос до сих пор и довольны.
но новые задачи и проекты имеет смысл разрабатывать на УФ, если ты конечно не ленивый и далее согласно постулату) |
|||
51
Fish
03.04.12
✎
15:54
|
(48) А как организовать обмен по расписанию между файловыми базами без обработчиков ожидания? Может и на этот случай у тебя есть костыль? :))
|
|||
52
vmv
03.04.12
✎
15:55
|
(49) заюзав ком можно все, но это же ком - чужеродная сущность)
|
|||
53
vmv
03.04.12
✎
15:56
|
(51) хранить протокол фиксации операций обмена в периодическом РС, дальше рассказывать или дать г да еще и ложку?)
|
|||
54
Fish
03.04.12
✎
15:59
|
(53) Сам-то понял что сказал? Каким боком тут расписание? Как ты запустишь обмен тогда, когда надо без обработки ожидания?
|
|||
55
vmv
03.04.12
✎
16:04
|
(54) период регистра можно легко запрограммировать на создание записей согласно произвольному расписанию, которое можно вычитать из самого расписания и из некоего своего классфикатора периодов
вне расписания - по кнопке с командой запуска обмена, это сложно для вас, сочувствую?) |
|||
56
Fish
03.04.12
✎
16:08
|
(55) "период регистра можно легко запрограммировать на создание записей согласно произвольному расписанию" - поподробнее расскажешь, каким образом регистр будет записи по расписанию создавать? Или примерчик кода?
|
|||
57
vmv
03.04.12
✎
16:20
|
(56) сегодня у меня платный день на код, жди пятницы - я в этот день занимаюсь благотворительностью и раздаю технологии даром, но ведь ты можешь сам это сделать - стыдно быть ленивым и жадным!)
|
|||
58
Maxus43
03.04.12
✎
16:23
|
(55)(57) спрашивали как ЗАПУСТИТЬ обмен по расписанию без обработчика ожидания, а не как придумать аналог расписания на Регистер сведений + какие то ещё объекты новые и тыкать на кнопку выполнить обмен
|
|||
59
Fish
03.04.12
✎
16:30
|
(58) +1000. Похоже, vmv просто стрелки переводит :))
|
|||
60
Liris
03.04.12
✎
19:05
|
(48) Ясно. Сделаю на костылях. А как не хотелось.. :-)
Понятно, что платформа 1С не для красоты интерфейса делали. Но обещали настоящую модель, со всеми событиями и т.п. Ладно, как есть, так есть. Спасибо всем. Тему можно закрыть (за неимением изящного решения). |
|||
61
Liris
04.04.12
✎
08:04
|
Сделал так:
Трех секунд оказалось вполне достаточно. |
|||
62
НЕА123
04.04.12
✎
08:24
|
(0)
ТС, почему игнорируешь (4)? для чего надо знать длину? |
|||
63
FIXXXL
04.04.12
✎
11:00
|
(33) (62) жаль все ж, что "обработчик ожидания, раз в 0,1 секунды будет проверять содержимое твоего поля ввода" как в том анекдоте "но только один разик" :(
|
|||
64
FIXXXL
04.04.12
✎
11:03
|
(62) что бы при наборе текста сразу видеть длину сообщения и на ходу корректировать ее
стоимость и разбивка СМС зависит от ее длины PS сам такую задачку решал, но сделал на ПриИзменении, вот решил переделать, но меньше 1сек не работает, а с 1сек не очень красиво выглядит... |
|||
65
mikecool
04.04.12
✎
11:10
|
(0) пробовал решить, не вышло, плюнул
обработчик не работает, пока редактируется текст ( |
|||
66
mikecool
04.04.12
✎
11:11
|
(61) о, блин... а у меня обработчик не срабатывал (((
|
|||
67
FIXXXL
04.04.12
✎
11:31
|
(66) а ты его откуда вызывал?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |