Имя: Пароль:
1C
1С v8
Как программно установить курсор на редактирование в ячейке ТЧ?
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) Спасибо.