Здравствуйте, Скажите пожалуйста в каком месте разместить функцию СтрЗаменить() в запросах по условию.
Пробовала так:

```1c
    &НаСервере
    Процедура СформироватьНаСервере()
    Запрос = Новый Запрос;
    Запрос.Текст="Выбрать....
    | 2-Строка
    | 3-Строка
    | 3-Строка";
    ////////////////////////////////////////////////////////////­////////////////////////////////////////////////////////////­/////////////////////////////
    Запрос.Текст=СтрЗаменить(Запрос.Текст, "Старый текст запроса", "Новый текст запроса");
    Запрос.УстановитьПараметр("ТабЗнач", ТабЗнач.Выгрузить());
    Запрос.УстановитьПараметр("Филиал",Филиал);
    Запрос.УстановитьПараметр("НачДня",КонДня);
```

И так:

```1c
    &НаСервере
    Процедура СформироватьНаСервере()
    Запрос = Новый Запрос;
    Запрос.Текст=СтрЗаменить(Запрос.Текст, "Старый текст запроса", "Новый текст запроса");
    Запрос.Текст="Выбрать....
    | 2-Строка
    | 3-Строка
    | 3-Строка";
    ////////////////////////////////////////////////////////////­////////////////////////////////////////////////////////////­/////////////////////////////
    Запрос.УстановитьПараметр("ТабЗнач", ТабЗнач.Выгрузить());
    Запрос.УстановитьПараметр("Филиал",Филиал);
    Запрос.УстановитьПараметр("НачДня",КонДня);
```

Спасибо.
---
Привет. Я использую вот такой способ:

Сначала пишу текст запроса, например:

```1c
    Запрос = Новый Запрос;

    ТекстЗапроса =
    "ВЫБРАТЬ
    | Партнеры.Ссылка КАК Клиент
    |ИЗ
    | Справочник.Партнеры КАК Партнеры
    |ГДЕ
    | НЕ Партнеры.ПометкаУдаления";
```

Потом в нужном мне месте текста запроса, я вставляю "Ключ" которое буду заменять. Например ключем будет "%Клиент"

получается, например:

```1c
    "ВЫБРАТЬ
    | Партнеры.Ссылка КАК Клиент
    |ИЗ
    | Справочник.Партнеры КАК Партнеры
    |ГДЕ
    | НЕ Партнеры.ПометкаУдаления %Клиент"
```

Таким образом я в текст запроса хочу добавить еще одно условие отбора, что Партнер является клиентом.
Для этого я создам переменную ТекстЗапросаПоПризнакуКлиент = " И Партнеры.Клиент"

После этого можно прописать любое условие при котором вы замените в ваш ключ на нужную строку
Например:

```1c
    Если НужноИспользоватьОтборПоПризнакуКлиент Тогда
    ТекстЗапросаСОтборомПоПризнакуКлиент = СтрЗаменить(ТекстЗапроса, "%Клиент", ТекстЗапросаПоПризнакуКлиент );
    Запрос.Текст = ТекстЗапросаСОтборомПоПризнакуКлиент ;
    Иначе
    ТекстЗапросаБезОтбораПоПризнакуКлиент = СтрЗаменить(ТекстЗапроса, "%Производитель", ");
    Запрос.Текст = ТекстЗапросаБезОтбораПоПризнакуКлиент ;
    КонецЕсли;
```
---
Полный код приведите.
---
Ну и где у Вас в запросе "Старый текст запроса"?
---
ой всё
---
Код
&НаСервере
Процедура СформироватьНаСервере()

СтарыйЗапрос="ВЫБРАТЬ РАЗЛИЧНЫЕ
|   СУММА(Расход.Количество) КАК КолПродаж,
|   Расход.Товар КАК Товар,
|   Расход.Склад.Филиал КАК Филиал
|ПОМЕСТИТЬ ВТ_Расход
|ИЗ
|   Документ.Расход КАК Расход
|ГДЕ
|   Расход.Ссылка.Проведен
|   И Расход.Склад.Филиал В(&Филиал)
|   И Расход.Ссылка.Дата МЕЖДУ &Нач И &Кон

|СГРУППИРОВАТЬ ПО
|   Расход.Товар,
|   Расход.Склад.Филиал;

НовыйЗапрос="ВЫБРАТЬ РАЗЛИЧНЫЕ
|   СУММА(Расход.Количество) КАК КолПродаж,
|   Расход.Товар КАК Товар
|ПОМЕСТИТЬ ВТ_Расход
|ИЗ
|   Документ.Расход КАК Расход
|ГДЕ
|   Расход.Ссылка.Проведен
|   И Расход.Ссылка.Дата МЕЖДУ &Нач И &Кон
|
|СГРУППИРОВАТЬ ПО
|   Расход.Товар;

&НаСервере
Процедура СформироватьНаСервере()

   Запрос = Новый Запрос;

   Запрос.Текст=СтарыйЗапрос;

   Запрос.УстановитьПараметр("Филиал",Филиал);

   Если Филиал Тогда

      Запрос.Текст=СтрЗаменить(Запрос.Текст, СтарыйЗапрос,НовыйЗапрос);

   КонецЕсли;

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

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

   КонецЦикла;

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

Показать полностью
---
Сообщение было скрыто модератором.
---
Сообщение было скрыто модератором.
---
Оба варианта не работают...
---
Сообщение было скрыто модератором.
---
Привет. Я использую вот такой способ:

Сначала пишу текст запроса, например:

```1c
    Запрос = Новый Запрос;

    ТекстЗапроса =
    "ВЫБРАТЬ
    | Партнеры.Ссылка КАК Клиент
    |ИЗ
    | Справочник.Партнеры КАК Партнеры
    |ГДЕ
    | НЕ Партнеры.ПометкаУдаления";
```

Потом в нужном мне месте текста запроса, я вставляю "Ключ" которое буду заменять. Например ключем будет "%Клиент"

получается, например:

```1c
    "ВЫБРАТЬ
    | Партнеры.Ссылка КАК Клиент
    |ИЗ
    | Справочник.Партнеры КАК Партнеры
    |ГДЕ
    | НЕ Партнеры.ПометкаУдаления %Клиент"
```

Таким образом я в текст запроса хочу добавить еще одно условие отбора, что Партнер является клиентом.
Для этого я создам переменную ТекстЗапросаПоПризнакуКлиент = " И Партнеры.Клиент"

После этого можно прописать любое условие при котором вы замените в ваш ключ на нужную строку
Например:

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