Добрый день. Отчет скд. При определенных условиях удаляю строку из запроса. Выполняется отчет, выводится результат. После этого если формировать отчет, то запрос берется с удаленной строкой. Приходится закрывать и открывать отчет заново. Подскажите, можно ли как-нибудь обновить настройки, чтобы не закрывать отчет каждый раз ? Заранее спасибо.

Компоновка результата:

```1c
    Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    //&Обещание
    Если НЕ ЗначениеЗаполнено(Обещание) тогда
    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Получить(3).Использование = Ложь;
    СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Запрос = СтрЗаменить(СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Запрос,"И АнкетаКлиента.Обещание В(&Обещание)",");
    Иначе
    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Получить(3).Значение = Обещание;
    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Получить(3).Использование = Истина;
    КонецЕсли;

    //&Сегодня
    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Получить(2).Значение = НачалоДня(ТекущаяДата());
    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Получить(2).Использование = Истина;

    //&НачалоПериода
    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Получить(0).Значение = НачалоДня(НачалоПериода);
    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Получить(0).Использование = Истина;

    //&КонецПериода
    Если КонецПериода = Дата(1,1,1) Тогда
    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Получить(1).Значение = КонецДня(ТекущаяДата());
    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Получить(1).Использование = Истина;
    Иначе
    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Получить(1).Значение = КонецДня(КонецПериода);
    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Получить(1).Использование = Истина;
    Конецесли;

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки);

    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);

    КонецПроцедуры
```
---
Зачем такие сложности? Это же СКД. Почему не написать в условиях компоновки данных? Типа

```1c
    ГДЕ
    .....
    {ГДЕ
    (АнкетаКлиента.Обещание В(&Обещание))}
```
---
Не проще ли изменить изначальный запрос так, чтобы потом не менять его динамически?
Например как-то так:

```1c
    И (&Обещание = НЕОПРЕДЕЛЕНО
    ИЛИ АнкетаКлиента.Обещание В(&Обещание))
```

Если Обещание <> Неопределено при его незаполненности, то изменить так.

```1c
    //&Обещание
    Если НЕ ЗначениеЗаполнено(Обещание) тогда
    //КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Получить(3).Использование = Истина;
    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Получить(3).Значение = Неопределено;
    Иначе
    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Получить(3).Значение = Обещание;
    //КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Получить(3).Использование = Истина;
    КонецЕсли;
```
---
Не проще ли изменить изначальный запрос так, чтобы потом не менять его динамически?
Например как-то так:

```1c
    И (&Обещание = НЕОПРЕДЕЛЕНО
    ИЛИ АнкетаКлиента.Обещание В(&Обещание))
```

Если Обещание <> Неопределено при его незаполненности, то изменить так.

```1c
    //&Обещание
    Если НЕ ЗначениеЗаполнено(Обещание) тогда
    //КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Получить(3).Использование = Истина;
    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Получить(3).Значение = Неопределено;
    Иначе
    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Получить(3).Значение = Обещание;
    //КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Получить(3).Использование = Истина;
    КонецЕсли;
```
---
а после "иначе" почему закомментили? необходимо же вставить параметр
---
Виноват, не обратил внимание, что там строки местами поменяны относительно верхнего блока.
Подсветки синтаксиса в поле ввода то нет. Исправил.
---
Сделал, как вы написали, выдает ошибку

Не задано значение параметра "Обещание"
И (<<?>>&Обещание = НЕОПРЕДЕЛЕНО
---
Ну, раскомментируйте строки, что я закомментировал в примере. Может у вас по умолчанию этот параметр не используется.
---
Зачем такие сложности? Это же СКД. Почему не написать в условиях компоновки данных? Типа

```1c
    ГДЕ
    .....
    {ГДЕ
    (АнкетаКлиента.Обещание В(&Обещание))}
```
---
Пока работает очень глупое решение, но работает. Задаю текст запроса до изменения,
 СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Запрос = ТекстЗапроса;

Буду изучать предложенные выше варианты, спасибо.