Пробую сделать как написано в некоторых источниках:

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

Не помогает. В приложении отчет. Как сделать правильно?
---
Сколько ни пробовал, во внешнем отчете на УФ подменяй схему не подменяй, при нажатии ИзменитьВариант или ВыбратьВариант открывается схема по умолчанию.
Единственный способ - рисовать интерфейс настроек вручную и собирать потом схему программно, впрочем, как и сделаны все отчеты в Бух 3.0.
---
anig99, возможно это нельзя использовать именно для типа "ВнешнийОтчет". Если сделать просто обработку, то работает
---
konstruktiv, меняется только конструктор настроек, но не схема.
---
anig99, стоп, так каков должен быть конечный результат? т.к. возможно переинициализировать компоновщик, значит и выполнение произвольной схемы будет работать в одной форме. И все штатные возможности будут
---
не будет
---
spezc, чего именно не будет?
---
anig99, а что это не катит? http://1cskd.ru/2010/07/ispolzovanie-neskolkix-sxem-komponovki-dannyx-v-odnom-otchete/
---
ben19791010, это не под управляемые формы.
(43) 32ops, этот вариант у меня лежит как крайний случай - создавать функционал редактирования настроек отчета и выбора варианта самому, а не использовать генерируемые платформой.
---
anig99, а я как всегда...вминательность мой конёк
---
```1c
    ОтчетО = РеквизитФормыВЗначение("Отчет");
    //Получаем схему из макета
    Схема = ОтчетО.ПолучитьМакет("Макет");
    //Из схемы возьмем настройки по умолчанию
    //Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
    Настройки = ОтчетО.КомпоновщикНастроек.Настройки;

    //установим нужные параметры
    //Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Граница1",Период.ДатаНачала);
    //Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ГраницаПрошл",КонецДня(Период.ДатаОкончания));

    //Помещаем в переменную данные о расшифровке данных
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

    //Формируем макет, с помощью компоновщика макета
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

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

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

    //Очищаем поле табличного документа
    Результат.Очистить();

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

    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    //Левак
    //ОтчетО.СхемаКомпоновкиДанных = Схема;
    //АдресСхемы = ПоместитьВоВременноеХранилище(Схема, УникальныйИдентификатор);
    //ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы);
    //ОтчетО.КомпоновщикНастроек.Инициализировать(ИсточникНастроек);
    //ОтчетО.КомпоновщикНастроек.ЗагрузитьНастройки(Схема.НастройкиПоУмолчанию);
    //ЗначениеВРеквизитФормы(ОтчетО, "Отчет");
```

З.Ы. Гугл выдает миллиард верных ответов по запросу "Программное формирование СКД", если что.
---
mymyka, это программное выполнение отчета. Мне нужно сменить схему для отчета, чтобы можно было дальше настраивать его пользователю штатными средствами платформы перед формированием.
---
Тогда просто измените
АдресСхемы = ПоместитьВоВременноеХранилище(Схема, УникальныйИдентификатор);
    ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы);
на
    ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема);
---
mymyka, вроде пробовал
---
anig99, а в какой момент вы хотите заменить СКД?
---
Без разницы в какой момент менять схему. Всё равно в определенные моменты 1с лезет за отчетом, которые сохранён в конфигураторе и всё обламывается. Т.е. использовать уже существующий в конфигурации отчёт ради управляемой формы - нельзя. Никак. Переназначить основной реквизит - тоже нельзя. Нашел только один рабочий вариант. Сделал свои общие управляемые формы для отчета и его настроек. Просто это оказалось намного проще, чем я думал. А дальше уже я при открытии внешнего отчета отменяю открытие формы и вызываю общую форму с передачей через параметры схемы отчета. При это мне доступно и варианты и настройки. Немного поменяв стандартный код и сохранять настройки получается. В общем влезть в конфигураторо всё же пришлось, но только 1 раз. Публикация сейчас отправлена на модерацию. Чуть позже раздам вознаграждение. Извините, что так пропал - работа, да и протестировать нужно было подсистему.
(71) это кусочек того, что пришлось в итоге дописать.
(70) какой-то замудрённый способ. есть попроще для моего случая. Но это всё равно не поможет. При формировании отчета схема перечитывается из конфигурации.
(66) не обязательно интерактивное. Главное - смена. Решено через общую форму. В принципе можно её допилить и до интерактивной смены прямо из формы.
---
anig99, да там замудрен только код изменения самого запроса в СКД - само изменение очень простое...

