|
ЭлементыФормы.ТекущийЭлемент. Событие "ПриИзменении" элемента формы. Обычные ф. | ☑ | ||
---|---|---|---|---|
0
Termopsis
28.03.16
✎
12:04
|
Как возможно программно указывать элементу формы что он изменен и нужно отработать событие "ПриИзменении", при переходе к следующему элементу.
|
|||
1
Termopsis
28.03.16
✎
12:06
|
Событие "ПриИзменении" вызывается только когда какой либо текст был изменен в форме. Как программно указать что элемент ф изменен и нужно отработать "ПриИзменении"?
|
|||
2
Господин ПЖ
28.03.16
✎
12:07
|
писать код нормально и таких вопросов не возникнет... за бизнес-логику непосредственно в гуе принято бить по рукам
|
|||
3
Остап Сулейманович
28.03.16
✎
12:07
|
(1) В конце кода программного изменения элемента ф вставить вызов процедуры ПриИзменении().
|
|||
4
Господин ПЖ
28.03.16
✎
12:07
|
выполняй то что внутри ПриИзменении() написано
|
|||
5
Остап Сулейманович
28.03.16
✎
12:09
|
(2) Это еще почему?
Изменили количество интерактивно - сумму пересчитывать нужно. Изменили программно цену - за пересчет суммы будем бить по рукам? |
|||
6
Termopsis
28.03.16
✎
12:10
|
Например: Я отредактировал элемент и пользователю задается вопрос, "Что собственно делаем?". Если ответ "Нет", то я пишу ЭлФормы.ТекЭл = МойЭл. И курсор не переходит дальше.
Но если пользователь ничего не изменит и нажмет интер или мышкой кликнет на др.элемент, то он перейдет на др.элемент. А нужно чтоб отрабатывало опять "ПриИзменении" и задавался вопрос.....если опять нет, то опять по кругу. Т.е. не давать пользователю сойти с эл. пока он не выберет "Да" или же "Отмена". |
|||
7
Господин ПЖ
28.03.16
✎
12:11
|
>Изменили программно цену - за пересчет суммы будем бить по рукам?
в таких случаях дергают функцию пересчитывающую строку... по своему смыслу она находится в "слое бизнес-логики" и с гуем не связана. |
|||
8
Остап Сулейманович
28.03.16
✎
12:14
|
(6) "если пользователь ничего не изменит и нажмет интер или мышкой кликнет на др.элемент" В таком случае за какое такое ПриИзменении может быть базар? Ничего же не изменилось.
|
|||
9
Остап Сулейманович
28.03.16
✎
12:16
|
(7) Какая разница где она находится? Вызов функции может быть инициирован как интерактивными действиями, так и программно.
|
|||
10
Termopsis
28.03.16
✎
12:16
|
(8) Так вот я и хотел узнать можно ли программно указать системе что эл.изменен? Или кодом как то данные менять и система посчитает что эл изменен.
|
|||
11
Остап Сулейманович
28.03.16
✎
12:19
|
(10) Тебе нужно задать вопрос пользователю? Ну так и задай. ЗаДляНаФига изгаляться с непонятными программными вывертами?
|
|||
12
DDwe
28.03.16
✎
12:21
|
(9) Тебе умный вещь говорят, а ты дуркуешь.
|
|||
13
Господин ПЖ
28.03.16
✎
12:22
|
(9) какой же ты тупенький...
|
|||
14
Termopsis
28.03.16
✎
12:23
|
(11) Вопрос уже задается. Варианты ответа "да", "нет", "отмена". Если "нет", то я говорю системе что тек.эл = мой элемент(Вот который и редактировали). но если после ответа на вопрос "Нет" захочет сойти с элемента, то вызвать опять вопрос. Т.е. когда пользователь выбирает "Нет", системе оповещать что редактирование ещё не завершено и при следующем сходе с эл вызывать опять "ПриИзменении". Даже если ничего не изменилось в этом эл.
|
|||
15
ejikbeznojek
28.03.16
✎
12:26
|
(14) Допустим у тебя есть галочка ФГалка у неё есть событие процедура ФГалкаПриИзменении()
И есть поле ввода ПолеВвода1 и событие Процедура ПолеВвода1ПриИзменении(элемент) Тебе в процедуре ПолеВвода1ПриИзменении() нужно просто написать строчку ФГалкаПриИзменении() |
|||
16
ejikbeznojek
28.03.16
✎
12:32
|
А ещё можешь делать недоступными остальные элементы.
И разблокировать их в подходящий момент. |
|||
17
Termopsis
28.03.16
✎
12:33
|
(15) И она(ФГалкаПриИзменении) же отработает сразу когда я выберу ответ "Нет". А необходимо когда пользователь сходит с элемента или переходит к другому, не закончив действие здесь. А после первого события "ПриИзменении" система уже не реагирует на переход к другому эл.
|
|||
18
bolder
28.03.16
✎
12:35
|
(9) из бизнес логики дергать код обработки событий гуя есть не гуд.
|
|||
19
Termopsis
28.03.16
✎
12:36
|
(17) Пользователь может как попытаться сойти с элемента(Который даже не изменил), так и продолжить редактирование.
|
|||
20
Serg_1960
28.03.16
✎
12:39
|
PS: автор желает иметь событие "ПотеряФокуса", которого нет в 1С у элементов обычной формы. Желать недостижимое - похвально, реализовывать недостижимое... эээ... Мечтайте уж лучше в пределах разумного :)
|
|||
21
Termopsis
28.03.16
✎
12:42
|
(20) Ох, как желаю))))
|
|||
22
TormozIT
гуру
28.03.16
✎
12:44
|
||||
23
Serg_1960
28.03.16
✎
12:48
|
(21) Парадаксальное программирование :) Программно закрываешь доступ ко всем элементам формы, кроме текущего. Пока твои требования к значению элемента не будут исполнены - юзверу некуда будет "терять фокус" с элемента.
PS: Я не я и кобыла не моя. Ежели что - я тебе этого не советовал. |
|||
24
Termopsis
28.03.16
✎
12:52
|
Спасибо всем! Закрывать доступ ко всем элементам....ну как то))))) Буду тогда менять логику решения.
|
|||
25
Termopsis
28.03.16
✎
14:33
|
Мдааа. У кого есть комплексная автоматизация да и др баз могут смело посмотреть как реализовано событие потеря фокуса)))))(20)
Документ счет на оплату покупателю. При создании контрагента и ввода по строке. Если не найдет, то задаст вопрос и где ответ "Нет" не даст уйти с поля ввода пока не удалишь текст либо не нажмешь отмена или создашь нового. |
|||
26
Termopsis
28.03.16
✎
15:57
|
Процедура КонтрагентОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
мТекстРедактированияКонтрагента = Текст; Значение = Текст; СтандартнаяОбработка = Ложь; КонецПроцедуры Т.к. Значение заполнено будет вызвано "ПриИзменении" Процедура ПриИзмененииКонтрагент ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.Контрагент; Контрагент = ""; ЭлементыФормы.Контрагент.ВыделенныйТекст = мТекстРедактированияКонтрагента; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |