Добрый день!
Нужна помощь в матчасти.

У объекта есть табличная часть, в которой есть колонка "Признак" с типом булево. Необходимо узнать, есть ли в табличной части стрОки со значением поля "Признак" = Ложь.
Условие задачи: проверка выполняется &НаСервере

Можно пробежаться циклом, можно воспользоваться методом НайтиСтроки(), можно написать запрос по типу:

```1c
    ВЫБРАТЬ
    Таблица.Поле1
    ИЗ
    &Таблица Как Таблица
    ГДЕ
    Таблица.Признак = ЛОЖЬ
```

На уровне интуиции понимаю, что оптимальным вариантом будет воспользоваться методом НайтиСтроки(), но тяга к знаниям не дает покоя к неизвестным подводным камням использования запроса.

Чем чревато использовать в таком случае запрос? Какая разница на аппаратном уровне между способами?
И самый важный вопрос: что можно почитать на эту тему, чтобы получить ответы на свои вопросы?
---
этим запросом вы нагружаете sql сервер. таблица значений передается на sql, который создает временную таблицу.
Смотрите затраты:
1. Передача данные на sql
2. Создание временной таблицы на sql
3. Получение данных из sql

При том, что НайтиСтроки() выполняют работу только с данными в памяти.
---
разница в том, что ТЧ как неотъемлемая часть Объекта уже находится в памяти сервера 1С, создавая запрос вы тем самым создаете дополнительную транзакцию вида "запрос данных к СУБД - ответ от СУБД", отправляя в СУБД копию ТЧ.
---
Вот у меня здесь и происходит диссонанс:
Если табличная часть уже существует в памяти, то тогда куда еще обращается этот запрос, если эту ТЧ и передаем в параметр?
Я понимаю, что запрос - это новая транзакция, но не понимаю как это работает с передаваемыми в параметр таблицами =)
---
таблица значений передается на sql, который создает временную таблицу
СУБД должна выделить свои ресурсы для этой временной таблицы, выполнить ваш запрос к ней и отдать вам результат.
---
Спасибо!
Есть ли на примете какая-нибудь литература на эту тему?
---
Нет, с опытом пришло понимание :)
---
этим запросом вы нагружаете sql сервер. таблица значений передается на sql, который создает временную таблицу.
Смотрите затраты:
1. Передача данные на sql
2. Создание временной таблицы на sql
3. Получение данных из sql

При том, что НайтиСтроки() выполняют работу только с данными в памяти.
---
Вот то чего мне и не хватало, спасибо)
А есть что-то на счет литературы по этой теме?
---
читать документацию от 1С.
Конкретную литературу не подскажу. Со временем получаются знания без привязки к литературе )
---
еще, Передачу ТЗ параметром в запрос обычно используется, когда нужно эти данные соединить с данными из базы. Вот тогда это оправдано.
---
И параметр &Таблица Как Таблица нельзя вот так вот использовать в выборке. Ее сначала нужно поместить во временную таблицу. Кстати, у ТЧ еще есть метод Найти(<Значение>, <Колонки>). Вернет либо строку, либо Неопределено
---
А еще разница в результате. При запросе будет таблица значений или выборка. А при НайтиСтроки - массив ссылок на строки.
В (2) правильно сказали - данные уже есть в оперативной памяти, и наиболее оптимальным будет там с ними и работать.
Если все же нужна таблица значений как результат, то можно использовать еще и
```1c
    Результат = Объект.Таблица.Выгрузить(Новый Структура("Признак", Ложь));
```
---
Спасибо за то что поделились опытом) (9) (10)