```1c
    ТекстЗапроса = ЭтотОбъект.СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Запрос;
    // + алгоритм изменения запроса
    // ...
    //- алгоритм изменения запроса
    ЭтотОбъект.СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Запрос = ИзмененныйЗапрос;
```

Прилагаю пример переделки отчета просроченных долгов (без учета корректности привязки документов оплат) для конфигурации УТ 11.1 (тоже долго не мог понять как подогнать отчет для обычных форм под управляемые). В отладчике можно увидеть запрос ДО и запрос ПОСЛЕ, ну и открывается непосредственно в отчете запрос ПОСЛЕ (что и надо было). Т.е. таким образом можно изменять текст запроса при выполнении тех или иных условий (права пользователей, те или иные остатки и т.п.).
---
```1c
    &НаСервере
    Процедура СохранитьСхемуСКДНаСервере(СхемаСКД)

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

    ОбъектФормы.УстановитьСхему(СхемаСКД);

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

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

    &НаСервере
    Функция ВосстановитьСхемуСКДНаСервере()

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

    Возврат ОбъектФормы.ПолучитьСхему();

    КонецФункции

    &НаКлиенте
    Процедура ОткрытьСхему(Команда)

    СхемаСКД = ВосстановитьСхемуСКДНаСервере();
    Конструктор = Новый КонструкторСхемыКомпоновкиДанных(СхемаСКД);
    Конструктор.Редактировать(ЭтаФорма);

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

    &НаКлиенте
    Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)

    Если ТипЗнч(ИсточникВыбора) = Тип("КонструкторСхемыКомпоновкиДанных") Тогда

    СхемаСКД = ИсточникВыбора.ПолучитьСхему();
    СохранитьСхемуСКДНаСервере(СхемаСКД);
    Модифицированность = Истина;

    КонецЕсли;

    КонецПроцедуры
```
---
```1c
    Функция ПолучитьСхему() Экспорт

    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.УстановитьСтроку(СхемаСКД);

    Попытка

    Результат = СериализаторXDTO.ПрочитатьXML(ЧтениеXML, Тип("СхемаКомпоновкиДанных"));

    Исключение

    Результат = Неопределено;

    КонецПопытки;

    Если Результат = Неопределено Тогда

    Возврат Новый СхемаКомпоновкиДанных;

    Иначе

    Возврат Результат;

    КонецЕсли;

    КонецФункции //

    Процедура УстановитьСхему(ОбъектСхемы) Экспорт

    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.УстановитьСтроку();
    СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ОбъектСхемы, "dataCompositionSchema", "http://v8.1c.ru/8.1/data-composition-system/schema");
    СхемаСКД = ЗаписьXML.Закрыть();

    КонецПроцедуры
```
---
а не, не то
---
spezc, думаю, что не то.
---
Под неупраляемым интерфейсом было

```1c
    СхемаКомпоновкиДанных=ПолучитьМакет(?(ИмяОтчета="ДЗ","ПросроченнаяЗадолженность","НевозвратнаяЗадолженность"));
    КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
```
---
32ops, нужно поменять схему, а не только настройки.
---
ну дак первая строка
---
32ops, ну дык в управляемом интерфейсе это не работает.
---
Ну тады ой))
---
anig99, вставила в модуль отчета (на одних курсах по скд так показывали) вроде работает
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
 // Вставить содержимое обработчика.
 СхемаКомпоновкиДанных = ПолучитьМакет("Макет");
 КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
