Как вывести Отчет СКД программно в обычной форме. Вот эта статья https://infostart.ru/1c/articles/941556/ работает только на управляемое приложение. А в обычном открывает только форму, но ничего не происходит, даже без параметров ничего не выводит.
---
Решение, может кому то пригодится:

```1c
    &на сервере
    Функция
    Схема = Отчеты.ВыводКонтрагентов.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    Настройки = Схема.НастройкиПоУмолчанию;
    //Дальше идут параметры, если в СКД их не задавали, не пишите ничего, если нужно посмотреть параметры, входе
    //выполнения программы, вычислите Настройки, и там увидите их.
    ПараметрПользователь = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Пользователь"));
    Если ПараметрПользователь <> Неопределено Тогда
    ПараметрПользователь.Значение = Пользователь;
    ПараметрПользователь.Использование = Истина;
    КонецЕсли;

    ПараметрТекущийГод = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ТекущийГод"));
    Если ПараметрТекущийГод <> Неопределено Тогда
    ПараметрТекущийГод.Значение = ГОД(ТекущаяДата());
    ПараметрТекущийГод.Использование = Истина;
    КонецЕсли;

    ПараметрПрошлыйГод = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПрошлыйГод"));
    Если ПараметрПрошлыйГод <> Неопределено Тогда
    ПараметрПрошлыйГод.Значение = ГОД(ТекущаяДата()) - 1;
    ПараметрПрошлыйГод.Использование = Истина;
    КонецЕсли;

    ПараметрСрокПланирования = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("СрокПланирования"));
    Если ПараметрСрокПланирования <> Неопределено Тогда
    ПараметрСрокПланирования.Значение = СрокПланированияСравнение;
    ПараметрСрокПланирования.Использование = Истина;
    КонецЕсли;

    ПараметрПоказатель = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Показатель"));
    Если ПараметрПоказатель <> Неопределено Тогда
    ПараметрПоказатель.Значение = ПоказательСравнение;
    ПараметрПоказатель.Использование = Истина;
    КонецЕсли;

    ПараметрМесяц = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Месяц"));
    Если ПараметрМесяц <> Неопределено Тогда
    ПараметрМесяц.Значение = ПередатьМесяц;
    ПараметрМесяц.Использование = Истина;
    КонецЕсли;

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

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

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

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

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

```1c
    Процедура СформироватьОтчет(прОсновной = Истина)Экспорт

    ЭлементыФормы.Панель1.ТекущаяСтраница = ЭлементыФормы.Панель1.Страницы.Страница1;
    ЭлементыФормы.Результат.Очистить();

    ВнешниеДанные = Новый Структура("ТабРезультат", глРезультат);

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

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

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

    //ЭтотОбъект.СхемаКомпоновкиДанных.ИсточникиДанных
    //ЭтотОбъект.СкомпоноватьРезультат(ЭлементыФормы.Результат,ДанныеРасшифровки);

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

это пример (из рабочего отчета), использования/применения компоновщика, процессоравывода и тд....
(используется в обработчике кнопки: Сформировать)
(имена реквизитов не совпадают! необходимо заменить на свои)
---
```1c
    Отчет = Отчеты.МойОтчет.Создать();
    Отчет.СкомпоноватьРезультат(ТабличныйДокумент);
```
Ну там где-то между этим вариант можно указать, параметры заполнять, отборы, ... Но если ничего такого не надо, то этого достаточно.
---
Решение, может кому то пригодится:

```1c
    &на сервере
    Функция
    Схема = Отчеты.ВыводКонтрагентов.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    Настройки = Схема.НастройкиПоУмолчанию;
    //Дальше идут параметры, если в СКД их не задавали, не пишите ничего, если нужно посмотреть параметры, входе
    //выполнения программы, вычислите Настройки, и там увидите их.
    ПараметрПользователь = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Пользователь"));
    Если ПараметрПользователь <> Неопределено Тогда
    ПараметрПользователь.Значение = Пользователь;
    ПараметрПользователь.Использование = Истина;
    КонецЕсли;

    ПараметрТекущийГод = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ТекущийГод"));
    Если ПараметрТекущийГод <> Неопределено Тогда
    ПараметрТекущийГод.Значение = ГОД(ТекущаяДата());
    ПараметрТекущийГод.Использование = Истина;
    КонецЕсли;

    ПараметрПрошлыйГод = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПрошлыйГод"));
    Если ПараметрПрошлыйГод <> Неопределено Тогда
    ПараметрПрошлыйГод.Значение = ГОД(ТекущаяДата()) - 1;
    ПараметрПрошлыйГод.Использование = Истина;
    КонецЕсли;

    ПараметрСрокПланирования = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("СрокПланирования"));
    Если ПараметрСрокПланирования <> Неопределено Тогда
    ПараметрСрокПланирования.Значение = СрокПланированияСравнение;
    ПараметрСрокПланирования.Использование = Истина;
    КонецЕсли;

    ПараметрПоказатель = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Показатель"));
    Если ПараметрПоказатель <> Неопределено Тогда
    ПараметрПоказатель.Значение = ПоказательСравнение;
    ПараметрПоказатель.Использование = Истина;
    КонецЕсли;

    ПараметрМесяц = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Месяц"));
    Если ПараметрМесяц <> Неопределено Тогда
    ПараметрМесяц.Значение = ПередатьМесяц;
    ПараметрМесяц.Использование = Истина;
    КонецЕсли;

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

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

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

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

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