Имя: Пароль:
1C
1С v8
Фиксация шапки при выводе отчета на СКД
0 web_profiler
 
02.04.14
16:28
Все, вроде, сделал правильно. Скорее всего перепутал порядок инициализаций и выводов. Подскажите, пожалуйста, что не так сделал.

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

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

        ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
        ПроцессорВывода.УстановитьДокумент(Результат);
        //ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
        
        
        ПроцессорВывода.НачатьВывод();
        Состояние(НСТР("ru='Если Вы хотите прервать вывод отчета, нажмите Ctrl+Break'"));
        Результат.ФиксацияСверху = 0;
        
        БезобиднаяШутка = НачалоДня(ТекущаяДата()) = Дата(Год(ТекущаяДата()),4,1);
        
        //Попытка
        
        //Основной цикл вывода отчета
        Пока Истина Цикл
            ОбработкаПрерыванияПользователя();
            
            //Получим следующий элемент результата компоновки
            ЭлементРезультата = ПроцессорКомпоновкиДанных.Следующий();
            
            Если ЭлементРезультата = Неопределено Тогда
                //Следующий элемент не получен - заканчиваем цикл вывода
                Прервать;
            КонецЕсли;
            
            //Элемент получен - выведем его при помощи процессора вывода
            Если Результат.ФиксацияСверху = 0 И ЭлементРезультата.ЗначенияПараметров.Количество() <> 0 Тогда
                // пошли данные - пора зафиксировать шапку
                Результат.ФиксацияСверху = Результат.ВысотаТаблицы;
            КонецЕсли;
            
            Если БезобиднаяШутка Тогда
                ЭлементРезультата.ПроцентВывода = 100 - ЭлементРезультата.ПроцентВывода;
            КонецЕсли;
            ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
        КонецЦикла;

ПроцессорВывода.ЗакончитьВывод();        
ФормаОтчета.Открыть();
1 web_profiler
 
02.04.14
16:36
ну помогите же, все почти работает
почти...
2 web_profiler
 
02.04.14
16:37
у меня при первом проходе цикла в строке
ЭлементРезультата.ЗначенияПараметров.Количество()

сразу = 0
3 web_profiler
 
02.04.14
16:38
данные не идут - почему?
Основная теорема систематики: Новые системы плодят новые проблемы.