КонецПроцедуры
---
anig99, как я понял поменять схему только в модуле самого отчета получится, вроде такого:

```1c
    Процедура РаспаковкаТекстаЗапроса() Экспорт

    РазмерШага = 536870912; // 2^29 секунд - это 17 лет назад - февраль 1997 года!

    ТекстЗапроса = ЭтотОбъект.СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Запрос;

    Разделители = СтрВхождения(ТекстЗапроса, ";");

    Рефрен = Сред(ТекстЗапроса, Разделители[1] + 1, Разделители[2] - Разделители[1]);

    Рефрены = ";

    Пока РазмерШага > 1 Цикл

    Рефрены = Рефрены + СтрЗаменить(СтрЗаменить(Рефрен, "Шаг1", "Шаг" + Формат(РазмерШага / 2, "ЧГ=0")), "536870912", Формат(РазмерШага, "ЧГ=0"));

    РазмерШага = РазмерШага / 2

    КонецЦикла;

    ЭтотОбъект.СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Запрос = Сред(ТекстЗапроса, 1, Разделители[1]) + Рефрены + Сред(ТекстЗапроса, Разделители[2] + 1)

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

    РаспаковкаТекстаЗапроса();
```

Когда форма уже открыта - можно повлиять только программное формирование отчета, либо изощряться, как указано выше.
---
(71) (72) http://infostart.ru/public/416562/ собственно сама публикация. Награды раскидаю попозже.
---
правильный ответ - в отчете на управляемой форме такое не прокатит.
---
spezc, хотелось бы точно узнать на основании чего такое поведение платформы. Может всё-таки есть выход? Мне нужно подменить основную схему своей при старте отчета. Я нашёл 2 решения, но там возникает несколько ньюансов. Одно решение муторное, другое костыльное. Хотелось сделать красиво.
---
anig99, при старте - это при открытии? - подмена СКД это уже костыль какой-то изначально, зачем такое может понадобиться?
---
давно пытался, форумы перерыл. сейчас еще раз глянул новое по этой теме - ничего не изменилось.
почему - ответа нет. партнерский форум и разработчика молчат
---
Сколько ни пробовал, во внешнем отчете на УФ подменяй схему не подменяй, при нажатии ИзменитьВариант или ВыбратьВариант открывается схема по умолчанию.
Единственный способ - рисовать интерфейс настроек вручную и собирать потом схему программно, впрочем, как и сделаны все отчеты в Бух 3.0.
---
если надо - делайте костыль
---
ну не знаю насколько это красивое по вашим меркам - сделайте сделайте две вложенные схемы (или сколько у вас разных схем), сделайте два варианта - в каждом варианте своя схема.

таким образом выбирая вариант (при открытии) - вы сможете выбирать нужную схему
---
и если можно, поделитесь муторным и костыльными вариантами, хотя бы в общих чертах
---
spezc,
1. Через обработку. Создаем все нужные элементы формы для работы с отчетом (выбор варианта, изменение настройки и т.д.) сами.
2. Через отчет. Через процедуру в модуле отчета. Определенного успеха тут я добился. Компоновка настроек подгружается, но не сама схема. Её приходится грузить ПриКомпоновкеРезультата повторно. Соответственно не работают нормально остальные настройки.
---
spezc, ещё 3 вариант когда в модуле отчета

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

    СменитьСхему();
```

делаешь как-то так. Т.е. схема меняется до создания управляемой формы. НО! Такой вариант устраивает только если Макет фиксирован в коде. Я не знаю нормального способа передать в модуль отчета ПЕРЕД созданием формы что-либо. Т.е. передать информацию о том, какой именно макет мне нужен, например.
---
spezc, если бы была возможность открывать управляемую форму отчета не через ОткрытьФорму...
---
Я использую при компоновке результата

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

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

    АдресСхемыКомпоновкиДанных = ПоместитьВоВременноеХранилище(НеобходимаяСКД, Новый УникальныйИдентификатор);

    КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемыКомпоновкиДанных));

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

    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

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

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

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

    КонецПроцедуры
```
---
У меня для вас плохие новости - к сожалению, никак.
Если посмотреть на реквизит Отчет в УФ, то мы увидим, что это ДанныеФормыСтруктура, содержащие только 2 поля - ИдентификаторТипаОтчета и КомпоновщикНастроек. Т.е. СКД там по-просту нет!

