|
ТекущаяСтрока в табличной части | ☑ | ||
---|---|---|---|---|
0
an_str
28.05.13
✎
09:04
|
Здравствуйте!!! подскажите, пожалуйста, что не так. Не могу позиционировать курсор на нужной строке, перескакивает на первую после удаления строки в табл части. Следующий код:
&НаКлиенте Процедура ТаблицаПередУдалением(Элемент, Отказ) Отказ = Истина; ТекущиеДанные = Элемент.ТекущиеДанные; ТаблицаФормы = ЭтаФорма[Элемент.Имя]; ТекущаяСтрока = Элемент.ТекущаяСтрока; ТаблицаФормы.Удалить(ТекущиеДанные); РасчитатьИтогиПоТаблице(Элемент.Имя); Модифицированность = Истина; Элемент.ТекущаяСтрока = 15; // Вот так позиционирует!!!!! Элемент.ТекущаяСтрока = ТекущаяСтрока ; // А вот так нет!!!!! хотя значение в переменной есть и оно типа строка!!! КонецПроцедуры не могу понять что не так((( уже и разные переменные вводила, и переприсваивала.... |
|||
1
lEvGl
гуру
28.05.13
✎
09:07
|
наверно надо ПослеУдаления "позиционировать"
|
|||
2
kosts
28.05.13
✎
09:07
|
(0) Ты же вроде как удалил строку, а потом хочешь на удаленной спозиционироваться...
|
|||
3
1Снег
28.05.13
✎
09:07
|
(0) попробуйте
Элемент.ТекущаяСтрока = Строка(ТекущаяСтрока); или Элемент.ТекущаяСтрока = Число(ТекущаяСтрока); потому что Элемент все таки ссылка, которую Вы удаляете |
|||
4
Cube
28.05.13
✎
09:08
|
(0) Рубить сук, на котором сидишь, это опять модно? :)
|
|||
5
lEvGl
гуру
28.05.13
✎
09:08
|
(2) фотко есть )
|
|||
6
an_str
28.05.13
✎
09:11
|
(1) в послеУдаления не заходит, т.к. стоит в ПередУдалением Отказ = Истина !!! код уже переписывать не хочется из-за этого дурацкого позиционирования
(2) я строку-то удалила и хочу на предыдущей спозиционироваться (3) не помогает, пробовала(((( |
|||
7
vicof
28.05.13
✎
09:12
|
(0) Боюсь спросить, зачем вообще этот код написан?
|
|||
8
vicof
28.05.13
✎
09:12
|
(4) правильней "Рубить сук, на которых лежишь"
|
|||
9
kosts
28.05.13
✎
09:13
|
(7) Думается, что бы итоги рассчитать
|
|||
10
vicof
28.05.13
✎
09:15
|
(9) Хочется узнать мнение автора :)
|
|||
11
Cube
28.05.13
✎
09:15
|
(6) "я строку-то удалила и хочу на предыдущей спозиционироваться"
Боюсь показаться не оригинальным, но это стандартное поведение платформы. Так что можешь смело удалить весь код из (0) и получишь то, что хочешь... |
|||
12
an_str
28.05.13
✎
09:17
|
(11) это ТаблицаЗначений...может поэтому платформа позиционирует на 1 строке после удаления, хоть с этим кодом,хоть без него...
|
|||
13
vicof
28.05.13
✎
09:19
|
(12) ты уверена? :))
|
|||
14
an_str
28.05.13
✎
09:19
|
(10) Черт знает кто этот код писал, мне сказано ничего не менять, а просто сделать, чтобы не перескакивало на 1 строку, а то каждый раз прокручивать список не есть гуд, особенно когда он огромный....Я думала обойтись малой кровью, по ходу и правда придется разбираться и переписывать..
|
|||
15
Rounder
28.05.13
✎
09:19
|
(12) Здесь скорее всего не важна суть объекта - важна суть элемента - т.е. важно то, что это ТаблицаФормы или ДинамическийСписок.
|
|||
16
lEvGl
гуру
28.05.13
✎
09:21
|
(11) как раз оригинальность
ептить, узнай номер текущей строки перед удалением и после того как удалила поставь курсор в номерстрокиперед - 1; с проверками конечно, вдруг строк не останется или еще чего |
|||
17
Cube
28.05.13
✎
09:22
|
(12) Наглая ложь и клевета.
(14) Скорее всего у тебя происходит обновление таблицы на форме. |
|||
18
Rounder
28.05.13
✎
09:23
|
(12) Для начала нужно сделать как кто-то в теме уже советовал - закомментировать код, который отвечает за позиционирование и посмотреть на стандартное поведение системы. Если не устроит, то тогда пробовать через Идентификатор (во всяком случае у меня по иному не получилось).
Вот кусок кода - была задача позиционироваться на любой строке с нужной номенклатурой: Отбор = Новый Структура; Отбор.Вставить("Номенклатура", ВыбранноеЗначение); МассивСтрок = Объект.Товары.НайтиСтроки(Отбор); Если МассивСтрок.Количество() > 0 Тогда Элементы.Товары.ТекущаяСтрока = МассивСтрок[0].ПолучитьИдентификатор(); КонецЕсли; |
|||
19
Cube
28.05.13
✎
09:25
|
+(18) Вместо
Отбор = Новый Структура; Отбор.Вставить("Номенклатура", ВыбранноеЗначение); МассивСтрок = Объект.Товары.НайтиСтроки(Отбор); Можно МассивСтрок = Объект.Товары.НайтиСтроки(Новый Структура("Номенклатура", ВыбранноеЗначение)); |
|||
20
Rounder
28.05.13
✎
09:27
|
(19) Ну мы же не причесывание кода обсуждаем :) И тот и тот вариант имеет право на жизнь и корректен.
Сам принцип позиционирования у меня работает только при использовании Идентификатора. |
|||
21
an_str
28.05.13
✎
09:28
|
(18), (19) СПАСИБО огромное!! так работает!!!!!фуф...) спасибо еще раз)
|
|||
22
Rounder
28.05.13
✎
09:28
|
(19) + к (20) Этот же отбор вполне себе используется дальше в коде (либо может использоваться). В таком варианте мой код предпочтительней :)
|
|||
23
Rounder
28.05.13
✎
09:28
|
(21) Пжл.
|
|||
24
Cube
28.05.13
✎
09:29
|
(20) Люблю компактность :)
А про позиционирование - у тебя так работает из-за того, что получить номер строки в УФ очень сложно, если данные на нем постоянно обновляются. Смысл в том, что если в пустую таблицу добавить строку, то у неё будет номер 1. Удаляем строку и добавляем новую. В итоге у нас в таблице 1 строка и идентификатор у нее 2... |
|||
25
an_str
28.05.13
✎
09:30
|
(24) спасибо за пояснение
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |