Друзья, попалась нетривиальная задача, установить пометку строк в таблице на форме, тип которой ТаблицаЗначений. Как оказалось, а может и я не нашел, нет способа определить какие строки видны пользователю, если пользователь ввёл в поиске слово, отфильтровав тем самым строки табличной части, как на рис. 1.
Перепробовав все известные мне способы получения строк, наконец обнаружил интересную фичу табличной части. Оказалось, что свойству ТекущаяСтрока, для строк которые не отображаются пользователю, невозможно установить значение идентификатора строки. При установке идентификатора видимых строк, свойство ТекущаяСтрока остается быть установленным в Неопределено, а если устанавливается идентификатор видимой строки, то в присвоенное значение. Друзья, если всё-таки существует стандартный способ получения видимых строк для таблицы формы, тип которой именно ТаблицаЗначений, так как с динамическим способом стандартные способы известны, прошу написать в комментарии, если же другого варианта нет, то думаю, что такая неочевидная особенность может пригодиться.
Тестовый пример прилагаю. Тестирование проводилось на платформе 8.3.21.1302.
//Установка пометок для строк только отображаемых пользователю
//замечено, что для строк которые скрыты от пользователя ТекущаяСтрока принимает значение Неопределено
КоличествоСтрок = ТаблицаЗначений.Количество();
ТекущееПоложение = Элементы.ТаблицаЗначений.ТекущаяСтрока;
Элементы.ТаблицаЗначений.ТекущаяСтрока = Неопределено;
ПометкиУстановлены = Ложь;
Для каждого Строка из ТаблицаЗначений Цикл
Ид = Строка.ПолучитьИдентификатор();
Элементы.ТаблицаЗначений.ТекущаяСтрока = Ид;
Если НЕ Элементы.ТаблицаЗначений.ТекущаяСтрока = Неопределено Тогда
Строка.Пометка = Истина;
Иначе
Строка.Пометка = Ложь;
КонецЕсли;
КонецЦикла;
Элементы.ТаблицаЗначений.ТекущаяСтрока = ТекущееПоложение;