Имя: Пароль:
1C
1С v8
Позиционирование текущей строки в начале таблицы значений
, , ,
0 Impuls20_03
 
13.03.20
15:46
На форме есть таблица значений. Условно состоящая из двух колонок:
1. Номенклатура
2. Группа номенклатуры
Таблица заполняется программно.
Добавил на форму две кнопки:
1. Следующая группа
2. Предыдущая группа
Каждая из кнопок устанавливает текущую строку на первый элемент группы (следующей или предыдущей соответственно).
Это все прекрасно работает, но для идеального результата хотелось бы чтобы текущая строка прокручивалась к самому верху таблицы.
На данный момент текущая строка может быть в любой части таблицы, что немного меня сильно бесит.
Вообще реально ли реализовать мою хотелку. Спасибо за ответы
На данный момент это так:
https://ibb.co/HhxzXy4
А я хочу так:
https://ibb.co/QrxxhnW
1 Жан Пердежон
 
13.03.20
15:49
тебе надо просто проскролить программно
2 Impuls20_03
 
13.03.20
15:51
А как узнать сколько скролить? Как программно определить в каком месте формы находится текущая строка?
3 hhhh
 
13.03.20
15:58
(2) идеально конечно, чтобы она где-то в середине экрана была. Чтобы сверху и снизу было видно, что там.
4 Impuls20_03
 
13.03.20
16:00
(3) Ну это уже лирика. Если знать методику, то передвинуть в нужное место не проблема. Вопрос как раз в том и стоит, что я не знаю как проскролить таблицу и как определять текущее местоположение строки
5 Жан Пердежон
 
13.03.20
16:05
(4) ну так, что мешает СП открыть?
6 Impuls20_03
 
13.03.20
16:17
(5) Ничего не мешает. Но вот в упор я там не вижу ничего похожего на то, что мне нужно. Если Вы ткнете меня в нужное место буду благодарен.
7 hhhh
 
13.03.20
16:22
(4) методика в том, что правильней будет посередине. А кто не согласен, тот по методике 1с идет в сад.
8 Impuls20_03
 
13.03.20
16:27
(7) Ок не проблема. Пусть будет посередине. Но Эта гадость прыгает. Может быть в конце, начале, середине. В любой части
9 Жан Пердежон
 
13.03.20
16:29
(6) всё правильно, так как такой возможности нет;
обычно в твоём случае бывает лучше сделать либо дерево, либо 2 таблицы (одна с группами, другая с номенклатурой) + ОтборСтрок при активизации группы (с возможностью его отключения);
10 Impuls20_03
 
13.03.20
16:33
(9) Не очень хороший вариант в моем случае. Разработка ведется под мобильный клиент. Места катастрофически мало.
11 Жан Пердежон
 
13.03.20
16:39
(10) если
M - количество номенклатуры в группе,
N - число строк, которые видны на экране
попробуй сначала активизировать строку max(M, N), а потом первую (в группе)
12 Жан Пердежон
 
13.03.20
16:40
min вместо max конечно же
13 Impuls20_03
 
13.03.20
16:43
(12) Такой вариант я уже проходил. На разных диагоналях будет по разному. Так что не прокатит
14 Жан Пердежон
 
13.03.20
17:10
(13) ну если сделать криво, то конечно не прокатит
15 Impuls20_03
 
18.03.20
11:34
В общем сам отвечу на свой вопрос. Если Перед тем как установить текущую строку - сделать текущей первую, то все заработает как надо.
Как-то так:

Элементы.СписокНоменклатуры.ТекущаяСтрока = СписокНоменклатуры[0].ПолучитьИдентификатор();
Элементы.СписокНоменклатуры.ТекущаяСтрока = ПолучитьСледующийБлок();
16 Начинающий_13
 
18.03.20
11:55
Сделать еще колонку(поставь 1с) и по ней отсортируй
17 Начинающий_13
 
18.03.20
11:59
по группа 1А,1Б,1В сам придумай что писать