Имя: Пароль:
1C
 
Как програмно поставить курсор на определенный реквизит формы документа?
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
(4) не поверишь

http://slil.ru/28358335
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) посмотри события формы в целом - там ничего не запрятано?
Независимо от того, куда вы едете — это в гору и против ветра!