Имя: Пароль:
1C
1С v8
Поставить курсор в нужное место таблицы
,
0 ЗлаяЗая
 
27.07.20
11:25
Есть обработка с табличным полем.
Стоим, например, на строке 20. Меняем что-то в ячейке. После этого отрабатывает процедура ТаблПриОкончанииРедактирования.
В этой процедуре пробегаем по таблице и меняем что-то в некоторых строках, например, 21-25. И таблица опять выводится на экран.
При этом курсор стоит снова на 1 строке. Как вернуть его на строку 20?
1 acht
 
27.07.20
11:36
(0) Примечание:
В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере, а также изменять свойства, которые могут привести к серверному вызову.
2 NcSteel
 
27.07.20
11:37
(0) Текущая строка - вестимо.
3 Галахад
 
гуру
27.07.20
11:40
(1) ОФ же.
4 acht
 
27.07.20
11:41
(3) Почему?
5 ЗлаяЗая
 
27.07.20
11:41
Формы Обычные
Я спрашивала-  ЭлементыФормы.Табл.ТекущаяСтрока. Пишет, что неопределено
6 acht
 
27.07.20
11:42
(5) Дык не читать, писать надо
7 ЗлаяЗая
 
27.07.20
11:43
Задам вопрос по другому.
Я стою на строке. КАк узнать - на какой?
8 ЗлаяЗая
 
27.07.20
11:46
ТекущуюКолонку показывает. А строку-нет.
9 Ёпрст
 
27.07.20
11:48
(7) ЭлементыФормы.ТвояТабличка.ТекущиеДанные
10 Ёпрст
 
27.07.20
11:50
(0)

ЭлементыФормы.ТвояТабличка.ТекущаяСтрока = НужнаяСтрока; //НужнаяСтрока - это именно строка таблички, а не её "номер"
11 ЗлаяЗая
 
27.07.20
13:12
НужнаяСтрока= ЭлементыФормы.Табл.ТекущиеДанные;
.....
ЭлементыФормы.Табл.ТекущаяСтрока = НужнаяСтрока;
ругается Отсутствует ключ строки
12 Ёпрст
 
27.07.20
13:31
(11) ясен пень. Присваивать нужно строку таблички...
так, например
ЭлементыФормы.Табл.ТекущаяСтрока  = Табл[0];
13 ЗлаяЗая
 
27.07.20
13:58
СтрокаНаКоторойСтоим= ЭлементыФормы.Табл.ТекущиеДанные.НомерСтроки;
...
ЭлементыФормы.ТаблВыпуск.ТекущаяСтрока=Табл[СтрокаНаКоторойСтоим];
пишет, что  Ошибка при установке значения атрибута контекста (ТекущаяСтрока)
Невозможно изменить текущую строку
14 Ёпрст
 
27.07.20
14:02
(13) естественно.. НомерСтроки-1 надоть
15 ЗлаяЗая
 
27.07.20
14:07
(14) пишет "Невозможно изменить текущую строку"
16 Ёпрст
 
27.07.20
14:11
(15) больше кода

И.. в какой проце ты всё это делаешь ?
17 ЗлаяЗая
 
27.07.20
14:19
процедура ТаблПриОкончанииРедактирования.

СтрокаНаКоторойСтоим= ЭлементыФормы.ТаблВыпуск.ТекущиеДанные.НомерСтроки;

ТЗ=ТаблВыпуск.Скопировать();
ТаблВыпуск.Очистить();
Для каждого т ИЗ ТЗ Цикл
   НоваяСтрока1 =Табл.Добавить();
   ЗаполнитьЗначенияСвойств(НоваяСтрока1,т);    
   ....заполняются в некоторых строках значения
КонецЦикла;

т.к. таблица по сути заново выведена на экран, то желательно встать на ту же строку
ЭлементыФормы.ТаблВыпуск.ТекущаяСтрока=ТаблВыпуск[СтрокаНаКоторойСтоим-1];
18 ЗлаяЗая
 
27.07.20
14:20
Табл=ТаблВыпуск
19 Kesim
 
27.07.20
14:27
(0) перед началом манипуляций ПолучитьИдентификатор() строки, зафиксировать в реквизит формы, после манипуляций .....текущаяСтрока = полученный ранее идентификатор, кажись так
20 Kesim
 
27.07.20
14:37
(17) только все зря видимо: таблица очищается и заполняется вновь.. а нельзя не очищая таблицу, обработать только текущую строку обработать?
21 acht
 
27.07.20
14:37
(17) Какой негодяй мешает тебе запустить цикл по самой табличной части?
Для Каждого Т Из ТаблВыпуск Цикл
22 ЗлаяЗая
 
27.07.20
14:48
(20) обработать нужно не только текущую, а еще другие строки таблицы, по определенному критерию
23 Kesim
 
27.07.20
14:50
(22) если не добавить и удалить(кардинально) тогда вопрос тот же почему бы не обрабатывать существующую таблицу по определенному критерию?
24 acht
 
27.07.20
14:52
(22) Ну хорошо, уговорила
Для Индекс = 1 По ТаблВыпуск.Количество() - 2 Цикл
    ТаблВыпуск[Индекс].ВажноеПоле = ТаблВыпуск[Индекс - 1].ВажноеПоле + ТаблВыпуск[Индекс + 1].ВажноеПоле;
КонецЦикла
25 ЗлаяЗая
 
27.07.20
14:54
Получилось :)
26 ЗлаяЗая
 
27.07.20
14:54
(21) наследство, однако.
передела просто проходом по таблице
27 lEvGl
 
гуру
27.07.20
14:56
реализация изначально кажется кривой. встать на строку в ТП - ТП.ТекущаяСтрока = СтрокаТЧ при этом строка до манипуляций <> строка после манипуляция, т к строка До удаляется и добавленная После - разные "сущности", но их можно сопоставить по какому нибудь признаку, например по индексу в ТЧ, но гарантировать что курсор встанет как надо нельзя, т к количество срок в таблице может измениться и индекс может не дать того соответствия которое нужно
Ошибка? Это не ошибка, это системная функция.