Имя: Пароль:
1C
1С v8
при выводе СКД в таблицу не учитываются параметры
0 SvoyaSistema
 
29.04.14
14:02
Есть СКД. Управляемые формы УТ11. Необходимо результат вывода СКД перехватить и вывести в таблицу. Всё работает с приведённым кодом ниже, но не учитываются параметры, которые есть в быстром выводе , доступные в пользовательских настройках. То есть даты фильтра при вывода на экран - одни, а в таблице данные по другим датам и так по другим параметрам, существующим в СКД. Мало того , в быстрых настройках есть параметр Календарь - Справочник.Ссылка.Календари Так вот по этому параметру вообще ругается - не установлен параметр. Хотя , если не перехватывать - то всё установлено и работает. Если настройки убрать - то есть запрос без параметров, то в таблицу попадает всё, что есть на экране в результатах СКД. Вот код в Модуле объекта отчета.

  // Перехват вывода отчета
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь; // отключаем стандартный вывод отчета - будем выводить программно

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

Процедура СформироватьОтчетВТаблицуЗначений(Результат = Неопределено, ДанныеРасшифровки = Неопределено,    ВыводВФормуОтчета = Истина, ВнешниеНаборыДанных = Неопределено) Экспорт
    
    ТаблицаЗаказов = Новый ТаблицаЗначений ; // - > результат отчета в таблицу значений
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
        КомпоновщикНастроек.Настройки, , ,
    Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ПроцессорВывода.УстановитьОбъект(ТаблицаЗаказов);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); // < - результат отчета в таблицу значений

        
КонецПроцедуры
1 Поpyчик-4
 
29.04.14
15:00
Вот код, который я использую в отчетах. Параметры учитываются. ЧЯДНТ?

///////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ

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

    //Создадим и инициализируем процессор вывода результата
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
КонецПроцедуры
2 SvoyaSistema
 
29.04.14
17:27
А где тут таблица со значениями результатов СКД ?