ТекущаяСтрока табличного поля и вертикальная прокрутка

1. AneJIbcuH 37 04.03.20 06:13 Сейчас в теме
День добрый! Такая ситуация в мобильном приложении.
На форме табличное поле, программно добавляю строку (либо нахожу текущую и изменяю). Необходимо позиционирование на данной строке.
Делаю:
"...
Элементы.Товары.ТекущаяСтрока = ИдентификаторСтроки;"

Позиционирование работает (точнее может просто выделение строки), но автоматически вертикальная прокрутка не срабатывает, т.е. если позиция за пределами экрана, то она выделяется, но там же за пределами экрана остаётся.
Как сделать, чтобы она на экране отображалась?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Nikifforoff96 04.03.20 09:59 Сейчас в теме
(1) Была такая же проблема, когда делал приложение для кладовщика, который сканирует на ТСД товары из табличной части и у них меняется количество.
Перепробовал все способы, костыльные и не очень, но форма (и ТЧ) не прокручивалась сама к нужной строке.
Проблему решил тем, что сортировал строки табличной части так, чтобы нужная строка становилась первой в ТЧ (добавил колонку в ТЧ, менял значение для нужной строки и сортировал программно)
Решение не очень хорошее, потому что когда пользователь где-то на середине списка или в конце, форма не прокручивается в начало.
Это можно решить с помощью активации какого-нибудь текстового поля в самом верху формы через ТекущийЭлемент и НачатьРедактирование... Форма прокручивается вверх, но опять таки открывается клавиатура, что совсем неудобно.
Возможно, за последние пол года появились какие-то методы для этого, но как-то не верится...
3. AneJIbcuH 37 04.03.20 10:50 Сейчас в теме
(2) Тоже ТСД и считывание ШК. В поисках решения проблемы, пока ничего толкового не нашёл. Насчет совета по сортировке по доп. полю спасибо!
4. AneJIbcuH 37 05.03.20 17:18 Сейчас в теме
(2) Не поверите, я нашёл решение. У меня заработало на ТСД. Изучал приложение "Мобильная касса", много чего оттуда попробовал, все настройки проверял. И последнее, что помогло, это установка у ТЧ Товары на форме, отображение "Иерархический список"
http://joxi.ru/L21GnqvigJRJer
bondaleksey; geolone; +2 Ответить
5. Nikifforoff96 10.03.20 09:18 Сейчас в теме
(4) Классное решение, надо будет попробовать. спасибо)
6. geolone 16.04.20 06:05 Сейчас в теме
(4) а кроме установки "Иерархический список", устанавливать свойство "ТекущаяСтрока" после добавления новой строки?
7. AneJIbcuH 37 16.04.20 06:11 Сейчас в теме
8. geolone 16.04.20 06:38 Сейчас в теме
(7) Большое спасибо за помощь, так как у меня после таблицы есть еще элементы, установил вариант управления высотой таблицы "В строках формы" и теперь прокрутка работает.
flanchev; bondaleksey; AndrewVik; join2us; +4 Ответить
9. user605516 22.04.21 12:53 Сейчас в теме
(4) Устанавливаете программно или в свойствах формы в поле Отображение?
10. AneJIbcuH 37 23.04.21 07:56 Сейчас в теме
(9) в свойствах формы. Но я потом вернул в "список" и всё равно работает нормально позиционирование http://joxi.ru/KAgBvDkTKR8lo2
Может переключить туда/сюда..
11. user605516 15.06.21 16:23 Сейчас в теме
(10) На какой платформе ведете разработку и какую версию мобильной платформы используете ? В мобильной платформе 8.3.18.47 прокрутка на текущую строку не работает.
12. AneJIbcuH 37 16.06.21 17:06 Сейчас в теме
13. user635667 138 03.12.21 06:42 Сейчас в теме
В общем я решил проблему так:
Выставил в свойствах таблицы вариант управления высотой таблицы "В строках формы".
В коде написал:
Элементы.Товары.ТекущаяСтрока = стр.ПолучитьИдентификатор();

Если Объект.Товары.Количество() > 1 тогда
Элементы.Товары.ТекущаяСтрока = Объект.Товары[1].ПолучитьИдентификатор();
КонецЕсли;


Второе условие нужно что бы фокус сместился на строку ниже. Визуально это не заметно т.к. у меня отображение не стоит в положении выделять строки. Но код нужен на случай если экран пальцем пролистать вниз, но ничего не выделить(не тапнуть разово на строку). При таком сценарии 1с думает что ТекущаяСтрока все еще нужная нам и не обновляет экран в случае повторного обращения к нашей строке.
14. AneJIbcuH 37 03.12.21 10:02 Сейчас в теме
(13)
Элементы.Товары.ТекущаяСтрока = Объект.Товары[1].ПолучитьИдентификатор();

Очень странное решение.
Элементы.Товары.ТекущаяСтрока = Объект.Товары[1].ПолучитьИдентификатор();
Это ведь позиционирование на второй строке всегда.
15. user635667 138 03.12.21 10:03 Сейчас в теме
(13) Забыл добавить что моя позиция всегда на первое место в таблице добавляется. Поэтому ориентируюсь так.
16. AneJIbcuH 37 03.12.21 10:06 Сейчас в теме
(15) Наверное, эта строка лишняя: Элементы.Товары.ТекущаяСтрока = стр.ПолучитьИдентификатор();

Достаточно:

Если Объект.Товары.Количество() > 1 тогда
Элементы.Товары.ТекущаяСтрока = Объект.Товары[0].ПолучитьИдентификатор();
КонецЕсли;
17. user635667 138 03.12.21 10:11 Сейчас в теме
(16) нет. я же говорю, пролистать вниз пальцем и щелкнуть сканером, и не сфокусирует.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот