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

```1c
    Выборка = Запрос.Выполнить().Выбрать();

    Пока Выборка.Следующий() Цикл
    Стр = ТЗ.Добавить();
    ЗаполнитьЗначенияСвойств(Стр,Выборка);
    КонецЦикла;

    Если ТЗ.Количество() = 0 Тогда
    Возврат;
    КонецЕсли;

    ОтчетОбъект = РеквизитФормыВЗначение("Отчет");

    Если Отчет.ПоНоменклатуре=Ложь Тогда
    СхемаКомпоновкиДанных = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных1");
    Иначе
    СхемаКомпоновкиДанных = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    Конецесли;

    Период_1="С "+Строка(Формат( Отчет.Период1.ДатаНачала,"ДФ=dd.MM.yy"))+ " по "+Строка(Формат(Отчет.Период1.ДатаОкончания,"ДФ=dd.MM.yy"));
    Период_2="С "+Строка(Формат( Отчет.Период2.ДатаНачала,"ДФ=dd.MM.yy"))+ " по "+Строка(Формат(Отчет.Период2.ДатаОкончания,"ДФ=dd.MM.yy"));
    Поле1=СхемаКомпоновкиДанных.НаборыДанных.ТЗ.Поля.найти("Период1");
    Поле1.Заголовок=Период_1;
    Поле2=СхемаКомпоновкиДанных.НаборыДанных.ТЗ.Поля.найти("Период2");
    Поле2.Заголовок=Период_2;

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

    ВнешниеНаборы = Новый Структура;

    ВнешниеНаборы.Вставить("ТЗ",ТЗ);

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

    ПроцессорВывода.УстановитьДокумент(Результат);

    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    СкомпоноватьРезультат();
```

В ОсновнаяСхемаКомпоновкиДанных1 в наборе данных нет поля номенклатура, а в ОсновнаяСхемаКомпоновкиДанных есть.
---
Я конечно не эксперт в СКД, но почему не использовать варианты отчёта, зачем вторая компоновка?

А так вам не хватает строчки: КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
---
Похоже, действительно, на очередной костыль:
запрос СКД подразумевает набор ВСЕХ возможных полей потенциально востребованных при формировании отчета, а что выводить и как группировать, как правило определяет пользователь уже в режиме предприятия ...
т.е., полагаю, Ваша задача легко решается без конфигуратора ...
---
Дело в том, что мне нужно сформировать отчет за 2 периода, соответственно я делаю 2 одинаковых запроса на разные даты,которые связываю затем по партнеру и по номенклатуре. Если я делаю по партнеру,то номенклатуру приходится убрать,т.к. она мешает группировке, т.е. разбивает одну реализацию на несколько строчек, в зависимости от количества номенклатур. А пользователю необходимо формировать как по партнерам, так и по номенклатуре.
---
Я конечно не эксперт в СКД, но почему не использовать варианты отчёта, зачем вторая компоновка?

А так вам не хватает строчки: КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
---
Если у Вас не редактируются отборы на форме, тогда в (2) всё правильно написали:
замените

```1c
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки);
```

на

```1c
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
```

Иначе получается что есть две компоновки данных (одна из них похоже указана как основная в отчете), вы для компоновки макета используете компоновщик настроек отчета, который инициализирован основной схемой, а не Схемой1. Из-за этого ошибка, потому что в Отчет.КомпоновщикНастроек - содержит настройки по основной схеме, а не Схеме1.
---
Вместо

```1c
    Настройки = Отчет.КомпоновщикНастроек.ПолучитьНастройки();
```

напишите

```1c
    КомпоновщикНастроекСхема = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроекСхема.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    КомпоновщикНастроекСхема.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
    Настройки = КомпоновщикНастроекСхема.Настройки;
```
---
При таком задании настроек перестает работать отбор. Т.е. если в настройках сделать отбор по складу/номенклатуре/и т.д. выдает абсолютно все данные.