Имя: Пароль:
1C
 
8.2 Как активировать строку в Таблице на форме?
0 kimba
 
08.02.10
00:32
Как активировать строку в Таблице на форме?

Более конкретная задача такая:
Есть ТЗ на форме, она заполнена кроме одной колонки.
Пользователь должен её заполнить, он активизирует первую строчку, вводит значение, жмет enter, после чего должна активизироваться строка №2, пользователь опять вводит и жмет enter ... и т.д.

Не могу найти как активизировать следующую строку после окончания ввода.
1 kimba
 
08.02.10
02:21
апп
2 kimba
 
08.02.10
08:47
кто нибудь!
3 kimba
 
08.02.10
09:57
ну кто нибудь!
4 kimba
 
08.02.10
10:42
ну хоть кто нибудь!
5 kimba
 
08.02.10
12:20
Пробовал на клиенте сделать следующее:

Процедура ИсследованияРезультатПриИзменении(Элемент)
   Элементы.Таблица.ТекущаяСтрока = Элементы.Таблица.ТекущаяСтрока + 1; //ТекущаяСтрока это число.
КонецПроцедуры

Получается очень странная картина: нижняя строка становится активной, но активная ячейка всеравно остаётся та, которую только что изменили, см. скриншот
в личке.
6 ll13
 
08.02.10
12:37
В свойствах Таблицы поставь РежимВыделенияСтроки - Строка
7 kiruha
 
08.02.10
12:47
УправляемаяФорма (ManagedForm)
ТекущийЭлемент (CurrentItem)
Использование:
Чтение и ЗАПИСЬ.
Описание:
Тип: ГруппаФормы; ТаблицаФормы; ПолеФормы; КнопкаФормы. Содержит текущий активный элемент управляемой формы.

Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент
8 kimba
 
08.02.10
13:00
(6) ничего не дало, все так же
(7) мне нужно ячейку таблицы активизировать ТекущийЭлемент не подходит.
у Таблицы кстати есть тоже ТекущийЭлемент, но там можно только колонку (элемент) активизировать
9 kiruha
 
08.02.10
13:10
(8)
Элементы.ГруппаЗапасы.ПодчиненныеЭлементы.Запасы.ТекущийЭлемент=НужноеПолеФормы;

?
10 kiruha
 
08.02.10
13:12
Элементы.Таблица.ТекущийЭлемент=НужноеПолеФормы;
11 kimba
 
08.02.10
13:20
(9) и как мне ячейку в таблице ативизировать???

Элементы.Таблица.ТекущийЭлемент = Элементы.НеобходимаяКолонка;
После этого тоже самое что на скрине, не становится активной ячейка следующей строки, даже если так писать:

Элементы.Таблица.ТекущаяСтрока = Элементы.Таблица.ТекущаяСтрока + 1;
Элементы.Таблица.ТекущийЭлемент = Элементы.НеобходимаяКолонка;
12 kimba
 
08.02.10
14:03
может не понятно объяснил:
Пользователь должен спозиционироваться на первой строке в колонке для заполнения.
Далее вводит число, жмет enter, число enter, число enter...
таким образом быстро заполняется вся колонка ТЗ.
13 kiruha
 
08.02.10
14:11
Проблема не активизации - активизацию проводит
Элементы.Таблица.ТекущийЭлемент=НужноеПолеФормы;

Мне лично не понятно как получить НужноеПолеФормы - не нашел методов
14 kimba
 
08.02.10
14:13
(13) Я тоже не нашел)
15 kiruha
 
08.02.10
15:21
Апну что ли )
Самому интересно.

Как получить поле формы таблицы , например из 3 строки 3-го столбца ?
16 kimba
 
08.02.10
16:41
кстати в веб режиме данный кусок кода ваще глючит:

Элементы.Таблица.ТекущаяСтрока = Элементы.Таблица.ТекущаяСтрока + 1;
Элементы.Таблица.ТекущийЭлемент = Элементы.НеобходимаяКолонка;

Выдает кучу пустых сообщений и т.д.
17 kimba
 
08.02.10
17:55
ну кто там в 8.2 рулит?
18 azernet
 
08.02.10
18:07
НеобходимаяСтрока = ЭлементыФормы.Таблица.Получить(Индекс(Элементы.Таблица.ТекущаяСтрока)+1);
Элементы.Таблица.ТекущаяСтрока = НеобходимаяСтрока;

