Всем привет!

Есть код:

ОбъектОтчетНаСервере = Отчеты.ВыручкаИСебестоимостьПродаж.Создать();
ТаблДокумент=Новый ТабличныйДокумент;
ОбъектОтчетНаСервере.СкомпоноватьРезультат(ТаблДокумент);

Нужно в него добавить загрузку созданного в пользовательском режиме варианта отчета.
Подскажите пожалуйста как это можно сделать. Спасибо!
---
Если вариант отчета предопределенный (зашит в скд) то

```1c
    НастройкиОтчета = СхемаКомпоновкиДанных.ВариантыНастроек.ИмяВарианта.Настройки;

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

Если вариант отчета пользовательский, то тут от конфигурации зависит

Например в БСП ВариантыОтчетов.КлючиВариантовОтчета - выдаст все варианты
ВариантыОтчетов.ПользовательскиеВариантыОтчетов - выдаст не все варианты))

ВариантыОтчетов.ПодключитьОтчетИЗагрузитьНастройки - в итоге структура в котором есть ОтчетОбъект
---
```1c
    ВариантОтчета = ВариантыОтчетов.ВариантОтчета(ОтчетСсылка, КлючВарианта);
    ОтчетИнформация = ВариантыОтчетов.СформироватьИнформациюОбОтчетеПоПолномуИмени(ОтчетСсылка.ПолноеИмя);
    ПараметрыОтчета = Новый Структура("Отчет, Настройки", ВариантОтчета, Неопределено);
    РассылкаОтчетов.ИнициализироватьОтчет(ПараметрыЖурнала, ПараметрыОтчета, Ложь, Новый УникальныйИдентификатор());
```

ну и далее по логике можно в тех же ОМ посмотреть как происходит формирование и тд
---
Если вариант отчета предопределенный (зашит в скд) то

```1c
    НастройкиОтчета = СхемаКомпоновкиДанных.ВариантыНастроек.ИмяВарианта.Настройки;

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

Если вариант отчета пользовательский, то тут от конфигурации зависит

Например в БСП ВариантыОтчетов.КлючиВариантовОтчета - выдаст все варианты
ВариантыОтчетов.ПользовательскиеВариантыОтчетов - выдаст не все варианты))

ВариантыОтчетов.ПодключитьОтчетИЗагрузитьНастройки - в итоге структура в котором есть ОтчетОбъект
---
Да это то что нужно.

для стандартных вариантов, все отлично работает:

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

а вот с пользовательскими вариантами не разберусь

```1c
    лИмяОтчета=ОбъектОтчетНаСервере.Метаданные().ПолноеИмя();
    лСпВарианты=ВариантыОтчетов.КлючиВариантовОтчета(лИмяОтчета);
```

в списке ГУИД и представление, как после этого загрузить вариант не понятно. Лучше бы как то добраться до настроек пользовательского варианта.

Подскажите пожалуйста что дальше делать с этим ГУИД?
---
Решение найдено, написано ниже
---
Вам дали ответ ниже. Если не хотите привязываться к рассылке отчетов, а сделать функциями подсистемы библиотеки, то

```1c
    ПараметрыОтчета = Новый Структура("СсылкаВарианта, СсылкаОтчета, КлючВарианта, ИдентификаторФормы", СсылкаВарианта, СсылкаОтчета, ", Неопределено);

    // Параметры - Структура - Параметры подключения и формирования отчета.
    // * СсылкаВарианта - СправочникСсылка.ВариантыОтчетов - Ссылка варианта отчета.
    // * СсылкаОтчета - Произвольный - Ссылка отчета.
    // * КлючВарианта - Строка - Имя предопределенного или идентификатор пользовательского варианта отчета.
    // * ИдентификаторФормы - Неопределено, УникальныйИдентификатор - Идентификатор формы, из которой подключается отчет.

    СтруктураДанных = ВариантыОтчетов.ПодключитьОтчетИЗагрузитьНастройки(ПараметрыОтчета );
    КД = СтруктураДанных.Объект.КомпоновщикНастроек;
```
---
Да я потом посмотрел и нашел, только чуть по другому сделал. Спасибо еще раз!
---
Здравствуйте. Подскажите пожалуйста, почему выходит ошибка?