А теперь представим как выполняется отчет в УФ, как клиент-серверная система. Вот у тебя есть настроенная форма, НО! - в данный момент существует она только на клиенте! Т.е. хранит инфу только о Компоновщике настроек. Для выполнения эта форма передается на сервер, там генерируется уже объект-отчет (естественно, с настройками по-умолчанию, т.е со своим стандартным СКД), в него загружаются настройки из формы (компоновщик), и... собственно все, дальше уже вызывается исполнение компоновки. (проследить это можно, поставив в модуле Сообщить("вызов отчета") , и обратить внимание когда эти сообщения вылезут).

Таким образом, подменяй-не подменяй СКД в форме - это ничего не даст.

Можно поробовать обойти (что вы и пытались сделать): подменять непосредсвенно перед выпонением, в модуле, ПриКомпоновкеРезультата(). Передавать инфу туда можно либо добавив еще один реквизит отчета (ИмяМакета, например), либо пользуясь реквзитом ДополнительныеСвойства настроек компоновщика (это структура, куда можно запихать все чего надо). Последний вариант даже более предпочтителен, т.к. ДополнительныеСвойства вместе с остальными настройками компоновщика работают через стандартный механизм настроек - т.е. в сохранении/восстановлении и расшифровках показателей.
---
Да, и, для того чтобы не сбивались настройки (если доступные поля у компоновок разные) можно попробовать поиграться с методами Получитьнастройки/ЗагрузитьНастройки/Восстановить.
---
В типовых УТ 11 есть механизм рассылки отчетов. Там компоновщик вынесен в форму и любую схему может отобразить. Можно скопипастить.
---
starik-2005, если это то, что нашел, то там только пользовательские настройки можно отобразить. Приложил рисунок что нашел
---
anig99, а вы хотите полноценный отчет? В той же ут форма отчета подменяется общей формой. Там в коде общей формы много интересного.
---
starik-2005, общую форму нельзя открыть через ПолучитьФорму ОткрытьФорму - ругается, что нужно открывать определенный отчет.
---
starik-2005, но оттуда можно выцепить, что надо...
---
starik-2005, посмотрел. опять перемудрили, реально нужно только часть функций.
---
А нельзя использовать вложенные схемы? И получать нужную когда надо.
---
ZergKRSK, нет. Так, к сожалению, не подойдет.
(35) starik-2005, сейчас гляну
---
А зачем такие сложности? Если нужно что-то подшаманить то по-моему лучше инициировать настройки из одной схемы и применять их к исполнению на другую вот и все. естественно придется доделывать обработчик "ПриКомпоновкеРезультата".
---
tristarr1, схему будет совсем другая. и настройки тоже
---
anig99, почему нельзя заиспользовать вложенную схему?
---
anig99, Тогда зачем нам это нужно? в чем смысл?
---
tristarr1, чтобы можно было открывать для внешних отчетов управляемую форму под толстым клиентом. А управляемая форма нужна, чтобы можно было нормально пользоваться вариантами отчетов и пользовательскими настройками.
---
Добавить реквизит1 в отчет типа "КомпоновщикНастроекКомпоновкиДанных". Создать форму варианта (на форме изменить путь к данным у "КопоновщикНастроеНастройки" на Отчет.Реквизит1.Настройки), в ней при создании на сервере
 СхемаДляОтбора = Отчеты.Отчет1.ПолучитьМакет("Макет");
 АдресСхемы = ПоместитьВоВременноеХранилище(СхемаДляОтбора,УникальныйИдентификатор);
 Отчет.Реквизит1.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
 Отчет.Реквизит1.ЗагрузитьНастройки(СхемаДляОтбора.НастройкиПоУмолчанию);
 Отчет.Реквизит1.Восстановить();
