Ged абсолютно прав.
А что до выбора "фильтр" или "подцепка", то имейте в виду: чтобы отработал фильтр, нужно сначала закачать данный из БД на клиента, а подцепка, наоборот, отправляется на сервер с тем, чтобы тот прислал клиенту уже усеченное множество записей. Поэтому используйте подцепки везде, где только это возможно. Выгоднее бывает получить данные пятью отдельными запросами с подцепками, чем одним, но с фильтрами.
IsValid хорош, когда данные для узла уже доставлены клиенту. Если анализируемый узел подцеплен к вышестоящему по уникальному ключу, то упомянутые данные доставляются запросом для вышестоящего узла. Например, в нижеследующей ЛТ данные для PERSONS будут получены при обращении к LSCHET, и использование IsValid(#PERSONS) обоснованно.
Код: Выделить всё
create view from LSCHET, PERSONS where ((LSCHET.TPERSON == PERSONS.NREC));
...
_loop LSCHET
if IsValid(#PERSONS)...
Когда анализируемый узел подцеплен к вышестоящему по неуникальному ключу (например, спецификация документа), без дополнительного запроса к базе после навигации по вышестоящему узлу не обойтись. Использование IsValid к генерации такого запроса не приводит. Обращение к полю узла - должно, если не ошибаюсь. Поле этого на результат IsValid уже можно полагаться.