Добрый день! Делаю отчет скд. В запросе есть параметр, его передаю с формы отчета. Устанавливаю параметр, отчет выводится. Необходимое условие - если в форме параметр не выбран, то нужно вывести отчет без учета параметра, как решил: просто проверяю значение если обещание = "" тогда заменяю строку в запросе. Отчет не выводится...Текст запроса с удаленной строкой переношу в консоль запросов - там результат выводится. Посоветуйте, пожалуйста, куда копать?

Запрос из набора данных скд:

```1c
    ВЫБРАТЬ
    СотрудникПоДоговоруСрезПоследних.Сотрудник,
    СотрудникПоДоговоруСрезПоследних.Договор КАК Договор,
    СотрудникПоДоговоруСрезПоследних.Период КАК Период
    ПОМЕСТИТЬ Сотрудник
    ИЗ
    РегистрСведений.СотрудникПоДоговору.СрезПоследних(, ) КАК СотрудникПоДоговоруСрезПоследних
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    Сотрудник.Сотрудник,
    СУММА(ХозрасчетныйОстатки.СуммаОстатокДт) КАК Долг,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Сотрудник.Договор) КАК Количество,
    СУММА(ДоходыСотрудниковОбороты.СуммаОборот) КАК Сумма,
    СУММА(РАЗНОСТЬДАТ(АнкетаКлиента.Договор.ДатаОкончания, &Сегодня, ДЕНЬ)) КАК ДниПросрочки

    ИЗ
    Сотрудник КАК Сотрудник
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(
    ,
    Счет.Код = "58"
    ИЛИ Счет.Код = "76",
    ,
    ВЫРАЗИТЬ(Субконто2 КАК Справочник.ДоговорыКонтрагентов) В
    (ВЫБРАТЬ
    Сотрудник.Договор
    ИЗ
    Сотрудник КАК Сотрудник)) КАК ХозрасчетныйОстатки
    ПО (Сотрудник.Договор = (ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто2 КАК Справочник.ДоговорыКонтрагентов)))
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ДоходыСотрудников.Обороты(
    ,
    ,
    ,
    Договор В
    (ВЫБРАТЬ
    Сотрудник.Договор
    ИЗ
    Сотрудник КАК Сотрудник)) КАК ДоходыСотрудниковОбороты
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АнкетаКлиента КАК АнкетаКлиента
    ПО ДоходыСотрудниковОбороты.Договор.Ссылка = АнкетаКлиента.Договор.Ссылка
    ПО Сотрудник.Договор = ДоходыСотрудниковОбороты.Договор

    Где Сотрудник.Период между &НачалоПериода и &КонецПериода
    И АнкетаКлиента.Обещание = &об

    СГРУППИРОВАТЬ ПО
    Сотрудник.Сотрудник
```

Меняю текст запроса так:

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

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

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

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

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

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

Текст запроса меняется как надо:

```1c
    ВЫБРАТЬ
    СотрудникПоДоговоруСрезПоследних.Сотрудник,
    СотрудникПоДоговоруСрезПоследних.Договор КАК Договор,
    СотрудникПоДоговоруСрезПоследних.Период КАК Период
    ПОМЕСТИТЬ Сотрудник
    ИЗ
    РегистрСведений.СотрудникПоДоговору.СрезПоследних(, ) КАК СотрудникПоДоговоруСрезПоследних
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    Сотрудник.Сотрудник,
    СУММА(ХозрасчетныйОстатки.СуммаОстатокДт) КАК Долг,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Сотрудник.Договор) КАК Количество,
    СУММА(ДоходыСотрудниковОбороты.СуммаОборот) КАК Сумма,
    СУММА(РАЗНОСТЬДАТ(АнкетаКлиента.Договор.ДатаОкончания, &Сегодня, ДЕНЬ)) КАК ДниПросрочки

    ИЗ
    Сотрудник КАК Сотрудник
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(
    ,
    Счет.Код = "58"
    ИЛИ Счет.Код = "76",
    ,
    ВЫРАЗИТЬ(Субконто2 КАК Справочник.ДоговорыКонтрагентов) В
    (ВЫБРАТЬ
    Сотрудник.Договор
    ИЗ
    Сотрудник КАК Сотрудник)) КАК ХозрасчетныйОстатки
    ПО (Сотрудник.Договор = (ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто2 КАК Справочник.ДоговорыКонтрагентов)))
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ДоходыСотрудников.Обороты(
    ,
    ,
    ,
    Договор В
    (ВЫБРАТЬ
    Сотрудник.Договор
    ИЗ
    Сотрудник КАК Сотрудник)) КАК ДоходыСотрудниковОбороты
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АнкетаКлиента КАК АнкетаКлиента
    ПО ДоходыСотрудниковОбороты.Договор.Ссылка = АнкетаКлиента.Договор.Ссылка
    ПО Сотрудник.Договор = ДоходыСотрудниковОбороты.Договор

    Где Сотрудник.Период между &НачалоПериода и &КонецПериода

    СГРУППИРОВАТЬ ПО
    Сотрудник.Сотрудник
```

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

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

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

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

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

Ну или попробовать воспользоваться расширением языка запросов СКД, взять это условие в фигурные скобки, тогда если использование параметра отключено, то СКД сама условие из запроса исключает
---
Что-то мне подсказывает, что сначала надо текст запроса поменять, а потом уже макет компоновки выполнять...
Что-то вроде

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

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

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

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

Ну или попробовать воспользоваться расширением языка запросов СКД, взять это условие в фигурные скобки, тогда если использование параметра отключено, то СКД сама условие из запроса исключает
---
Помогло, выводятся значения, но, к сожалению, почему-то не все.
---
Через отладчик и консоль компоновки данных смотреть какой реально запрос выполняет СКД.
---
Нашел свою ошибку. Спасибо Вам огромное!