что то в этом роде должно заработать
19 kiruha
 
08.02.10
18:22
Что есть Получить() у ТаблицаФормы ?
Что есть Индекс() ?
20 kimba
 
08.02.10
19:02
странный код какой-то
Индекс() - что это???
Пальцем в небо?
21 kimba
 
08.02.10
21:04
ап
22 kimba
 
08.02.10
22:23
ыва ыва
23 mrBlutig
 
08.02.10
22:23
Эт как выделить след строку, а как сделать активным поле след строки, неизвестно.
Элементы.ТЗ.ТекущаяСтрока    =ТЗ.Получить(ТЗ.Индекс(ТЗ.НайтиПоИдентификатору(Элементы.ТЗ.ТекущаяСтрока))+1).ПолучитьИдентификатор();
24 kimba
 
08.02.10
22:33
(23) Зачем так сложно? работает и так:
Элементы.Исследования.ТекущаяСтрока = Элементы.Исследования.ТекущаяСтрока + 1;
На клиенте Элементы.Исследования.ТекущаяСтрока это число, я уже писал об этом.

Вопрос остается открытым, строка выделяется, но активность к ней не переходит!
25 mrBlutig
 
08.02.10
22:42
В текущей строке хранится идентификатор строки, что не совсем одно и тоже что индекс, попробуй поменять местами строки в ТЗ.
26 kimba
 
08.02.10
22:49
(25) Зачем мне их менять? Чтобы проверить индекс чтоли?
там кстати строгая сортировка, местами строки менять нельзя.
27 mrBlutig
 
08.02.10
22:55
(26) ну имей в виду. А с активацией поля думаю эт недоделка 1с-гов, имеет смысл написать в саппорт.
28 kimba
 
08.02.10
23:19
(27) это плохо, надеюсь не придется ждать пока они доделают...
29 kiruha
 
08.02.10
23:37
Если установить отбор по нужной строке,
а потом отбор отменить - нужная строка станет активной
30 kimba
 
08.02.10
23:43
(29) идея не плохая, но это слишком жестока для пользователя, бабушка в шоке будет от постоянно появляющихся и исчезающих строк.
31 kiruha
 
08.02.10
23:45
По крайней мере так можно спозиционироваться в журнале или справочнике
32 kiruha
 
08.02.10
23:52
Кстати не уверен что визуально это будет заметно
33 kiruha
 
09.02.10
00:25
Вот так работает.
И обновления нет )))

&НаКлиенте
Процедура ЗапасыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
   СтрОтбора=    Новый ФиксированнаяСтруктура("НомерСтроки", 1);

   Элементы.Запасы.ОтборСтрок = СтрОтбора;
    СтрОтбора=    Новый ФиксированнаяСтруктура;
    Элементы.Запасы.ОтборСтрок = СтрОтбора;

КонецПроцедуры
34 kiruha
 
09.02.10
00:28
Точнее судя по замерам идет обращение к серверу, но только 1 раз
35 kimba
 
09.02.10
01:48
обращение к серверу - не гут, на вебе притормаживать будет.
36 kiruha
 
09.02.10
09:05
(35)
Ничуть не больше чем при изменении номенклатуры -
также одно обращение и обновление видимых элементов
37 kimba
 
09.02.10
23:24
&НаКлиенте
Процедура ИсследованияПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
   СледСтрока = Элементы.Исследования.ТекущиеДанные.НомерСтр + 1;
   СтрОтбора = Новый ФиксированнаяСтруктура("НомерСтр", СледСтрока);
   Элементы.Исследования.ОтборСтрок = СтрОтбора;
   Элементы.Исследования.ОтборСтрок = Неопределено;
   Элементы.Исследования.ИзменитьСтроку();
КонецПроцедуры

Так работает, только в вебе немного притормаживает, но зато не моргает как в тонком.

Еще одна фишка выяснилась:
При таком переходе на след строку впринципе работает, но только в вебе, в тонком приходится действовать так:
вводишь число, ентер, переходит фокус на след строку, опять приходится ентер нажимать чтобы начать редактирование и т.д.
тогда как в вебе неприходится 2 раза подряд ентер нажимать.
В тонком короче не срабатывает данная строка:

   Элементы.Исследования.ИзменитьСтроку();
38 kimba
 
09.02.10
23:28
Может еще у кого есть варианты?
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.