![]() |
![]() |
![]() |
|
Как програмно поставить курсор на определенный реквизит формы документа? | ☑ | ||
---|---|---|---|---|
0
Глупый дятел
17.12.09
✎
08:36
|
Как програмно поставить курсор на определенный реквизит формы документа?
|
|||
1
butterbean
17.12.09
✎
08:37
|
ТекущийЭлемент = .....
|
|||
2
Глупый дятел
17.12.09
✎
08:44
|
(1)
что я сделал не так? этаформа.ТекущийЭлемент = этаформа.ЭлементыФормы.ИНН1; |
|||
3
lxs
17.12.09
✎
09:02
|
(2) родился..
если по делу, то ЭлементыФормы.Реквизит1.АктивизироватьПоУмолчанию = Истина; |
|||
4
Глупый дятел
17.12.09
✎
09:05
|
(3)
не бзди, не канает |
|||
5
lxs
17.12.09
✎
09:07
|
Не дерзи.
Куда тебе "курсор установить"? |
|||
6
Глупый дятел
17.12.09
✎
09:08
|
(5)
я же писал выше "этаформа.ЭлементыФормы.ИНН1" |
|||
7
butterbean
17.12.09
✎
09:09
|
(2,5) все ты правильно написал, посмотри нету ли в ОБновленииОтображения чего-нить
|
|||
8
lxs
17.12.09
✎
09:11
|
||||
9
lxs
17.12.09
✎
09:12
|
+(8) надо проверить, чтобы у всех элементов формы был снят флаг Активизировать по умолчанию в свойствах.
|
|||
10
Глупый дятел
17.12.09
✎
09:18
|
(8)
тут действительно работает, странно. активировать по умолчанию у меня снято. Может на мое событие этот метод не канает? Я запускаю после "ОкончаниеВводаТекста" в этот же самый реквизит. |
|||
11
lxs
17.12.09
✎
09:22
|
Добавь в модуль формы процедуру:
Процедура Реквизит1ОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка) ТекущийЭлемент = ЭлементыФормы.Реквизит3; КонецПроцедуры |
|||
12
lxs
17.12.09
✎
09:23
|
+(11) соответственно, повесь ее на первый реквизит.
|
|||
13
Глупый дятел
17.12.09
✎
09:31
|
(11)
ну вот у меня вся процедура. сообщение по условию выскакивает, а курсор не возвращается Процедура ИНН1ОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка) Если ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо Тогда Если НЕ стрдлина(этаформа.ЭлементыФормы.ИНН1.Значение) = 12 Тогда сообщить("""ИНН"" физического лица 12 символов!"); ТекущийЭлемент = ЭлементыФормы.ИНН1; КонецЕсли; КонецЕсли; Если ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо Тогда Если НЕ стрдлина(этаформа.ЭлементыФормы.ИНН1.Значение) = 10 Тогда сообщить("""ИНН"" юридического лица 10 символов!"); ТекущийЭлемент = ЭлементыФормы.ИНН1; КонецЕсли; КонецЕсли; Если ЮрФизЛицо = Перечисления.ЮрФизЛицо.ИП Тогда Если НЕ стрдлина(этаформа.ЭлементыФормы.ИНН1.Значение) = 12 Тогда сообщить("""ИНН"" ИП 12 символов!"); ТекущийЭлемент = ЭлементыФормы.ИНН1; // ЭлементыФормы.ИНН1.АктивизироватьПоУмолчанию = Истина; КонецЕсли; КонецЕсли; //*********************************** Если не НеЯвляетсяРезидентом тогда пробинн=справочники.Контрагенты.НайтиПоРеквизиту("ИНН", этаформа.ЭлементыФормы.ИНН1.Значение); Если юрфизлицо=перечисления.ЮрФизЛицо.ЮрЛицо тогда если (значениезаполнено(пробинн)) и (пробинн.Код <> этотобъект.Код) и (пробинн.КПП = этотобъект.КПП) тогда сообщить("ИНН и КПП найдено у другого контрагента"+" "+пробинн.Наименование+" "+пробинн.Код); //Отказ = Истина; //ЭлементыФормы.ИНН1.АктивизироватьПоУмолчанию = Истина; конецесли; конецесли; Если юрфизлицо=перечисления.ЮрФизЛицо.ИП тогда если (значениезаполнено(пробинн)) и (пробинн.Код <> этотобъект.Код) тогда сообщить("ИНН найдено у другого ИП"+" "+пробинн.Наименование+" "+пробинн.Код); //Отказ = Истина; //ЭлементыФормы.ИНН1.АктивизироватьПоУмолчанию = Истина; конецесли; конецесли Конецесли; //************************************************ КонецПроцедуры |
|||
14
butterbean
17.12.09
✎
09:32
|
(13)в момент события ОкончаниеВводаТекста этот элемент еще активизирован, делай в ПриИзменении ()
|
|||
15
lxs
17.12.09
✎
09:36
|
(14) он этот элемент и заполняет (читай, этот элемент и так активен)
|
|||
16
Глупый дятел
17.12.09
✎
09:36
|
(14)
то же самое. Хотя, оно срабатывает если табом уходить после ввода. Но если мышью курсор на другой реквизит перевести, этот обратно не активируется. |
|||
17
lxs
17.12.09
✎
09:38
|
(13) при первом нажатии на Enter будет осуществлен вход в процедуру ОкончаниеВводаТекста, а также следом, в процедуру ПриИзменении. При повторном нажатии без изменения текста будет осуществлен переход в следующий по порядку обхода элемент.
|
|||
18
lxs
17.12.09
✎
09:39
|
(16) если установить курсор в другой реквизит, то для того. чтобы вернутся в поле некорректно заполненного ИНН1, тебе надо для того реквизита прописать аналогичную процедуру активизации.
|
|||
19
Глупый дятел
17.12.09
✎
09:40
|
(18)
ага, попробую, спасибо |
|||
20
lxs
17.12.09
✎
09:41
|
(19) если ИНН неверно заполнен, очищай значение, чтобы его по-любому пришлось вводить заново.
|
|||
21
lxs
17.12.09
✎
09:43
|
+(20) а чтобы исключить возможность записи с некорректным ИНН, сделай эту же проверку при записи элемента, как в типовых реализовано.
|
|||
22
butterbean
17.12.09
✎
09:44
|
(18) не взлетит, нужно в ОбновлениеОтображения ловить , анализировать текущийЭлемент и возвращать в ИНН1 если надо
|
|||
23
wise
17.12.09
✎
09:46
|
(13)ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.ИНН1;
|
|||
24
Глупый дятел
17.12.09
✎
09:49
|
(23)
это я уже пробовал, то же самое |
|||
25
Глупый дятел
17.12.09
✎
09:51
|
(21)
у меня это уже сделано, но директор хочет, чтобы юзеры не продолжали дальше документ набивать, если такое инн уже есть или некорректное. Говорит, юзеры тупые, на сообщения не смотрят. |
|||
26
wise
17.12.09
✎
09:52
|
(24) тока НАДО все эти проверки в Процедуру ПриИзмененииИНН() запихать...
|
|||
27
Aprobator
17.12.09
✎
10:18
|
(25)
странно - спецом сделал тест - у меня все нормально работает. Вот только в условии я проверяю не ЭлементыФормы.ИНН1.Значение, а Текст, потому как Значение = Неопределено. У тебя тип поля строка? |
|||
28
Aprobator
17.12.09
✎
10:20
|
+(27) а не если ЭлементыФормы.ИНН1.Значение - то оно ловит значение верно.
|
|||
29
Aprobator
17.12.09
✎
10:22
|
У тебя элемент управления - ПолеВвода?
|
|||
30
Aprobator
17.12.09
✎
10:24
|
+(29) вопрос снят. Такого события у других элементов управления нет.
|
|||
31
Aprobator
17.12.09
✎
10:25
|
+(30) посмотри события формы в целом - там ничего не запрятано?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |