Имя: Пароль:
1C
1С v8
Курсор не переходит на след. строку
, ,
0 rowflag
 
07.11.12
13:01
&НаКлиенте
Процедура ТЧСписокПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
   Объект.ТЧСписок.Добавить();
   Элементы.ТЧСписок.ТекущаяСтрока = Элементы.ТЧСписок.ТекущаяСтрока + 1;
КонецПроцедуры

Почему?
1 Wobland
 
07.11.12
13:02
ТекущаяСтрока - не число
2 rowflag
 
07.11.12
13:02
(строка выделена следующая, а курсор стоит на предыдущей)
3 rowflag
 
07.11.12
13:02
(1) но строка то выделяется следующая. Как правильно
4 rowflag
 
07.11.12
13:02
?
5 Wobland
 
07.11.12
13:04
(4) правильно присваивать в текущую строку нужную строку
6 rowflag
 
07.11.12
13:04
Выражение    Значение    Тип
Элементы.ТЧСписок.ТекущаяСтрока    0    Число
7 rowflag
 
07.11.12
13:05
Как присвоить ту, которую я только что добавил?
8 Wobland
 
07.11.12
13:05
(7)Описание:

Тип: Произвольный.
Идентификатор текущей строки таблицы.
9 rowflag
 
07.11.12
13:05
Отладчик пишет что число.
10 Reset
 
07.11.12
13:09
Я нуль в УФ и проверять некогда, но попробуй так

НоваяСтрока=Объект.ТЧСписок.Добавить();
   Элементы.ТЧСписок.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
11 Wobland
 
07.11.12
13:10
(10) я 0.01 в УФ, но попробуй =НоваяСтрока
12 Reset
 
07.11.12
13:11
(11) Пусть оба попробует) Заодно узнаем. Хоть какая-то польза
13 Wobland
 
07.11.12
13:12
(12) да это принцип, не зависящий от формы
14 rowflag
 
07.11.12
13:14
Попробовал и то и другое. Результат тот же:
Строка новая выделенная (текущая), а курсор на предыдущей..
15 rowflag
 
07.11.12
13:15
Выход нашелся..
16 rowflag
 
07.11.12
13:16
&НаКлиенте
Процедура ТЧСписокШКРучнойВводПриИзменении(Элемент)
   СтрокаТЧ = Элементы.ТЧСписок.ТекущиеДанные;
   ПрефиксСтрока = Строка(СтрокаТЧ.ПрефиксРучнойВвод);
   Код = СтрокаТЧ.ШКРучнойВвод;
   Если СтрДлина(Код) = 4 Тогда
       КодСтрока = Код;
   ИначеЕсли СтрДлина(Код) = 3 Тогда
       КодСтрока = "0" + Код;
   ИначеЕсли СтрДлина(Код) = 2 Тогда
       КодСтрока = "00" + Код;
   ИначеЕсли СтрДлина(Код) = 1 Тогда
       КодСтрока = "000" + Код;
   КонецЕсли;
   
   Данные = Число(ПрефиксСтрока + КодСтрока);
   Номенклатура = ПолучитьНоменклатуруПоШтрихкоду(Данные);
   Если Номенклатура <> Неопределено Тогда
       ДобавитьНоменклатуруРучнойВвод(Номенклатура);
       Элементы.ТЧСписок.ЗакончитьРедактированиеСтроки(Ложь);
       Элементы.ТЧСписок.ТекущаяСтрока = Элементы.ТЧСписок.ТекущаяСтрока + 1;
   Иначе
       Сообщить("Не найдено по штрихкоду " + """" + Данные + """");
   КонецЕсли    

КонецПроцедуры

&НаКлиенте
Процедура ТЧСписокПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
   Объект.ТЧСписок.Добавить();
КонецПроцедуры
17 rowflag
 
07.11.12
13:16
Делать текущую строку надо не в процедуре ТЧСписокПриОкончанииРедактирования.
18 Reset
 
07.11.12
13:17
(17) Ну, это, собственно, логично
19 Wobland
 
07.11.12
13:18
(18) логично - это соответствующее свойство у таблицы выставить. и без всякого кода
20 Wobland
 
07.11.12
13:18
а так - меняет посередине, внезапно выскакивает новая строка. жуть
21 Reset
 
07.11.12
13:19
Но, я все таки рекомендовал бы избавится от Текущая+1, ибо

... идентификатор для элемента коллекции. Этот идентификатор не привязан к позиции элемента в коллекции.
22 rowflag
 
07.11.12
13:21
(19) какое свойство?
23 rowflag
 
07.11.12
13:22
(21) спасибо!
24 Wobland
 
07.11.12
13:30
(22) соответствующее. какие нашёл?
25 rowflag
 
07.11.12
15:32
Не нашел..
26 Wobland
 
07.11.12
16:30
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn