|   |   | 
| 
 | Результат СКД в таблицу значений | ☑ | ||
|---|---|---|---|---|
| 0
    
        alnovin 27.02.13✎ 00:40 | 
        Всем привет! 
  Тема замусоленная, и тем не менее. Не получается разобраться. Идея стара как мир: открыть обработку, инициализировать настройки СКД, соответственно отбора и вывод результата в таблицу значений для последующей обработки. 1 этап. Все работает. Процедура ЗагрузитьНастройкиСКД() ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); СКД = ОбработкаОбъект.ПолучитьМакетСКД("СКД"); АдресСКД = ПоместитьВоВременноеХранилище(СКД, УникальныйИдентификатор); КомпоновщикНастроекКомпоновкиДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСКД)); УстановтьОтборПоПолюКомпоновки("Организация",Справочники.Организации.ПустаяСсылка(),ВидСравненияКомпоновкиДанных.Равно); УстановтьОтборПоПолюКомпоновки("Контрагент",Справочники.Контрагенты.ПустаяСсылка(),ВидСравненияКомпоновкиДанных.Равно); УстановтьОтборПоПолюКомпоновки("ДоговорКонтрагента",Справочники.ДоговорыКонтрагентов.ПустаяСсылка(),ВидСравненияКомпоновкиДанных.Равно); // Добавим выбранные поля Для Каждого Элемент из КомпоновщикНастроекКомпоновкиДанных.Настройки.Выбор.ДоступныеПоляВыбора.Элементы Цикл Если НЕ Элемент.Папка Тогда ВыбранноеПоле = КомпоновщикНастроекКомпоновкиДанных.Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Использование = Истина; ВыбранноеПоле.Поле = Элемент.Поле; КонецЕсли; КонецЦикла; КонецПроцедуры 2. Этап. Вывод. Не работает. Процедура ЗаполнитьТаблицуДокументовНаСервере() ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); СКД = ОбработкаОбъект.ПолучитьМакетСКД("СКД"); УстановитьПараметрКомпоновки("ДатаНачала",Период.ДатаНачала); УстановитьПараметрКомпоновки("ДатаОкончания",Период.ДатаОкончания); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД, КомпоновщикНастроекКомпоновкиДанных.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки); ТабДокументов = Новый ТаблицаЗначений; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ПроцессорВывода.УстановитьОбъект(ТабДокументов); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); КонецПроцедуры Переменная "ТабДокументов" не содержит строк. Если Схему загрузить в отчет, то требуемый результат выводится. Что не так? | |||
| 1
    
        GANR 27.02.13✎ 00:45 | 
        Глянь по отладчику ТабДокументов.Колонки. Там пусто?     | |||
| 2
    
        France 27.02.13✎ 01:26 | 
        Вот чего с СКД не понимаю, та это - почему бы не использовать типовой шаблон? 99.99 % проблем решает, которые на месте пытаются обсудить     | |||
| 3
    
        alnovin 27.02.13✎ 07:02 | 
        (1) все верно, в колонках пусто. Но я же определил поля. Группировки надо генерить?     | |||
| 4
    
        alnovin 27.02.13✎ 07:27 | 
        Утро вечера мудренее. Разобрался.
  Процедура ЗагрузитьНастройкиСКД() ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); СКД = ОбработкаОбъект.ПолучитьМакетСКД("СКД"); АдресСКД = ПоместитьВоВременноеХранилище(СКД, УникальныйИдентификатор); КомпоновщикНастроекКомпоновкиДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСКД)); УстановтьОтборПоПолюКомпоновки("Организация",Справочники.Организации.ПустаяСсылка(),ВидСравненияКомпоновкиДанных.Равно); УстановтьОтборПоПолюКомпоновки("Контрагент",Справочники.Контрагенты.ПустаяСсылка(),ВидСравненияКомпоновкиДанных.Равно); УстановтьОтборПоПолюКомпоновки("ДоговорКонтрагента",Справочники.ДоговорыКонтрагентов.ПустаяСсылка(),ВидСравненияКомпоновкиДанных.Равно); ДобавитьВыбранноеПоле(КомпоновщикНастроекКомпоновкиДанных, "Организация"); ДобавитьВыбранноеПоле(КомпоновщикНастроекКомпоновкиДанных, "Контрагент"); ДобавитьВыбранноеПоле(КомпоновщикНастроекКомпоновкиДанных, "ДоговорКонтрагента"); ДобавитьГруппировку(КомпоновщикНастроекКомпоновкиДанных, "Организация"); ДобавитьГруппировку(КомпоновщикНастроекКомпоновкиДанных, "Контрагент"); ДобавитьГруппировку(КомпоновщикНастроекКомпоновкиДанных, "ДоговорКонтрагента"); КонецПроцедуры исходные функции есть в модулях УТ11 | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |