Добрый вечер, не срабатывает условие ГДЕ в данной процедуре когда пытаюсь задать параметр для условия через переменную
```1c
    ЗначениеНомерЗакупки = "123456789";
```

```1c
    &НаСервере
    Процедура ЗапросКонтракта()

    ЗначениеНомерЗакупки = "123456789";

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки
    |ИЗ
    | РегистрСведений.СпецификацияКонтракта КАК СпецификацияКонтракта
    |ГДЕ
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки = "+ЗначениеНомерЗакупки+"";

    РезультатЗапроса = Запрос.Выполнить();

    Выборка = РезультатЗапроса.Выбрать();

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

    НоваяСтрока = Спецификация.Добавить();
    НоваяСтрока.НомерЗакупки = Выборка.СпецификацияКонтрактаНомерЗакупки;

    КонецЦикла;

    КонецПроцедуры
```

в РегСвед тип строка, предаю в переменную для условия тоже строку, что не так то ?
Если написать так

```1c
    ГДЕ
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки = "123456789"
```
 то запрос отрабатывает.
---
Прошу пардону, т.к. значение строковое, то правильно делать конкатенацию нужно так, как указано в (23)
Т.е.

```1c
    |ГДЕ
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки = "" + ЗначениеНомерЗакупки + "";
```
---
Не правильно выполняете конкатенацию строк.
Используйте параметры запроса.

```1c
    |ГДЕ
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки = &ЗначениеНомерЗакупки"

    Запрос.УстановитьПараметр("ЗначениеНомерЗакупки", ЗначениеНомерЗакупки);
```
---
Так мне их не объединить надо, а по заданному номеру строчного типа отыскать в РегСвед все записи.
---
в любом случае - не правильно выполняете конкатенацию строк.
Если до сих пор не понятно, то

```1c
    |ГДЕ
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки = "+ЗначениеНомерЗакупки+""
```

Выполняет поиск по значению "+ЗначениеНомерЗакупки+".
---
Почему тогда подобная конструкция работает с перемененной в этой теме Почему возникает ошибка при сравнение с результатом запросам. только с условием ""Да"" не чего же не поменялось только в место Да перемененная содержит строку с цифрами ?
---
Вы ж сами пишите в своем сообщении

Если написать так

```1c
    |ГДЕ
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки = "123456789"
```

то запрос отрабатывает.

Почувствуйте разницу с:

```1c
    |ГДЕ
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки = "+ЗначениеНомерЗакупки+""
```

Если вы хотите, чтобы у вас сам текст запроса менялся в зависимости от строковой переменной, то выполните конкатенацию текста запроса и строковой переменной правильно и будет вам счастье.

```1c
    |ГДЕ
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки = " + ЗначениеНомерЗакупки;
```

Но такой подход к составлению запроса ведет к невозможности использовать конструктор запроса к текущему запросу в дальнешем.
---
Возможно Вы не заметили, что я строку убираю в переменную
```1c
    ЗначениеНомерЗакупки = "123456789";
```
. Возможно не понятно описал.
---
Я заметил и указал вам на то, что вы не правильно выполняете конкатенацию строковых значений.
см. (6) еще раз, я добавил вариант с правильной конкатенацией.
---
Извините, но я всё ещё не догоняю если не разбираться во всё то так
```1c
    |ГДЕ
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки = " + ЗначениеНомерЗакупки;
```
 не работает, а если рассуждать то конкатенация это объединение строк, а я их сравниваю не сколько не спорю просто хочу понять весь день на это убил. Как я писал выше в другой теме подобный алгоритм работает.
---
Показывайте код полностью, как в первом сообщении.
---
```1c
    &НаСервере
    Процедура ЗапросКонтракта()

    ЗначениеНомерЗакупки = "123456789";

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки
    |ИЗ
    | РегистрСведений.СпецификацияКонтракта КАК СпецификацияКонтракта
    |ГДЕ
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки = "+ЗначениеНомерЗакупки";

    РезультатЗапроса = Запрос.Выполнить();

    Выборка = РезультатЗапроса.Выбрать();

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

    НоваяСтрока = Спецификация.Добавить();
    НоваяСтрока.НомерЗакупки = Выборка.СпецификацияКонтрактаНомерЗакупки;

    КонецЦикла;

    КонецПроцедуры
```
---
Да вы прикалываете что ли?

Где вот этот участок текста запроса

```1c
    |ГДЕ
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки = " + ЗначениеНомерЗакупки;
```

???
---
```1c
    Ошибка в выражении
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки = "+<<?>>ЗначениеНомерЗакупки"; (Проверка: Сервер)
    Ошибка в выражении
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки = "+<<?>>ЗначениеНомерЗакупки"; (Проверка: Тонкий клиент)
```
---
Внимательно посмотрите на мой вариант и на ваш.
Прямо каждый символ сравните.
---
Если так то без ошибок но и результата нет

```1c
    &НаСервере
    Процедура ЗапросКонтракта()

    ЗначениеНомерЗакупки = "123456789";

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки
    |ИЗ
    | РегистрСведений.СпецификацияКонтракта КАК СпецификацияКонтракта
    |ГДЕ
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки = "+ЗначениеНомерЗакупки;

    РезультатЗапроса = Запрос.Выполнить();

    Выборка = РезультатЗапроса.Выбрать();

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

    НоваяСтрока = Спецификация.Добавить();
    НоваяСтрока.НомерЗакупки = Выборка.СпецификацияКонтрактаНомерЗакупки;

    КонецЦикла;

    КонецПроцедуры
```
---
Запись в РС с таким значением есть? Показывайте.
---
Хорошо. Если в консоли запросов выполнить запрос

```1c
    Выбрать * Из РегистрСведений.СпецификацияКонтракта
```

Тип значения у колонки "СпецификацияКонтрактаНомерЗакупки" какой?
---
Строка
---
фиксированная или нет?
---
Переменная.
---
В консоле
```1c
    Выбрать * Из РегистрСведений.СпецификацияКонтракта
```
 отрабатывает
---
Прошу пардону, т.к. значение строковое, то правильно делать конкатенацию нужно так, как указано в (23)
Т.е.

```1c
    |ГДЕ
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки = "" + ЗначениеНомерЗакупки + "";
```
---
да я сразу увидел ошибку но автор сказал, что делал по вашему примеру и у него все получилось, но вероятно не делал. Я ему подсказал как попытаться покопаться и понять почему у него неравноценны левая и правая сторона уравнения. Спасибо что дополнительно указали автору на ошибку я думал уже проехали. Не стал поднимать тему.
---
Товарищ, вы на форум спорить приходите? Вам русским языком написали как сделать надо в (2)
---
Не в коем разе прост понять хочу.
---
(1) Ну да я согласен с ответом всегда правильнее передавать параметром, чем городить динамически формируемый запрос.
---
У вас СпецификацияКонтрактаНомерЗакупки число или строка? Возможно нужно непосредственное приведение типов.
---
Строки везде я уже сбился их проверять, непосредственное приведение это = явное приведение так ?
---
СокрЛП посмотрите, может управляющие символы где-то вылазят. Вместо равно поробуйте конструкцию " ПОДОБНО ""%""" + ваше выражение+ """%"""
---
```1c
    &НаСервере
    Процедура ЗапросКонтракта()

    ЗначениеНомерЗакупки = "123456789";

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки
    |ИЗ
    | РегистрСведений.СпецификацияКонтракта КАК СпецификацияКонтракта
    |ГДЕ
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки = ""+ЗначениеНомерЗакупки+"";

    РезультатЗапроса = Запрос.Выполнить();

    Выборка = РезультатЗапроса.Выбрать();

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

    НоваяСтрока = Спецификация.Добавить();
    НоваяСтрока.НомерЗакупки = Выборка.СпецификацияКонтрактаНомерЗакупки;

    КонецЦикла;

    КонецПроцедуры
```
Попробуйте так.
---
Но я бы сделал так:
```1c
    &НаСервере
    Процедура ЗапросКонтракта()

    ЗначениеНомерЗакупки = "123456789";

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки
    |ИЗ
    | РегистрСведений.СпецификацияКонтракта КАК СпецификацияКонтракта
    |ГДЕ
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки ПОДОБНО "%""+ЗначениеНомерЗакупки+""%"";

    РезультатЗапроса = Запрос.Выполнить();

    Выборка = РезультатЗапроса.Выбрать();

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

    НоваяСтрока = Спецификация.Добавить();
    НоваяСтрока.НомерЗакупки = Выборка.СпецификацияКонтрактаНомерЗакупки;

    КонецЦикла;

    КонецПроцедуры
```
Попробуйте так.
---
Вернее так:
```1c
    &НаСервере
    Процедура ЗапросКонтракта()

    ЗначениеНомерЗакупки = "123456789";

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки
    |ИЗ
    | РегистрСведений.СпецификацияКонтракта КАК СпецификацияКонтракта
    |ГДЕ
    | СпецификацияКонтракта.СпецификацияКонтрактаНомерЗакупки ПОДОБНО "%""+СокрЛП(ЗначениеНомерЗакупки)+""%"";

    РезультатЗапроса = Запрос.Выполнить();

    Выборка = РезультатЗапроса.Выбрать();

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

    НоваяСтрока = Спецификация.Добавить();
    НоваяСтрока.НомерЗакупки = Выборка.СпецификацияКонтрактаНомерЗакупки;

    КонецЦикла;

    КонецПроцедуры
```
Попробуйте так.