```1c
    ВнешнееСоединение = ПодключитьВнешнийИсточник("Srvr="buh";Ref="zup_test";Usr="Администратор";Pwd="11111";");
    СхемаКомпоновкиДанных2 = ВнешнееСоединение.Отчеты.АнализНачисленийИУдержаний.GetTemplate("ОсновнаяСхемаКомпоновкиДанных");
    ВариантОтчета = СхемаКомпоновкиДанных2.ВариантыНастроек.ЗПВыплачено.Настройки;
    КомпоновщикНастроекНастройки = ВнешнееСоединение.NewObject("КомпоновщикНастроекКомпоновкиДанных");
    ИсточникДоступныхНастроекКомпоновкиДанных = ВнешнееСоединение.NewObject("ИсточникДоступныхНастроекКомпоновкиДанных",СхемаКомпоновкиДанных2);
    КомпоновщикНастроекНастройки.Инициализировать(ИсточникДоступныхНастроекКомпоновкиДанных);
    КомпоновщикНастроекНастройки.ЗагрузитьНастройки(ВариантОтчета);
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    ПараметрПериод = Настройки.ПараметрыДанных.Элементы.Найти("Период");
    Период = ПараметрПериод.Значение;
    КомпоновщикНастроекНастройки.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период", Период);
    КомпоновщикМакета = ВнешнееСоединение.NewObject("КомпоновщикМакетаКомпоновкиДанных");
    МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных2, КомпоновщикНастроекНастройки.Настройки,,,ВнешнееСоединение.NewObject("ОписаниеТипов", "ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений").Типы().Получить(0));
    ПроцессорКомпоновкиДанных = ВнешнееСоединение.NewObject("ПроцессорКомпоновкиДанных");
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);

    ПроцессорВывода = ВнешнееСоединение.NewObject("ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений­");

    ДанныеТЗ = ВнешнееСоединение.NewObject("ТаблицаЗначений");
```

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

например сформируйте через веб сервис
---
Была подобная задача.

Для этого вынес компоновщик настроек в реквизиты формы, на саму форму пользовательские настройки из этого компоновщика.
Для сохранения настроек перед закрытием делаю:

```1c
    Если НЕ ЗавершениеРаботы Тогда

    Попытка

    ХранилищеОбщихНастроек.Сохранить("НапримерИмяФормы", "НастройкиСКД", КомпоновщикНастроек.ПолучитьНастройки());

    Исключение

    ЗаписьЖурналаРегистрации("Не удалось сохранить настройки формы "АРМ Кассира"", УровеньЖурналаРегистрации.Ошибка, , , "Пользователь: "" + Строка(ПараметрыСеанса.ТекущийПользователь) + Символы.ПС + ОписаниеОшибки());

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

    КонецЕсли;
```
 - это на сервере всё.

Потом при создании на сервере подгружаю эти настройки:

```1c
    ОбрОб = РеквизитФормыВЗначение("Объект");
    СхемаКомпоновкиДанных = ОбрОб.ПолучитьМакет("Макет");

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

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

    НастройкиСКДСохранённые = ХранилищеОбщихНастроек.Загрузить("НапримерИмяФормы", "НастройкиСКД");

    Если НастройкиСКДСохранённые = Неопределено Тогда

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

    Иначе

    НастройкиСКД.ЗагрузитьНастройки(НастройкиСКДСохранённые);

    КонецЕсли;
```

Но у вас последнее будет не при создании на сервере а при компоновке результата скорее
---
Это придется каждый отчет корячить не подходит.
---
посмотрите как реализовано в ОМ РассылкаОтчетов:
РассылкаОтчетов.ИнициализироватьОтчет() и так далее.
---
Модуль Рассылка отчетов нашел, справочник Рассылку отчетов тоже, но вот где там есть варианты отчетов не вижу. Не понял как там настраивается вариант. Можете подсказать?

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

ну и далее по логике можно в тех же ОМ посмотреть как происходит формирование и тд
---
А ведь помогло) к 7 ответу

```1c
    лИмяОтчета=ОбъектОтчетНаСервере.Метаданные().ПолноеИмя();
    лСпВариантыПользовательские=ВариантыОтчетов.КлючиВариантовОтчета(лИмяОтчета);

    лИдентификатор=ОбщегоНазначения.ИдентификаторОбъектаМетаданных(лИмяОтчета);

    ВариантОтчета = ВариантыОтчетов.ВариантОтчета(лИдентификатор, лСпВариантыПользовательские[0].Значение);

    ПараметрыОтчета = Новый Структура("Отчет, Настройки", ВариантОтчета, Неопределено);

    лОтчетИнициализация=РассылкаОтчетов.ИнициализироватьОтчет(Неопределено, ПараметрыОтчета, Ложь, Новый УникальныйИдентификатор());

    лНастройки=лОтчетИнициализация.НастройкиКД;
```

И соответственно вышел на пункт НастройкиКД
Спасибо
---
где-то здесь
-----

```1c
    ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(URLСхемы);
    КомпоновщикНастроекРеквизитФормы.Инициализировать(ИсточникНастроек);
```
---
URLСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, Новый УникальныйИдентификатор());
---
Не пойму как это связано с вариантами ( нужно именно вариант отчета загрузить.

Вообще в справке есть такая функция: УстановитьТекущийВариант(<КлючВарианта>)
Но она применяется к форме отчета, мне открывать форму нельзя, так как все должно произойти на сервере.