V8: Изменение значения в поле ввода. Какое событие? #604026


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