Схема редактируется.
---
Я делал одну форму с пользовательскими настройками и копировал настройки в нужные схемы. или это не про то?
---
Ibrogim, это решение из разряда "нарисовать свою форму, которая повторяет генерируемую платформой". Сделать это можно, но нудно.
---
Я более простой выход из ситуации нашел:

В модуле отчета есть процедура:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
 // Вставить содержимое обработчика.
 СтандартнаяОбработка = ЛОЖЬ;
 Сформировать(ДокументРезультат);
КонецПроцедуры

Вот в ней отменяем Стандартную обработку и формируем уже что угодно. В модуле уже доступно получение Макета.
---
kosorotov, как уже тут писал - теряется возможность настроек отчёта. Схема-то от другого отчета в форме.
---
а чем вариант с вложенными схемами и вариантами отчета не устроил? имхо самое оптимальное.
---
spezc, тем, что в итоге произвольный внешний отчет должен открываться в управляемой форме в толстом клиенте
---
На 8.2 99.99% что не получится сделать.
Самый простой вариант - сделать отчетов сколько нужно разных схем на СКД и одной обработкой стартером ими управлять.
Для пользователя это будет практически то же самое.
---
Вот рабочий вариант смены компоновки данных на управляемых формах. Без наворотов, просто интересен был сам факт того, что это можно сделать.

Добавлено.
разумеется, формировать список желательно по метаданным, перебирая макеты и варианты.
На обычных формах я использовал такую конструкцию:

```1c
    Для Каждого МакетСхемы Из ЭтотОбъект.Метаданные().Макеты Цикл
    СхемаКД = ПолучитьМакет(МакетСхемы.Имя);
    Для Каждого ВариантНастроек Из СхемаКД.ВариантыНастроек Цикл
    СписокВариантов.Добавить(МакетСхемы.Имя + "$" + ВариантНастроек.Имя, ВариантНастроек.Представление);
    КонецЦикла;
    КонецЦикла;
```

Дальше при смене варианта настроек:

```1c
    //Загрузим схему компоновки данных
    МногострочныйТекст = СтрЗаменить(ВыбранноеЗначение,"$", Символы.ПС);
    ИмяСхемы = СтрПолучитьСтроку(МногострочныйТекст, 1);
    Вариант = СтрПолучитьСтроку(МногострочныйТекст, 2);

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

    парам = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ВариантФормированияОтчета");
    парам.Значение = ЭтаФорма.ЭлементыФормы.ВариантФормирования.Значение;
```

При некотором желании то же самое можно сделать и на управляемых формах.
Мне было некогда сильно разбираться, поэтому список (он же "шписок") я просто прописал при создании на сервере.
---
Почему-то автор темы пропал.
Мне кажется, я в (60) указал рабочий вариант.
Хотелось бы комментариев от автора темы :)
---
axelerleo, автор пропал еще на 59 посте=))
---
Вот вроде получилось сделать то, что требуется, но формы настроек походу берутся их схемы, может их как-то можно изменить, но пока нет времени копать дальше
---
Хотя подозреваю, что это даже не настройки, а использование метода ПолучитьФорму() аналогично толстому клиенту в обычном режиме, и в результате открывается именно форма для обычного режима.
---
Ну так что, форма отчета СКД для обычного режима из (61) подходит, или нет?
---
Вариант открытия стандартной формы СКД (а также изменения варианта, можно и настроек) внешнего отчета в упр. форме.
Хотя понял, что скорее всего требовалось не совсем это.
---
adva, у вас нет интерактивной смены схемы СКД. Вопрос к топикстартеру и всем остальным - (60) никто не смотрел? Мне кажется, это близко к тому, что требовалось - интерактивная смена схемы компоновки данных с возможностью редактирования настроек. Все на булочке с кунжутом управляемых формах.
---
Вы сами пробовали это (60) сделать на управляемых формах? У меня получалось подсунуть настройки в упр. формах, но они без схемы были нерабочими (заданные по умолчанию настройки есть, а возможности их изменения нет). У меня нет интерактивной смены схемы, но в итоге, я думаю, мой вариант более рабочий, открывается форма внешнего отчета на СКД с типовыми настройками, а если все же требуется использовать форму самого отчета, то в (65) предложено вроде как рабочее решение.
---
adva, в (60) - как раз мной написанный отчет на управляемых формах, с двумя схемами компоновки данных :)
На базе УТ 11.1 в тонком клиенте на управляемом интерфейсе все работает. Вы бы проверяли, прежде чем писать...
Ниже - скриншоты.
---
тогда еще и покажите, пожалуйста на скрине, какие поля доступны при добавлении отбора / группировки. Я ж говорю, при моих попытках выполнить аналогичные действия, настройки внешне выглядели так, как требовалось, но при этом ничего нельзя было изменить. Возможно я чего-то не доделал.
---
А если нужна именно первоначальная форма отчета, то может быть стоит попробовать так. Делаем СКД, в которой перечисляем N полей типа "Поле1, Поле2, Поле3 ...", максимум, сколько может понадобиться (в т.ч. и в ресурсы).

