Добрый день!

Есть запрос, который в зависимости от вида поиска информации пользователем должен выводить разные данные (это касается Экспедитора и Контрагента). Если пользователь ищет инфу по контрагенту, то колонки "Контрагент" в отчете видеть не хочет, тоже самое с экспедитором.
Написала вот такой запрос:

```1c
    ВЫБРАТЬ
    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.Регистратор КАК Документ.РеализацияТоваровУслуг) КАК Регистратор,
    ХозрасчетныйДвиженияССубконто.Период КАК Дата,
    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.Регистратор КАК Документ.РеализацияТоваровУслуг).Контрагент КАК Контрагент,
    NULL КАК Экспедитор,
    ХозрасчетныйДвиженияССубконто.СубконтоКт1 КАК Тара,
    ХозрасчетныйДвиженияССубконто.СчетДт,
    ХозрасчетныйДвиженияССубконто.СчетКт,
    ХозрасчетныйДвиженияССубконто.КоличествоДт КАК Количество,
    ХозрасчетныйДвиженияССубконто.КоличествоКт,
    ХозрасчетныйДвиженияССубконто.Организация,
    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.Регистратор КАК Документ.РеализацияТоваровУслуг).Номер КАК НомерРеализации
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
    &НачалоПериода,
    &КонецПериода,
    СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыПоПрочимОперациям)
    {(СубконтоДт1 В ИЕРАРХИИ (&Экспедитор))},
    ,
    ) КАК ХозрасчетныйДвиженияССубконто
    ГДЕ
    &ВидПоиска = 2

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.Регистратор КАК Документ.РеализацияТоваровУслуг),
    ХозрасчетныйДвиженияССубконто.Период,
    NULL,
    ХозрасчетныйДвиженияССубконто.СубконтоДт1,
    ХозрасчетныйДвиженияССубконто.СубконтоКт1,
    ХозрасчетныйДвиженияССубконто.СчетДт,
    ХозрасчетныйДвиженияССубконто.СчетКт,
    ХозрасчетныйДвиженияССубконто.КоличествоДт,
    ХозрасчетныйДвиженияССубконто.КоличествоКт,
    ХозрасчетныйДвиженияССубконто.Организация,
    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.Регистратор КАК Документ.РеализацияТоваровУслуг).Номер
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
    &НачалоПериода,
    &КонецПериода,
    СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыПоПрочимОперациям),
    ,
    ) КАК ХозрасчетныйДвиженияССубконто
    ГДЕ
    &ВидПоиска = 1
    {ГДЕ
    (ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.Регистратор КАК Документ.РеализацияТоваровУслуг).Контрагент В ИЕРАРХИИ (&Контрагент))}
```

Помогите, пожалуйста, разобраться с тем, как спрятать пустые колонки (если это возможно).

Пробовала делать в условном оформлении, ставила макс и мин ширину для контрагента и экспедитора 0.1 - отчет в этом случае перестал обе эти колонки вообще выводить.

Может для этого нужны две схемы СКД? В одной - первая часть написанного мной запроса, в другой - вторая?

Пробовала еще не именовать эти колонки (указывать только заголовки), тогда отчет ругается на то, что не найдены Поле1 и Поле2.
---
может такой вариант подойдет

ВЫБОР КОГДА &ВидПоиска = 2 Тогда
ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.Регистратор КАК Документ.РеализацияТоваровУслуг).Контрагент

ИНАЧЕ
  ХозрасчетныйДвиженияССубконто.СубконтоДт1 //Экспедитор

КОНЕЦ КАК ПолеКонтрагентЭкспедитор

и выводите только это поле, а не два (Контрагент отдельно, Экспедитор отдельно)
---
Сохраните для себя и держите под рукой, как шаблон. Требуется очень часто

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

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

ВЫБОР КОГДА &ВидПоиска = 2 Тогда
ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.Регистратор КАК Документ.РеализацияТоваровУслуг).Контрагент

ИНАЧЕ
  ХозрасчетныйДвиженияССубконто.СубконтоДт1 //Экспедитор

КОНЕЦ КАК ПолеКонтрагентЭкспедитор

и выводите только это поле, а не два (Контрагент отдельно, Экспедитор отдельно)
---
Благодарю
---
В Процедуру ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) добавила следующее:

```1c
    ПолеКонтрагентЭкспедитор = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Найти("КонтрагентЭкспедитор");
    Если ВидПоиска = 1 Тогда
    ПолеКонтрагентЭкспедитор.Заголовок = "Экспедитор";
    Иначе
    ПолеКонтрагентЭкспедитор.Заголовок = "Контрагент";
    КонецЕсли;
```
---
Как вариант. свойство "Использование" программно менять у нужных полей СКД.
---
Я параметрам использование меняю:

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

Но это ведь совсем не то. Или я Вас не правильно поняла?
---
Это надо в настройках структуры отчета. Свойство ВЫбор
Если поля настроены на верхнем уровне.

```1c
    //Первое поле
    КомпоновщикНастроек.Настройки.Выбор.Элементы.Получить(0).Использование = Ложь;
```

Если в Группировке

```1c
    Группировка = КомпоновщикНастроек.Настройки.Структура.Получить(0);
    Группировка.Выбор.Элементы.Получить(0).Использование = Ложь;
```
---
А куда это нужно вставить?
В процедуру формирования отчета, так? У меня в модуле нет этой процедуры.

И в настройках такого тоже не вижу...
---
Процедуру ПриКомпоновкеРезультата надо знать как отче наш. Почитайте это
Как пример

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

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    КонецПроцедуры
```
---
Спасибо, но мне это не помогло....
---
Так не бывает. Это все равно, что Вы сами галочку на поле отожмете. Прочтите внимательно (4) Я же не знаю как у Вас поля настроены. Для всего отчета или для группировки
---
У меня отчет вообще не выводится тогда
---
Сохраните для себя и держите под рукой, как шаблон. Требуется очень часто

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

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