Добрый день
Есть результат запроса, например:
Стул Зеленый
Табурет Зеленый

И БОЛЬШАЯ табличная часть, где строки с номенклатурой могут повторяться многократно,
Например :

Стул Красный
Тумбочка Белая
Стул Красный
Стул Красный
Стул Красный
Тумбочка Синяя
Тумбочка черная
Табурет Черный

Можно как-то использовать результат запроса не обходя табличную часть циклом, чтобы исправить второй реквизит у строк нужной мне номенклатуры из выборки ?
---
Всю табличную часть не желательно, а пример с кодом как отрабатывает? Все строки меняет ,если их несколько? Стандартно - сколько надо столько и меняет. Те что не нужны не трогает.
```1c
    ВыборкаЗапроса = РезультатЗапроса.Выбрать();
    Пока ВыборкаЗапроса.Слудующий() Цикл
    ТабличнаяЧасть85[ВыборкаЗапроса.НомерСтрокиТЧ-1].Цвет = ВыборкаЗапроса.Цвет;
    КонецЦикла;
```
---
НайтиСтроки() не подойдут?
---
Думаю, что подойдут. Как только использовать результат запроса в этом методе?
---
циклом обходишь результат запроса, внутри цикла НайтиСтроки
---
НайденныеСтроки = Док.Товары.НайтиСтроки(СтруктураПоиска);
На выходе массив строк
С ним что делать, опять циклом обходить что ли или может как-то НайденныеСтроки .добавить а потом после обхода
выборки обойти массив ?
---
С ним что делать, опять циклом обходить что ли
Да
---
Если речь не о ссылке, а об объекте, то можно одним запросом выгрузить табличную часть и передать параметром в запрос. В запросе заменить значение. Результат запроса обратно загрузить в табличную часть.
Если речь о ссылке, то запросом напрямую брать из табличной части, получать нужный результат. Обратно уже получать объект и там корректировать.

Корректировать тоже два способа. Можно выгружать и загружать всю табличную часть. Но так как она БОЛЬШАЯ, то можно корректировать только нужные строки. Для этого в результат запроса должны попадать только те строки, которые необходимо менять и достаточно знать номер строки.
```1c
    ТабличнаяЧасть85[РезультатЗапроса.НомерСтрокиТЧ-1].Цвет = РезультатЗапроса.Цвет;
```
Найти строки в цикле - ОЧЕНЬ медленно....
---
Найти строки в цикле - ОЧЕНЬ медленно....
Зависит от наличия индекса.
---
Зависит от наличия индекса. Какого? НайтиСтроки() - фактически тот же запрос. А так как его надо вызывать в цикле, то получится запрос в цикле. Проще сразу для всех найти всё что нужно и заменить за один проход, только по тем строкам, по которым надо менять.
---
Какого?
Для таблицы значений можно добавить индекс по полям, по которым будет выполняться поиск. По таблице с индексом НайтиСтроки будет выполняться почти мгновенно.
---
Всю табличную часть не желательно, а пример с кодом как отрабатывает? Все строки меняет ,если их несколько?
---
Всю табличную часть не желательно, а пример с кодом как отрабатывает? Все строки меняет ,если их несколько? Стандартно - сколько надо столько и меняет. Те что не нужны не трогает.
```1c
    ВыборкаЗапроса = РезультатЗапроса.Выбрать();
    Пока ВыборкаЗапроса.Слудующий() Цикл
    ТабличнаяЧасть85[ВыборкаЗапроса.НомерСтрокиТЧ-1].Цвет = ВыборкаЗапроса.Цвет;
    КонецЦикла;
```
---
Сам запрос тоже крайне простой. Пусть в ВТ_Заменить содержит номенклатуру и цвет, на которые надо заменить. Номенклатура в этой ВТ_Заменить НЕ повторяется.
Запрос будет выглядеть примерно так (на коленке писал - проверяйте):
```1c
    ВЫБРАТЬ
    т1.НомерСтроки как НомерСтрокиТЧ
    ,т1.Номенклатура как Номенклатура
    ,т2.Цвет как Цвет
    ИЗ
    Документ.ТабличнаяЧасть85 как т1
    Внутреннее Соединение ВТ_Заменить как т2
    ПО т1.Номенклатура = т2.Номенклатура
    И т1.Цвет <> т2.Цвет
```
Если не для ссылки, а для объекта, где-то на форме, то в любом случае табличную часть объекта (не ссылки) в ТЗ и параметром в запрос с созданием внутренней таблицы. А дальше так же.
---
Речь в (1) про табличную часть, а не ТЗ.