А при создании на сервере, обзываем эти поля для пользователя так, как требуется, исходя из схемы требуемого отчета, (лишние поля отключаем для доступа). Пользователь производит настройки. При компоновке результата, производим обратное преобразование настроенных пользователем полей, в поля нужной схемы (при этом предварительно надо будет задать соответствие полей вида Поле1 полям нужной схемы)
---
На диске итс есть внешний отчет "КонсольСистемыКомпоновкиДанных.erf", в котором в режиме предприятия даже можно изменять сам макет скд, через "конструктор схемы компоновки данных" или прямо в тексте схемы компоновки данных. поковыряй его, возможно найдешь ответ.
---
Сообщение было скрыто модератором.
---
раньше вроде была возможность напрямую передавать напрямую стартмани.
---
привет, возникла необходимость создать 5 разных отчетов УФ, лениво их делать, поэтому - хочу сделать один отчет, в котором параметром будет вид отчета.
в зависимости от вида - буду выбирать нужную схему.
почитала ветку - думаю будет полезно, спасибо.
поделюсь когда будет чем.
---
привет, возникла необходимость создать 5 разных отчетов УФ, лениво их делать, поэтому - хочу сделать один отчет, в котором параметром будет вид отчета.
в зависимости от вида - буду выбирать нужную схему.
почитала ветку - думаю будет полезно, спасибо.
поделюсь когда будет чем.
Удалось реализовать задуманное? :)
---
вот так все работает, отчет внешний из файла

```1c
    &НаСервере
    Процедура Инициализация()

    О = РеквизитФормыВЗначение("Отчет");
    Если Отчет.ЭтоДанныеПоПоказателям Тогда
    О.СхемаКомпоновкиДанных = О.ПолучитьМакет("Показатели");
    Иначе
    О.СхемаКомпоновкиДанных = О.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    КонецЕсли;

    // Для инициализации схемы нам нужен адрес в хранилище
    АдресСхемы = ПоместитьВоВременноеХранилище(О.СхемаКомпоновкиДанных,УникальныйИдентификатор);
    Отчет.КомпоновщикНастроек.Инициализировать(
    Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы)
    );
    Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(О.СхемаКомпоновкиДанных.НастройкиПоУмолчанию);

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

    Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(О.СхемаКомпоновкиДанных.НастройкиПоУмолчанию);

    КонецПроцедуры
```
---
Спасибо большое! Так действительно работает. Только не нужно указывать основную схему, иначе компоновщик настроек будет брать настройки из неё. И соответственно в модуле объекта в процедуре при компоновке результата нужно тоже указывать макет. Я добавил реквизит внешней обработки, чтобы имя схемы было доступно и в модуле формы, и в модуле объекта.