Фиксация шапки в СКД

Отзывов (7)FavoriteLoadingВ закладки

Для того, чтобы зафиксировать шапку в скд, необходимо обрабатывать табличный документ.  В инструментах скд этот механизм отсутствует.

Код вывода с фиксацией шапки:

Результат = ЭлементыФормы.Результат;
Результат.Очистить();

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

ПроцессорВывода.НачатьВывод();

ТаблицаЗафиксирована = Ложь;
Пока Истина Цикл
    ЭлементРезультата = ПроцессорКомпоновкиДанных.Следующий();
    Если ЭлементРезультата= Неопределено Тогда
        Прервать;
    Иначе
        ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
        Если Не ТаблицаЗафиксирована
        И ЭлементРезультата.ЗначенияПараметров.Количество() >  0 Тогда

            ТаблицаЗафиксирована = Истина;
            Результат.ФиксацияСверху = Результат.ВысотаТаблицы - 1;

        КонецЕсли;
    КонецЕсли;
КонецЦикла;

ПроцессорВывода.ЗакончитьВывод();

Для того, чтобы зафиксировать колонку по горизонтали, можно просто выполнить следующее:

Результат.ФиксацияСлева = 1;

UPD В 1с 8.2 в отчете у модуля объекта появился метод ПриКомпоновкеРезультата(), у которого есть параметр ДокументРезультат – табдок, который генерирует СКД.
По сути в модуле объекта можно прописать следующее:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки,
                                                  СтандартнаяОбработка)
ДокументРезультат.ФиксацияСверху = 8;
КонецПроцедуры
google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

7 Коммент.

  1. Если программировать на 8.2, то можно реализовать проще.
    В 1с 8.2 в отчете у модуля объекта появился метод ПриКомпоновкеРезультата(), у которого есть параметр ДокументРезультат – табдок, который генерирует СКД.
    По сути в модуле объекта можно прописать следующее:
    Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    ДокументРезультат.ФиксацияСверху = 8;
    КонецПроцедуры

  2. Фиксацию в 8.1 также можно добавить через процедуру ОбновлениеОтображения(), правда смотрел только на небольших отчетах.

  3. Мир Вам! У меня не получилось сделать вашим кодом, а получилось вот таким:
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(ОтчетОбъект.СхемаКомпоновкиДанных, ОтчетОбъект.КомпоновщикНастроек.Настройки, ДанныеРасшифровки);

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

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

    //Получение доп макета для шапки и подвала
    Макет = ОтчетОбъект.ПолучитьМакет(“Макет”);

    //Вывод шапки
    Область = Макет.ПолучитьОбласть(“Заголовок”);
    //Область.Параметры.ДатаОтчета = Формат(ТекущаяДата(), “ДФ=dd.MM.yyyy”);
    //Область.Параметры.Организация = организация;
    //Область.Параметры.Месяц = Формат(Период, “ДФ=’MMММ yyyy'”);
    ЭлементыФормы.Результат.Вывести(Область);

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

  4. Вообще-то в 8.1 тоже можно поступить гораздо проще. В модуле формы отчета прописать процедуру

    Процедура ОбновлениеОтображения()
    ЭлементыФормы.Результат.ФиксацияСверху=1;
    КонецПроцедуры

  5. Клево!!! Работает!

    Только не могу понять что попадает сюда: ЭлементРезультата.ЗначенияПараметров

  6. Не работает (по крайней мере на 8.1).
    Не определён объект ПроцессорКомпоновкиДанных.

    Для того чтобы заработало надо вверху добавить следующее:

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

    И не понятно зачем в “Результат.ФиксацияСверху = Результат.ВысотаТаблицы – 1;” минус один, должно быть без него.

Оставить комментарий

RSSКомментарии в RSS

Авторизация

Логин:
Пароль:
Регистрация

Архивы

Закладки

  • Your favorites will be here.