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

Код вывода в ДЗ следующий:

```1c
    //...
    ВнешниеНаборыДанных = Новый Структура;
    ВнешниеНаборыДанных.Вставить("ТЗОбеспечения", Результат); // Формируем структуру для передечи в СКД

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

    МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
    КомпоновщикНастроек.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

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

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

Причем, просматривая ДеревоЗначений и ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных,Истина) данные имеются, но в форму не выводятся. Подскажите, где засада? И что я делаю не так?
---
Перечитал еще раз первый пост и осознал, что вы хотите вывести результат отчета на форму в дерево значений?

Я не знаю можно ли сделать это через стандартную кнопку Сформировать и через изменение процедуры ПриКомпоновкеРезультата, т.к. я делал всегда через свою кнопку.
Для вывода на форму в дерево значений - это дерево на форме еще нужно создать и создать в нем колонки. Наверное это можно сделать и программно по схеме СКД (для УФ), но вот пример, в котором дерево уже создано и по кнопке "Вывести в дерево" отчет выводится на форму (ФормаОтчета2).
---
ikar-nikolay,
Не вижу собственно что это?
Управляемая форма?
Если да, то где ЗначениеВРеквизитФормы() ?
---
NordDron, думал и об этом, но...
когда я делаю вывод в табличный документ, я же так не извращаюсь. Но попробовать можно. Как вы видите функцию передачи?
---
ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений - для дерева специльные вывод существует, СП посмотри
---
Не увидел!

Тутнашел работающий код вывода ДЗ,

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

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

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

проверил - у меня все строчка в строчку, но... не работает!
---
ikar-nikolay,
А как выглядят настройки СКД? Насколько я помню, СКД не умеет выводить в дерево и в таблицу значений настройку вида Таблица (строки и колонки), только горизонтальные группировки.
---
Reptile, кажется всё норм, если я правильно понимаю смысл сказанного:
---
ikar-nikolay,
а какие-то еще источники данных кроме таблицы значений используются или это просто вывод ТЗ в дерево?
---
Reptile, отвечу следующим постом
Нашел универсальную функцию вывода СКД в любой объект - и всё-равно пусто. Значит ошибка где-то в исходных данных...

```1c
    //****************************************************************************
    // ШАБЛОНЫ ДЛЯ ИСПОЛЬЗОВАНИЯ СКД
    // {{
    //****************************************************************************
    // Заполняет переданный объект на основани СКД
    //
    // Параметры
    //
    // СКД – собствеено настройки СКД
    //
    // ОбъектДляЗагрузки – объект в который выгружаются данные, таблица значений, дерево значений, табличный документ
    //
    // ИсполняемыеНастройки – Пользовательские настройки СКД если не указаны будут использованы настроки СКД по умолчанию
    //
    // СтруктураПараметров - Структура – Передаваемые для СКД параметры
    //
    // ДеревоЗначений = Новый ДеревоЗначений;
    //
    // ПРИМЕР ВЫЗОВА
    // СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    // СтруктураПараметров = Новый Структура("ДатаОтчета", НашаДата);
    // ПолучитьДанныеНаОснованииСКД(СхемаКомпоновкиДанных, ДеревоЗначений, СхемаКомпоновкиДанных.НастройкиПоУмолчанию, СтруктураПараметров);
    //
    &НаСервере
    Процедура ПолучитьДанныеНаОснованииСКД(СКД, ОбъектДляЗагрузки, ИсполняемыеНастройки = Неопределено, СтруктураПараметров = Неопределено, РасшифровкаСКД = Неопределено, МакетКомпоновки = Неопределено, ВнешниеНаборыДанных = Неопределено) Экспорт

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

    //Если ТипЗнч(ОбъектДляЗагрузки) = Тип("ПолеТабличногоДокумента") ИЛИ ТипЗнч(ОбъектДляЗагрузки) = Тип("ТабличныйДокумент") Тогда
    Если ТипЗнч(ОбъектДляЗагрузки) = Тип("ТабличныйДокумент") Тогда
    ТипГенератора = Тип("ГенераторМакетаКомпоновкиДанных");
    Иначе
    ТипГенератора = Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений");
    КонецЕсли;

    Если ИсполняемыеНастройки = Неопределено Тогда

    ИсполняемыеНастройки = СКД.НастройкиПоУмолчанию;

    КонецЕсли;

    Если СтруктураПараметров <> Неопределено Тогда

    КоллекцияЗначенийПараметров = ИсполняемыеНастройки.ПараметрыДанных.Элементы;

    Для каждого Параметр Из СтруктураПараметров Цикл

    НайденноеЗначениеПараметра = КоллекцияЗначенийПараметров.Найти(Параметр.Ключ);

    Если НайденноеЗначениеПараметра <> Неопределено Тогда

    НайденноеЗначениеПараметра.Использование = Истина;

    НайденноеЗначениеПараметра.Значение = Параметр.Значение;

    КонецЕсли;

    КонецЦикла;

    КонецЕсли;

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

    ПроцессорКомпановки = Новый ПроцессорКомпоновкиДанных;

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

    //Если ТипЗнч(ОбъектДляЗагрузки) = Тип("ПолеТабличногоДокумента") ИЛИ ТипЗнч(ОбъектДляЗагрузки) = Тип("ТабличныйДокумент") Тогда
    Если ТипЗнч(ОбъектДляЗагрузки) = Тип("ТабличныйДокумент") Тогда

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

    ПроцессорВывода.УстановитьДокумент(ОбъектДляЗагрузки);

    Иначе

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

    ПроцессорВывода.УстановитьОбъект(ОбъектДляЗагрузки);

    КонецЕсли;

    ПроцессорВывода.ОтображатьПроцентВывода = Истина;

    ПроцессорВывода.Вывести(ПроцессорКомпановки, Истина);

    КонецПроцедуры // ПолучитьДанныеНаОснованииСКД()

    //****************************************************************************
    // }}
    //****************************************************************************
