|
Как программно установить курсор на редактирование в ячейке ТЧ? | ☑ | ||
---|---|---|---|---|
0
Bot01
09.12.15
✎
09:29
|
Добрый день.
УТ 11.1, 8.3. Тонкий клиент, управляемая форма. При открытии формы нужно установить курсор в первую ячейку первой строки табличной части (ТЧ) документа (туда будут заноситься данные со сканера). ТекущийЭлемент = Элементы.ТЧ; //Элементы.ТЧ.ДобавитьСтроку(); //Элементы.ТЧ.ТекущаяСтрока = 0; //Элементы.ТЧ.ИзменитьСтроку(); После этих манипуляций всё равно нужно нажать ВВОД, чтобы перейти в режим редактирования ячейки. А сразу как? |
|||
1
mikeA
09.12.15
✎
09:48
|
РежимРедактирования= РежимРедактированияКолонки.ВходПриВводе
|
|||
2
mikeA
09.12.15
✎
09:49
|
(1)+ у поля ввода
|
|||
3
Bot01
09.12.15
✎
09:53
|
(2) у поля ввода и так стоим режим редактирование "Вход при вводе". Но, попробую ещё.
|
|||
4
Bot01
09.12.15
✎
09:54
|
* стоит режим редактирования
|
|||
5
НЕА123
09.12.15
✎
09:57
|
непосредственно
|
|||
6
Bot01
09.12.15
✎
09:57
|
(2) Элементы.ТЧ.ПодчиненныеЭлементы.ТЧШтрихкод.РежимРедактирования = РежимРедактированияКолонки.ВходПриВводе;
Визуальные эффекты не изменились. |
|||
7
Bot01
09.12.15
✎
10:00
|
(5) Тоже требует нажатия ВВОД.
|
|||
8
Lexey_
09.12.15
✎
10:02
|
ТаблицаФормы (FormTable)
ИзменитьСтроку (ChangeRow) Синтаксис: ИзменитьСтроку() Описание: Начинает интерактивное изменение данных текущей строки, аналогично выполнению команды "Изменить". |
|||
9
Fedor-1971
09.12.15
✎
10:03
|
(0) У тебя нет строки, что ты хочешь Изменить? Попробуй примерно так:
нов=Объект.ТЧ.Добавить() Элементы.ТЧ.ТекущаяСтрока=нов; ИзменитьСтроку(); |
|||
10
Bot01
09.12.15
✎
10:25
|
(9) Есть строки) В (0) они закомментированы что бы показать, что и без них получается тот же результат.
Так не работает: нов=Объект.ТЧ.Добавить(); Элементы.ТЧ.ТекущаяСтрока=нов; Элементы.ТЧ.ИзменитьСтроку(); Элементы.ТЧ.ТекущаяСтрока ожидает не "элемент коллекции". А так: Элементы.ТЧ.ДобавитьСтроку(); Элементы.ТЧ.ТекущаяСтрока=0; Элементы.ТЧ.ИзменитьСтроку(); уже есть. |
|||
11
Fedor-1971
09.12.15
✎
10:35
|
(10) В каком месте вызываешь сей код в ПриОткрытии() или в ПриСозданииНаСервере()?
Что будешь делать если открывают уже созданный документ? |
|||
12
Bot01
09.12.15
✎
10:36
|
(11) ПриОткрытии. Только для документа с Пустой ссылкой.
|
|||
13
Fedor-1971
09.12.15
✎
10:40
|
(12) пробуй добавить строку так:
нов=Объект.ТЧ.Добавить(); Элементы.ТЧ.ТекущаяСтрока=нов.ПолучитьИдентификатор(); а не через Элементы. |
|||
14
Bot01
09.12.15
✎
10:54
|
&НаКлиенте
Процедура ПриОткрытии(Отказ) Элементы.ТЧ.ПодчиненныеЭлементы.ТЧШтрихкод.РежимРедактирования = РежимРедактированияКолонки.ВходПриВводе; ТекущийЭлемент = Элементы.ТЧ; нов=Объект.ТЧ.Добавить(); Элементы.ТЧ.ТекущаяСтрока=нов.ПолучитьИдентификатор(); Элементы.ТЧ.ИзменитьСтроку(); КонецПроцедуры Есть строка, она текущая, только нужно ВВОД нажать, чтобы перейти в режим редактирования ячейки. |
|||
15
Fedor-1971
09.12.15
✎
11:08
|
(14) сделай кнопку с этим кодом, если строка перейдёт в режим редактирования, значит где-то в форме отрабатывает параллельная процедура установки текущей строки.
Как вариант, чисто для проверки, вынеси код в процедуру ПриАктивацииСтроки() у ТЧ. |
|||
16
Bot01
09.12.15
✎
11:14
|
(15) Да, с кнопкой сработало.
|
|||
17
Bot01
09.12.15
✎
11:22
|
Сделал внешнюю обработку. Тот же самый код работает при нажатии кнопки и не работает при открытии...
|
|||
18
Bot01
09.12.15
✎
11:23
|
а "параллельных процедур установки текущей строки" там нет...
|
|||
19
НЕА123
09.12.15
✎
11:25
|
В конец ПриОткрытии() попробовать добавить
Элементы.ТЧ.ДобавитьСтроку(); Количество = Объект.ТЧ.Количество(); Объект.ТЧ.Удалить(Количество-1); |
|||
20
Bot01
09.12.15
✎
11:30
|
(19) Осталась одна строка, но ячейка для редактирования не доступна.
|
|||
21
Fedor-1971
09.12.15
✎
11:32
|
(18)так в любом случае после ПриОткрытии вызываются ПриАктивацииСтроки у ТЧ, правда в каком порядке не понятно, они и сбивают твоё редактирование или, что более вероятно, ИзменитьСтроку тупо не отрабатывает в ПриОткрытии, т.к. потом отработают активации и всё равно собьют.
|
|||
22
Fedor-1971
09.12.15
✎
11:44
|
21+ Для решения твоей задачи хорошо бы иметь событие ПолностьюОткрытаФорма, но такового нет.
Попробуй опереться на ОбработкаВнешнегоСобытия - Сканировали, значит добавляем строку и открываем её редактирование в колонке количество. |
|||
23
Bot01
09.12.15
✎
11:45
|
(21) Да, в при выполнении Элементы.ТЧ.ДобавитьСтроку(); отрабатывает ТЧПриАктивизацииСтроки...
Но это &НаКлиенте Процедура ТЧПриАктивизацииСтроки(Элемент) Элементы.ТЧ.ИзменитьСтроку(); КонецПроцедуры мне ни чего не дало. А ещё варианты? |
|||
24
Bot01
09.12.15
✎
11:46
|
(22) Спасибо. Буду думать.
|
|||
25
Nuobu
09.12.15
✎
12:02
|
(23)
Вот так пробовал? Процдура ПриОткрытии() ПодключитьОбработчикОжидания("ааа", 0.2, Истина); КонецПроцедуры Процедура ааа() Элементы.ТЧ.ИзменитьСтроку(); КонецПроцедуры |
|||
26
Bot01
09.12.15
✎
12:11
|
(25) Так заработало! Спасибо большое всем за помощь.
|
|||
27
Bot01
09.12.15
✎
12:13
|
(25) А почему тАк работает?
|
|||
28
Nuobu
09.12.15
✎
12:19
|
(27) Ну, "ПриОткрытии" вызывается передоткрытием формы, когда её еще нет на экране.
Ты писал, что юзал кнопку и оно нормально отработало. Выходит, форма должна появиться, а потом должен вызваться твой код. Отсюда и задержка в 0.2 секунды. |
|||
29
vhl
09.12.15
✎
12:21
|
||||
30
Bot01
09.12.15
✎
12:22
|
(28) Спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |