День добрый! Такая ситуация в мобильном приложении.
На форме табличное поле, программно добавляю строку (либо нахожу текущую и изменяю). Необходимо позиционирование на данной строке.
Делаю:
"...
Элементы.Товары.ТекущаяСтрока = ИдентификаторСтроки;"
Позиционирование работает (точнее может просто выделение строки), но автоматически вертикальная прокрутка не срабатывает, т.е. если позиция за пределами экрана, то она выделяется, но там же за пределами экрана остаётся.
Как сделать, чтобы она на экране отображалась?
(1) Была такая же проблема, когда делал приложение для кладовщика, который сканирует на ТСД товары из табличной части и у них меняется количество.
Перепробовал все способы, костыльные и не очень, но форма (и ТЧ) не прокручивалась сама к нужной строке.
Проблему решил тем, что сортировал строки табличной части так, чтобы нужная строка становилась первой в ТЧ (добавил колонку в ТЧ, менял значение для нужной строки и сортировал программно)
Решение не очень хорошее, потому что когда пользователь где-то на середине списка или в конце, форма не прокручивается в начало.
Это можно решить с помощью активации какого-нибудь текстового поля в самом верху формы через ТекущийЭлемент и НачатьРедактирование... Форма прокручивается вверх, но опять таки открывается клавиатура, что совсем неудобно.
Возможно, за последние пол года появились какие-то методы для этого, но как-то не верится...
(2) Не поверите, я нашёл решение. У меня заработало на ТСД. Изучал приложение "Мобильная касса", много чего оттуда попробовал, все настройки проверял. И последнее, что помогло, это установка у ТЧ Товары на форме, отображение "Иерархический список"
http://joxi.ru/L21GnqvigJRJer
(7) Большое спасибо за помощь, так как у меня после таблицы есть еще элементы, установил вариант управления высотой таблицы "В строках формы" и теперь прокрутка работает.
(9) в свойствах формы. Но я потом вернул в "список" и всё равно работает нормально позиционирование http://joxi.ru/KAgBvDkTKR8lo2 Может переключить туда/сюда..
(10) На какой платформе ведете разработку и какую версию мобильной платформы используете ? В мобильной платформе 8.3.18.47 прокрутка на текущую строку не работает.
В общем я решил проблему так:
Выставил в свойствах таблицы вариант управления высотой таблицы "В строках формы".
В коде написал:
Элементы.Товары.ТекущаяСтрока = стр.ПолучитьИдентификатор();
Если Объект.Товары.Количество() > 1 тогда
Элементы.Товары.ТекущаяСтрока = Объект.Товары[1].ПолучитьИдентификатор();
КонецЕсли;
Второе условие нужно что бы фокус сместился на строку ниже. Визуально это не заметно т.к. у меня отображение не стоит в положении выделять строки. Но код нужен на случай если экран пальцем пролистать вниз, но ничего не выделить(не тапнуть разово на строку). При таком сценарии 1с думает что ТекущаяСтрока все еще нужная нам и не обновляет экран в случае повторного обращения к нашей строке.