Управляемые формы. Платформа 8.3.24. Бухгалтерия 3.0 ПРОФ.
Имеется форма обработки, которая выводит табличную часть этой обработки. Само собой, в таблице формы можно установить отборы по значению столбца(ов), что отражается над самой таблицей. Можно программно установить свойство ОтборСтрок в элементе формы, что тоже фильтрует изображаемые строки.
Вопрос: как перебрать только те строки табличной части, которые отображаются на форме?
При этом фильтр, отображаемый над таблицей и фильтр по ОтборСтрок - это разные фильтры! И, кстати, побочный вопрос: а где хранится отбор, отображаемый над таблицей?
---
зачем проверяете на Неопределено?
Из СП:
Если таблица не отображается на форме, если в таблице нет строк или передана строка, отсутствующая в таблице, то возвращается Неопределено.
Какой из этих случаев проверяете?

Далее. Нужно передавать не Строку ТЧ, а Идентификатор строки. В Таблице формы содержатся идентификаторы строки (в УФ). Их наличие проверяется.

```1c
    Для каждого Строчка Из Объект.СписокСДИЗ Цикл
    Если Элементы.СписокСДИЗ.ПроверитьСтроку(Строчка.ПолучитьИдентификатор()) Тогда
    Строчка.Выбран = Истина;
    КонецЕсли;
    КонецЦикла;
```
---
Элементы.МояТаблица.ПроверитьСтроку(СтрокаТЧ)
---
Не работает.

```1c
    Для каждого Строчка Из Объект.СписокСДИЗ Цикл
    Если Не (Элементы.СписокСДИЗ.ПроверитьСтроку(Строчка) = Неопределено) Тогда
    Строчка.Выбран = Истина;
    КонецЕсли;
    КонецЦикла;
    ОбновитьИзображение();
```

Фильтров не установлено - должна пометить все, однако не помечает ни одно.
---
Под отладчиком остановитесь и посмотрите, что возвращает метод ПроверитьСтроку.
---
зачем проверяете на Неопределено?
Из СП:
Если таблица не отображается на форме, если в таблице нет строк или передана строка, отсутствующая в таблице, то возвращается Неопределено.
Какой из этих случаев проверяете?

Далее. Нужно передавать не Строку ТЧ, а Идентификатор строки. В Таблице формы содержатся идентификаторы строки (в УФ). Их наличие проверяется.

```1c
    Для каждого Строчка Из Объект.СписокСДИЗ Цикл
    Если Элементы.СписокСДИЗ.ПроверитьСтроку(Строчка.ПолучитьИдентификатор()) Тогда
    Строчка.Выбран = Истина;
    КонецЕсли;
    КонецЦикла;
```
---
Я проверял просто работу метода. Опять же, на Неопределено тоже надо закладываться, раз оно есть. Так прозрачнее, с моей точки зрения.
В прочем, именно с ПолучитьИдентификатор() и работает. Спасибо большое.
И где, всё-таки, хранится фильтр по опции "Расширенный поиск..."?
---
И где, всё-таки, хранится фильтр по опции "Расширенный поиск..."?
Нигде
---
Опять же, на Неопределено тоже надо закладываться, раз оно есть.
Если надо отобрать строки, которые отображаются, то надо проверять на "= Истина", а не с неопределено сравнивать.
---
Согласен. Повторяю, я просто проверял работу метода.
---
я просто проверял работу методаИ гордо сообщил нам о том, что он не работает, ага.
---
так, как написано в помощнике - не работает. ТТак, как написано в половине советов здесь же, на форуме, - тоже. Нужно подкидывать именно идентификатор строки, а не какую-то абстрактную строку... Вот тогда работает. Dixi
---
ТТак, как написано в половине советов здесь же, на форуме, - тоже
Анекдот №525517:
— Алло, дорогая, только что по радио передали, что один псих едет по встречке… Будь осторожнее!
— Один? Да их тут тысячи!
---
так, как написано в помощнике - не работает
Там все есть. Просто не явно.
ТаблицаФормы (FormTable)
ПроверитьСтроку (CheckRow)
Синтаксис:
ПроверитьСтроку(<Строка>)
Параметры:
<Строка> (обязательный)
Тип: Произвольный.
Строка таблицы. Тип параметра зависит от типа редактируемого значения.
ТаблицаФормы (FormTable)
ТекущаяСтрока (CurrentRow)
Использование:
Чтение и запись.
Описание:
Тип: Произвольный.
Идентификатор текущей строки таблицы.