```
---
Reptile, а какие могут быть ещё источники данных в моих условиях?
В структуре ВнешниеНаборыДанных передается только одна таблица значений, которая загружается через набор данных - объект.
---
ikar-nikolay,
Вот простой отчет (не управляемые формы) выводит ТЗ в дерево. Использован Ваш код - все работет. Осталось найти в чем отличие вашей версии от моей :) Без скринов настроек СКД сложно что-то предполагать.
---
Reptile, спасибо!

Я перенес процедуру вывода отчета в модуль объекта в процедуру ПриКомпоновкеРезультата(), где собственно ей и место, проставил в ложь стандартную обработку и... на выходе пусто!!!

Прикрепил файл! Теперь можно говорить более предметно, что не так сделано?
---
ikar-nikolay, у тебя настроек сложных в схеме никаких нет случайно http://1cskd.ru/2010/07/vyvod-otcheta-v-kollekciyu-znachenij/
Кстати, заметил что при использовании в настройках отчета “Авто позиция ресурсов” “Не использовать” ресурсы и пользовательские поля именно в коллекцию значений попадают пустыми.
---
Стоит отметить, что при выводе результата компоновки в коллекцию значений существует несколько ограничений:
* В настройках нельзя использовать таблицы, диаграммы и вложенные схемы;
* Не используется условное оформление;
* Игнорируются папки в выбранных полях.
---
serega3333, (6) serega3333, спасибо за желание помочь, но все это я читал и проверял.

В Других настройках (последняя панель в вкладке Настройки СКД) "Авто позиция ресурсов" не активирована (галочка не стоит) и установлено значение "После всех полей".

* В настройках нельзя использовать таблицы, диаграммы и вложенные схемы; (этого нет)
* Не используется условное оформление; (не дошел до этого, поэтому нет)
* Игнорируются папки в выбранных полях (тут не понял - если имеется речь о просмотре иерархии полей, то её тоже нет)
---
Перечитал еще раз первый пост и осознал, что вы хотите вывести результат отчета на форму в дерево значений?

Я не знаю можно ли сделать это через стандартную кнопку Сформировать и через изменение процедуры ПриКомпоновкеРезультата, т.к. я делал всегда через свою кнопку.
Для вывода на форму в дерево значений - это дерево на форме еще нужно создать и создать в нем колонки. Наверное это можно сделать и программно по схеме СКД (для УФ), но вот пример, в котором дерево уже создано и по кнопке "Вывести в дерево" отчет выводится на форму (ФормаОтчета2).
---
Reptile, Catch my respect and $m!
Ну да - такой подход решает задачу, хотя странно - вполне логичный механизм не фурычит. Хотя если внимательно почитать Хрусталева (http://langslab.com/ebooks/skd/dcs-ch3/built-in-language), то он ясно пишет, что "В приведенном примере результат компоновки данных выводится в дерево значений - переменную ДеревоРезультата (листинг 3.63)", т.е. про стандартный вывод в форму СКД разговора нет. И так же нет реквизита вывода дерева на самой стандартной форме СКД.

ВОПРОС ЗАКРЫТ!!!
---
Флуд!

Правда пока разбирался с механизвом вывода дерева через настройки СКД, разобрался с плюшками СКД и уже сомневаюсь в каком направлении двинуться дальше.
Делаю панель для интерактивного создания документов, дерево прельщает тем, что можно пробежаться по дереву и поменять любые значения по любому алгоритму и при нажатии кнопки "Создать документы" по выбранным значениям создать документы.
Если же тоже самое выполнять силами СКД, то документ можно создавать не проведенным, заполнять по выбранным значениям СКД, а в запросе делать выборку по этим непроведенным документам. А при нажатии кнопки "Создать документы" делать проведение. Механизм макетов и расшифровок очень в этом прельщает.
---
ЭлементыФормы.Дерево.СоздатьКолонки(); после ПроцессорВывода.Вывести(ПроцессорКомпановки, Истина);