Есть процедура вида:

```1c
    Для каждого Колонка Из Колонки Цикл

    Запрос = Новый Запрос;
    Запрос.текст = "..."
    Запрос.установитьпараметр("Колнка",Колонка.имя):

    Выборка = Запрос.Выполнить.Выбрать();

    Пока Выборка.Следующий() цикл

    Совпадение = Выборка.Наименование;

    конеццикла;

    Если Совпадение <> Неопределено Тогда

    КопияТЗ = Тз.Скопировать();
    КопияТЗ.Свернуть(Колонка.имя);

    Для каждого Стр Из КопияТз Цикл

    Запрос = Новый Запрос;
    Запрос.текст = "..."
    Запрос.установитьпараметр("Значение",Стр[0]):

    Выборка2 = Запрос.Выполнить.Выбрать();

    Пока Выборка2.Следующий() цикл

    Идентификатор = Выборка2.ИД;

    конеццикла;

    Конеццикла;

    конецесли;

    конеццикла;
```

Не закидайте пожалуйста яйцами. Как это оптимизировать можно ?
И проблема в том, что во второй запрос не попадаю в Выборку2. Хотя если точно такой же запрос взять в консоли запросов или отдельно во внешней обработке, то всё ок, где подвох ?
---
Нашёл в чем дело.
Строка длинная, а у справочника стоит длина 100, искомое значение 140
---
"Это очень интересно, но ничего не понятно, но интересно".
У Вас даже код (синтаксис) неправильно написан или так и должно быть?
---
Я вот тоже голову уже сломал почему не попадает выборка,хотя значение 100% есть

Код писал в спешке, главное чтобы суть была понятна . Там все отрабатывает ок кроме единственного значения,А именно когда стр[0] = "длинный текст".
---
Исправьте для начала ошибки в коде, который выложили синтаксис-помощником.
---
Что не так ?
---
Стр[0].Имя
---
Нету у Стр Имя. Там сразу значение.
---
Там у тебя строка ТЗ, Для колонки добавь имя.
---
Так я же отладчиком смотрел, в Стр[0] содержит прям точное такое же значение которое мне нужно.
---
Надо писать конкретно имя колонки ТЗ: стр[0].ИмяКолонкиТЗ
---
Так а другие значения почему то же отрабатывают корректно.
---
Тип значения который ты передаешь в запрос будет строка ТЗ, как у тебя колонка в ТЗ называется? если "Значение", то пиши стр[0].Значение
---
Суть совсем не понятна.
Запрос в цикле - это всегда плохо и у сообщества от этого разрыв шаблона, т.к. каждый кодер знает, что так делать нельзя.

И, почти всегда, такую конструкцию, как ваша, можно привести к виду, когда запрос всего один, один раз выполняется и один раз обходится..

Вы бы сами запросы привели.
И, в целом, сам текст, который может работать.
---
1 запрос ищет совпадение колонки по идентификатору в справочнике и выдаёт его.
Если ид есть то второй запрос:
2 запрос ищет совпадения в другом справочнике, есть ли такие значения. собственно в этом и проблема, так как значение есть, но выборка не отрабатывает
Так же если значения не нашлось то создаётся новый элемент справочника.

Думал может это всё сделать через массив и потом уже обходить в запросе один раз, но как всё-таки оптимальнее и правильнее будет?
---
```1c
    Запрос.УстановитьПараметр("Значение",Стр[0]):
```

попробовать удалить пробелы

```1c
    Запрос.УстановитьПараметр("Значение",СокрЛП(Стр[0])):
```
---
стр у него строка ТЗ, не то пишешь.
---
И ?
Если Стр - это строка ТЗ, тогда Стр[0] - обращение к первому реквизиту строки.
Даже в синтакс-помощнике об этом сказано:
"Возможно обращение к значению колонки данной строки посредством оператора [...]"
---
Не помогло.
---
конечно :)
---
Слезы из глаз, но кажется Вы получаете всегда только одно последнее значение в выборке и только оно проверяется на совпадение.

```1c
    Пока Выборка.Следующий() цикл

    Совпадение = Выборка.Наименование;

    конеццикла;
    Если Совпадение <> Неопределено Тогда
```
---
Нашёл в чем дело.
Строка длинная, а у справочника стоит длина 100, искомое значение 140
---
Одно не понятно, через консоль запросов проверялось значение с длиной 140 или нет?
---
1. Вместо "Пока Выборка.Следующий()" можно написать "Если НЕ Результат.Пустой()".
2. А еще лучше в первом запросе все колонки засунуть в запрос, на выходе получить только те, которые есть в результате. Тогда уже Пока Выбрать.Следующий() - в выборке должно быть имя колонки.
3. Ну и да, длинна...