|
как установить признак изменения поля ввода? | ☑ | ||
---|---|---|---|---|
0
DES
14.07.15
✎
20:28
|
Такая проблема, есть поле ввода, на нем висит процедура ПриИзменении.
Если заполнить поле программно, то процедура не срабатывает при переходе по Ентер. Как сымулировать интерактивный ввод в это поле ? |
|||
1
Мимохожий Однако
14.07.15
✎
20:38
|
Вызови команду, которая лежит в процедуре ПриИзменении
|
|||
2
DES
14.07.15
✎
21:02
|
как я ее вызову при Нажатии Ентер в этом поле ?
|
|||
3
DTXqueque
14.07.15
✎
21:07
|
Ничего непонятно.
При нажатии энтер происходит вход в режим редактирования? В какой момент пытаешь программно что-то изменить? |
|||
4
DES
14.07.15
✎
21:13
|
есть поле:
1 вариант (рабочий) - в поле вводится текст, нажимается Ентер, выполняется функция ПриИзменении() 2 вариант, поле заполнено программно, нажимаем Ентер, ничего не происходит, така не срабатывает функция ПриИзменени() (а нужно чтоб сработала как в 1 варианте.) |
|||
5
Marine Band
14.07.15
✎
21:15
|
ты вызываешь форму выбора и там нажимаешь энтер. Смотри обработка выбора
|
|||
6
DES
14.07.15
✎
21:17
|
не вызываю я форму выбора, данные УЖЕ ВНЕСЕНЫ !!
|
|||
7
DTXqueque
14.07.15
✎
21:17
|
Каша..
Так вызови ПриИзменении этого поля в тот момент, когда данные программно заполняешь.. |
|||
8
DES
14.07.15
✎
21:20
|
низя, пользователь регулирует момент Принятия данных, может быть он захочет их изменить?
|
|||
9
DES
14.07.15
✎
21:21
|
По идее мне нужно событие ВыходИзПоляВыбора()
|
|||
10
DES
14.07.15
✎
21:22
|
или поставить признак ЭтоПолеИзменено = Истина
|
|||
11
DTXqueque
14.07.15
✎
21:23
|
ПриОкончанииРедактирования?
|
|||
12
DES
14.07.15
✎
21:25
|
нет факта РЕДАКТИРОВАНИЯ !
|
|||
13
DTXqueque
14.07.15
✎
21:25
|
(12) Так вход в режим редактирования должен быть.
|
|||
14
Marine Band
14.07.15
✎
21:26
|
не понятно что за энтер ))) в общем действительно каша
|
|||
15
DES
14.07.15
✎
21:29
|
(13) но он мне не нужен
|
|||
16
Мимохожий Однако
14.07.15
✎
22:51
|
Покажи код заполнения программно.
|
|||
17
DES
14.07.15
✎
23:14
|
(16) ПолеВвода1 = "0459632";
|
|||
18
Бурулька
15.07.15
✎
01:24
|
вызови при изменении поля
|
|||
19
Сергиус
15.07.15
✎
02:35
|
(0)Как вариант - при заполнении поля программно, делай изменение не самого значения, а свойства Выделенный текст.
ЭлементыФормы.ПолеВвода1.ВыделенныйТекст = "1" к примеру. После этого в обработчике ПриИзменении смотри, если Выделенный текст не пустая и не равна ПолеВвода1.Значение, то присваивай ПолеВвода1.Значение = ЭлементыФормы.ПолеВвода1.ВыделенныйТекст. |
|||
20
mszsuz
15.07.15
✎
02:37
|
Тоже столкнулся с этим неудобством. В 7.7 формула в реквизите на форме срабатывает всегда, независимо от изменения. В 8 не нашел аналога.
|
|||
21
DES
15.07.15
✎
08:12
|
(19) а разве сработает ПриИзменении ?
|
|||
22
Остап Сулейманович
15.07.15
✎
08:15
|
(20) Аналог в 8-е :
Синтаксис: ОбновлениеОтображения() Описание: Возникает при обновлении формы или при изменении данных формы. |
|||
23
DES
15.07.15
✎
08:18
|
(22) ну вот как это заюзать ?
|
|||
24
Остап Сулейманович
15.07.15
✎
08:24
|
(23) Тебе это вообще не нужно. (В контексте твоего вопроса).
Тебе уже несколько раз сказали что нужно делать. Как есть сейчас : Процедура ПолеИмяРек1ПриИзменении(Элемент) ДействияПриИзмененииПоляИмяРек1; КонецПроцедуры Вызывается один раз при интерактивном изменении поля. При программном изменении соответственно ничего не происходит. Нужно так : Процедура ПриИзмененииЗначенияПоляИмяРек1() ... КонецПроцедуры Процедура ПолеИмяРек1ПриИзменении(Элемент) ПриИзмененииЗначенияПоляИмяРек1(); КонецПроцедуры В любом другом месте кода : ИмяРек1 = НовоеЗначение; ПриИзмененииЗначенияПоляИмяРек1(); |
|||
25
Остап Сулейманович
15.07.15
✎
08:27
|
+ (24) А заюзать ОбновлениеОтображения проще простого - вынести туда весь код для формирования внешнего вида формы. И все. Но заюзать там (внутри) изменение данных - это вызвать каскад ОбновлениеОтображения, который может завалить всю систему. А тем более вызов каких либо интерактивных вопросов, предупреждений... Только формирование внешнего вида.
|
|||
26
DES
15.07.15
✎
09:25
|
(24) Нельзя делать
ИмяРек1 = НовоеЗначение; ПриИзмененииЗначенияПоляИмяРек1(); так как это уже будет выполнение действий не санкционированных пользователем. (В этом то вся и загвоздка, если кто не понял.) |
|||
27
Сергиус
15.07.15
✎
12:43
|
(21) Сработает, попробуй сам.
|
|||
28
Сергиус
15.07.15
✎
12:46
|
+(27)Т.е. в коде пишешь ЭлементыФормы.ПолеВвода1.ВыделенныйТекст = "1", текст в поле ввода меняется(значение остается тоже), а когда в поле ввода пользователь нажмет Enter, то тут же сработает ПолеВвода1ПриИзменении.
|
|||
29
DTXqueque
15.07.15
✎
13:03
|
Почему когда пользователь что-то вводит в поле, заполнение срабатывает, а когда ты программно его меняешь, ты ждём ентера от пользователя, хотя изменение уже было?
|
|||
30
Сергиус
15.07.15
✎
13:07
|
(29)Потому что ПриИзменении это интерактивное событие.
|
|||
31
DTXqueque
15.07.15
✎
13:08
|
(30) Авто хочет такого поведения. Это глупо.
|
|||
32
Сергиус
15.07.15
✎
13:12
|
(31)Почему глупо - не всегда желания разработчика совпадают на 100% с возможностями системы. Поэтому надо искать обходные пути)
|
|||
33
DTXqueque
15.07.15
✎
13:12
|
(32) Система позволяет вызвать ПриИзменении() после программного изменения поля.
|
|||
34
Сергиус
15.07.15
✎
13:14
|
(33)Именно самое событие? Понятно, что всегда можно вызвать процедуру отдельно.
|
|||
35
Сергиус
15.07.15
✎
13:17
|
+(34)Тут просто сложность в том, что это событие должен инициировать пользователь.
|
|||
36
DTXqueque
15.07.15
✎
13:24
|
(35) Дуб, орех или мочало - начинаем все сначала!
Отсюда и (29) |
|||
37
Сергиус
15.07.15
✎
13:36
|
(36)Пользователь должен подтвердить изменение(или ввести другое значение)
|
|||
38
HawkEye
15.07.15
✎
13:38
|
(26) как пользователь санкционирует это:
ИмяРек1 = НовоеЗначение; ? |
|||
39
DTXqueque
15.07.15
✎
13:39
|
Мсье знает толк в извращениях..
Интересно, в какой момент происходит программная установка значения. Для таких дел целесообразно использовать кнопки |
|||
40
HawkEye
15.07.15
✎
13:40
|
(23) на форму положить текст и в него прописать функцию, но есть нюансы, поэтому ответь сначала на (38)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |