1.
user599125_shegynn
30.10.23 16:59 Сейчас в теме
Всем, вечер добрый! Есть код:
ТекСтрока = ДобавитьРезультатСканированияТовараНаСервере(Штрихкод);
Если ТекСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
Элементы.ДанныеПоДокументу.ТекущаяСтрока = ТекСтрока;
Текущая строка устанавливается. Но визуально таблица не прокручивается до текущей строки! Менял свойство таблицы "ИспользованиеТекущейСтроки" на "Отображение выделения и выбор". Есть ли какие-то еще варианты, как можно прокрутить до текущей строки?
(1) Скорее всего, функция ДобавитьРезультатСканированияТовараНаСервере возвращает не идентификатор строки, иначе всё должно работать – установка текущей строки автоматически прокручивает таблицу.
Идентификатор строки можно получить только методом ПолучитьИдентификатор() из строки таблицы.
Заметил особенность, при количество строк > 20 докручивает только до 20, но при этом текущую строку устанавливает. Сейчас попробую создать программно нужное количество таблиц по 20 строк и уже в них устанавливать тек.строку
(5)Циклом на клиенте, в ПриОткрытии обойди таблицу.
Тогда данные таблицы подгрузятся на клиент.
И после этого установка текущей строки должна сработать.
(9)Если строка не позиционируется, хотя должна, предположил, что есть баг в платформе - что строка не находится на клиенте, потому что данные еще не подгружены.
Обход таблицы в цикле на клиенте автоматом подгружает все данные таблицы на клиент.
Вы событие форме назначили же, ПриОткрытии, а то мало ли?)
Upd. Судя по названию процедуры, вы добавляете новую строку.
Тогда действительно, в ПриОткрытии ее не будет, и это не имеет смысла.
Другая теория в (4) - покажите код "ДобавитьРезультатСканированияТовараНаСервере"
(11) я вместо добавления в конец, сделал вставку в начало (или перемещение найденной строки в строку 1) + условное оформление по строке 1 (выделение цветом + шрифт), пользователям это вариант подошел хорошо, сразу видно что отсканировано и экран не скроллится
(12) Так и делал раньше, но версионирование объектов на 3000 товаров потом очень сложно сравнивать, решил отказаться. Фиксирую высоту в строках в зависимости от разрешения дисплея так, чтобы вся ТЧ всегда входила на экран.
+ последний отсканированный товар всегда видно
- шапка занимает 3 строчки экрана
&НаСервере
Процедура УстановитьТекущуюСтроку(ТекСтрока)
Для Каждого Строка Из ДанныеПоДокументу Цикл
Строка.ИконкаТекущаяСтрока = 0;
КонецЦикла;
ТекСтрока.ИконкаТекущаяСтрока = "▶";//"►";//"◉";
Элементы.ДанныеПоДокументу.ТекущаяСтрока = ТекСтрока.ПолучитьИдентификатор();
КонецПроцедуры
Показать
Плюс настроил свойства таблицы, но что именно настраивал, уже не помню...
&НаСервере
Процедура УстановитьТекущуюСтроку(ТекСтрока)
Для Каждого Строка Из ДанныеПоДокументу Цикл
Строка.ИконкаТекущаяСтрока = 0;
КонецЦикла;
ТекСтрока.ИконкаТекущаяСтрока = "▶";//"►";//"◉";
Элементы.ДанныеПоДокументу.ТекущаяСтрока = ТекСтрока.ПолучитьИдентификатор();
КонецПроцедуры
Показать
Плюс настроил свойства таблицы, но что именно настраивал, уже не помню...
Синтаксис:
ПерейтиКСтроке(<ОписаниеСтроки>, <Направление>, <ПереключитьВыделение>)
Параметры:
<ОписаниеСтроки> (необязательный)
Тип: Соответствие.
Содержит набор пар "Заголовок колонки" - "Текст ячейки" для поиска строки перехода.
Значение по умолчанию: Неопределено.
<Направление> (необязательный)
Тип: НаправлениеПереходаКСтроке.
Указывает направление перехода от текущей строки.
Значение по умолчанию: Вниз.
<ПереключитьВыделение> (необязательный)
Тип: Булево.
Если установлено Ложь, поведение метода эмулирует щелчок мышью в строке.
Если установлено Истина, поведение метода эмулирует щелчок мышью в строке с нажатой клавишей Ctrl.
Значение по умолчанию: Ложь.
Возвращаемое значение:
Тип: Булево.
Истина - переход на указанную строку выполнен, Ложь - в противном случае .
Описание:
Выполняет переход к указанной строке. Доступность:
Тонкий клиент, толстый клиент.