Имя: Пароль:
1C
1C 7.7
v7: Установить курсор на ТЗ
0 evgpinsk_
 
21.04.19
14:16
Гугл выдаёт много тем, но почемуто  не получается.
Есть ТЗ на форме документа. По нажатию кнопки нужна установить курсор на ТЗ (т.е. перенести его с кнопки на ТЗ)

ТЗ.ТекущаяСтрока(НужнаяСтрока) - активирует курсор, но фокус остаётся на кнопке
также и
ТЗ.ПолучитьСтрокуПоНомеру(НужнаяСтрока);

Как перенести фокус на таблицу значений ?
1 Sserj
 
21.04.19
15:23
Ну наверно поможет Активизировать()
2 evgpinsk_
 
21.04.19
15:29
(1) Нет, это работает для полей диалога. Для ТЗ - нет
3 HawkEye
 
21.04.19
17:05
(2) какого эффекта то хочешь добиться то?

так-то и ТекущаяСтрока и Активизировать - работает....
4 Злопчинский
 
21.04.19
17:48
(2) работает и для ТЗ
другое дело что Активизировать не во всяком контексте может выполняться и тогда с ложным закртием формы придетс
5 vcv
 
21.04.19
18:25
На сколько помнится, активизировать надо не ТЗ, а колонку ТЗ по наименованию.
6 evgpinsk_
 
21.04.19
22:22
(3) Нажимаю кнопку, и далее для ускорения процесса фокус должен перейти на ТЗ, чтобы клавиатурой мог перемещаться по ТЗ
7 MAG
 
21.04.19
22:38
Активизировать("ТЗ");
Форма.Обновить();
8 evgpinsk_
 
21.04.19
22:42
(7) Нет, не проходит. Фокус остаётся на кнопк
9 Сияющий в темноте
 
22.04.19
00:35
активизировать строку т.з.со входом в режим редактирования,тогда точно кнопка неактивной станет.
10 Злопчинский
 
22.04.19
00:42
(8) ищи где криво.
работает однозначно. я постоянно использую.
возможно ТЗ - стоит флаг "недоступно"
11 HawkEye
 
22.04.19
09:10
(6) после кнопки у меня не получилось, после редактирования ПоляВвода - можно, надо настроить порядок обхода так, чтобы ТЗ стояла после ПоляВводы ))
12 evgpinsk_
 
22.04.19
10:17
(11) Т.е по клавише энтер после ПоляВвода? Так какой смысл в коде, если без всякого когда по энтер (или таб) переходит на следующий объект
13 HawkEye
 
22.04.19
10:24
(12) никакого, ты разве не знаешь, что лучший код - не написанный код? ))))
14 evgpinsk_
 
22.04.19
10:26
(13) А код нужен ).
15 HawkEye
 
22.04.19
10:31
(14) ни разу не слышал такой постановки задачи ))))
16 evgpinsk_
 
22.04.19
10:35
(15) Стараюсь максимально оптимизировать процессы. Лишний клик мышкой, когда их нужно сделать 100 раз - существенно
17 1Сергей
 
22.04.19
10:41
Нет ли на форме текстового поля с функцией, в которой возможно меняется фокус?
18 HawkEye
 
22.04.19
10:54
(16) так порядок обхода как раз для того и сделан, чтобы не кликать лишний раз )))
19 evgpinsk_
 
22.04.19
10:57
(18) После нажатия Таб или энтер. А щёлкая по кнопке мышкой или клавой, переход фокуса системой не предусмотрен
20 Salimbek
 
22.04.19
11:00
(19) Такое пробовал? http://my1c-archive.narod.ru/knowhow/getskod.html
21 uno-group
 
22.04.19
11:16
Перем НеЗакрывать;
//*******************************************
Процедура ПриЗакрытии()
    Если НеЗакрывать=1 Тогда
        Активизировать("ТЗ");
        НеЗакрывать=0;
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;
КонецПроцедуры
//*******************************************
Процедура Сформировать()
    НеЗакрывать=1;
    Форма.Закрыть(0);
КонецПроцедуры
//*******************************************
Процедура ПриОткрытии()
    Тз.НоваяКолонка("Кво");
    Тз.НоваяСтрока();
    Тз.Кво=1;
    Тз.НоваяСтрока();
    Тз.Кво=2;
    НеЗакрывать=0;
КонецПроцедуры
//*******************************************
Работает 100%
22 evgpinsk_
 
22.04.19
12:28
(17) Да, скорее всего здесь нужно покапать. (21) На тестовой форме работает, на нужной нет - на ней несколько ТЗ и при обновлении поля ввода происходит перерисовка второй ТЗ.
Это скорее всего и мешает
23 Ёпрст
 
22.04.19
13:00
(22) перерисовывать нужно не всегда, а только при необходимых условиях.
Фокус ввода можно поместить куда угодно и когда угодно. Хоть штатно, хоть формексом
24 evgpinsk_
 
22.04.19
13:27
(23) Пока нет времени разобраться, но на требуемом документе фокус не перемещается. Тот же код на пустом внешнем отчёте работает
25 uno-group
 
22.04.19
13:40
(24) вставь в правильное место форма.закрыть(0) и будет счастье. Пройтись отладчиком и найти это место 5 минут времени.
26 uno-group
 
22.04.19
13:41
какое обновление поля ввода при нажатии кнопки. код в студию.
27 evgpinsk_
 
22.04.19
14:11
Да, ошибся с названием таблицы в строке
Активизировать("ТаблицаТоваров");

код (21) заработал
28 evgpinsk_
 
22.04.19
14:16
Т.е. заработало только через фиктивное закрытие формы
29 evgpinsk_
 
22.04.19
14:18
(23) Только через закрытие формы заработало. Штатно:
Активизировать("ТаблицаТоваров");
после нажатия по кнопке - не работает
30 Ёпрст
 
22.04.19
14:26
(28) ты не поверишь, но ложное закрытие формы - это штатный метод.
31 evgpinsk_
 
22.04.19
14:34
(30) Активизировать() - тоже штатное, которое должно работать и без закрытия.
Так? )
32 uno-group
 
23.04.19
12:21
Читай синтаксический помощник, он не может быть вызван где угодно.
"Метод  Активизировать может быть вызван из другого (внешнего) модуля, если в нем известен контекст формы, в которой нужно активизировать элемент диалога. Доступ к методу возможен только в контексте Модуля формы. "
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс