Имя: Пароль:
1C
1С v8
Как в отчете на СКД закрепить шапку ?
, , ,
0 b-dm
 
27.02.14
10:17
Есть отчет на СКД, Как сделать так чтобы заголовок таблицы и названия колонок были закреплены ?
1 Лодырь
 
27.02.14
10:19
(0) Задумайся над тем как ты вообще закрепляешь шапку у любых отчетов не на СКД и сделай так же.
2 b-dm
 
27.02.14
10:23
(1) - там же нет явного макета ?)
3 Wobland
 
27.02.14
10:23
обычно СКД - это и есть макет
4 b-dm
 
27.02.14
10:24
(3) -может ткнете на ссылку или на пример, пока чето идей нету)
5 Лодырь
 
27.02.14
10:24
(2) Результатом является табличный документ. И закрепляешь ты шапку в нем, и этот способ не зависит от способа формирования этого табличного документа.
6 Лодырь
 
27.02.14
10:25
7 Cube
 
27.02.14
10:25
(0) По-умолчанию и так закреплено...
8 Лодырь
 
27.02.14
10:26
(7) Зависит от версии платформы
9 b-dm
 
27.02.14
10:37
Нашел вот что:
ТабличныйДокумент.ФиксацияСверху (SpreadsheetDocument.FixedTop)
ТабличныйДокумент (SpreadsheetDocument)
ФиксацияСверху (FixedTop)

версия платформы 8.2.19.80

не знаю как по умолчанию закреплено. у меня не закреплено :)
10 Cube
 
27.02.14
11:39
(9) "версия платформы 8.2.19.80"
Вот, вчера делал отчет на СКД на древней базе. Работает на 8.2.19.83 в режиме совместимости (!) с 8.1. Шапка сама закреплена: при скроллинге отчета вниз, шапка остается на месте. Кода в отчете нет.
И это закрепление добавили очень давно. Может года два назад...
11 b-dm
 
27.02.14
11:45
(10) прям наименование отчета закреплено ? не форма, а то что выводится в макете ?
12 Cube
 
27.02.14
11:53
(11) Прямо как будто применили ТабличныйДокумент.ФиксацияСверху()
13 Tolyas
 
27.02.14
12:20
ЭлементыФормы.Результат.Очистить();
    ДанныеРасшифровки = Неопределено;
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки);
    НастройкиПервойСхемы = КомпоновщикНастроек;
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки, Истина);
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент();
    ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);
    
    ПроцессорВывода.НачатьВывод();
    ТаблицаЗафиксирована = Ложь;
    ПарамВысота = 0;
    Пока Истина Цикл
        ОбработкаПрерыванияПользователя();
        ЭлементРезультата = ПроцессорКомпоновки.Следующий();
        Если ЭлементРезультата = Неопределено Тогда
            Прервать;
        Иначе
            Если //Не ОтчетОбъект.РасширеннаяНастройка И
                Не ТаблицаЗафиксирована
                И ЭлементРезультата.ЗначенияПараметров.Количество() > 0
                И ТипЗнч(ОтчетОбъект.КомпоновщикНастроек.Настройки.Структура[0]) <> Тип("ДиаграммаКомпоновкиДанных") Тогда
                ТаблицаЗафиксирована = Истина;
                ЭлементыФормы.Результат.ФиксацияСверху = ЭлементыФормы.Результат.ВысотаТаблицы;
                ПарамВысота = ЭлементыФормы.Результат.ВысотаТаблицы;
            КонецЕсли;
            ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
        КонецЕсли;
    КонецЦикла;
    ПроцессорВывода.ЗакончитьВывод();
    ЭлементыФормы.Результат.ПовторятьПриПечатиСтроки = ЭлементыФормы.Результат.Область(1,, ПарамВысота,);
    ЭлементыФормы.Результат.Автомасштаб = Истина;
    ЭлементыФормы.Результат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    //ЭлементыФормы.Результат.ФиксацияСлева = 1;
14 Cube
 
27.02.14
12:27
Ладно, шутки в сторону.
Вот отчет: http://files.mail.ru/A27BCA8EC6194AD698C7506B7079E54B
Вот результат: http://storage8.static.itmages.ru/i/14/0227/h_1393489570_6672934_7ead259d8c.jpg
Схема отчета:
<?xml version="1.0" encoding="UTF-8"?>
<DataCompositionSchema xmlns="http://v8.1c.ru/8.1/data-composition-system/schema"; xmlns:dcscom="http://v8.1c.ru/8.1/data-composition-system/common"; xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core"; xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings"; xmlns:v8="http://v8.1c.ru/8.1/data/core"; xmlns:v8ui="http://v8.1c.ru/8.1/data/ui"; xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">;
    <dataSource>
        <name>ИсточникДанных1</name>
        <dataSourceType>Local</dataSourceType>
    </dataSource>
    <dataSet xsi:type="DataSetQuery">
        <name>НаборДанных1</name>
        <field xsi:type="DataSetFieldField">
            <dataPath>Поле1</dataPath>
            <field>Поле1</field>
        </field>
        <field xsi:type="DataSetFieldField">
            <dataPath>Поле2</dataPath>
            <field>Поле2</field>
        </field>
        <dataSource>ИсточникДанных1</dataSource>
        <query>ВЫБРАТЬ
    "Один" КАК Поле1,
    10 КАК Поле2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Один",
    9

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Два",
    10</query>
    </dataSet>
    <settingsVariant>
        <dcsset:name>Основной</dcsset:name>
        <dcsset:presentation xsi:type="xs:string">Основной</dcsset:presentation>
        <dcsset:settings xmlns:style="http://v8.1c.ru/8.1/data/ui/style"; xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system"; xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web"; xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows">;
            <dcsset:selection>
                <dcsset:item xsi:type="dcsset:SelectedItemField">
                    <dcsset:field>Поле1</dcsset:field>
                </dcsset:item>
                <dcsset:item xsi:type="dcsset:SelectedItemField">
                    <dcsset:field>Поле2</dcsset:field>
                </dcsset:item>
            </dcsset:selection>
            <dcsset:item xsi:type="dcsset:StructureItemGroup">
                <dcsset:groupItems>
                    <dcsset:item xsi:type="dcsset:GroupItemField">
                        <dcsset:field>Поле1</dcsset:field>
                        <dcsset:groupType>Items</dcsset:groupType>
                        <dcsset:periodAdditionType>None</dcsset:periodAdditionType>
                        <dcsset:periodAdditionBegin xsi:type="xs:dateTime">0001-01-01T00:00:00</dcsset:periodAdditionBegin>
                        <dcsset:periodAdditionEnd xsi:type="xs:dateTime">0001-01-01T00:00:00</dcsset:periodAdditionEnd>
                    </dcsset:item>
                </dcsset:groupItems>
                <dcsset:order>
                    <dcsset:item xsi:type="dcsset:OrderItemAuto"/>
                </dcsset:order>
                <dcsset:selection>
                    <dcsset:item xsi:type="dcsset:SelectedItemAuto"/>
                </dcsset:selection>
                <dcsset:item xsi:type="dcsset:StructureItemGroup">
                    <dcsset:order>
                        <dcsset:item xsi:type="dcsset:OrderItemAuto"/>
                    </dcsset:order>
                    <dcsset:selection>
                        <dcsset:item xsi:type="dcsset:SelectedItemAuto"/>
                    </dcsset:selection>
                </dcsset:item>
            </dcsset:item>
        </dcsset:settings>
    </settingsVariant>
</DataCompositionSchema>

Платформа 8.2.19.83. Шапка зафиксирована.
15 rozer76
 
27.02.14
14:24
сделать кнопку и ...

Процедура ДействияФормыЗафиксировать(Кнопка)
    Результат = ЭлементыФормы.Результат;
    ИмяОбласти = Результат.ТекущаяОбласть.Имя;    
    ПозицияДвоеточия = Найти(ИмяОбласти,":");
    Если ПозицияДвоеточия > 0  тогда
        ВсегоСимволов = СтрДлина(ИмяОбласти);
        ИмяОбласти = Сред(ИмяОбласти,ПозицияДвоеточия+1,ВсегоСимволов-ПозицияДвоеточия);
    КонецЕсли;
    
    ПозицияС = Найти(ИмяОбласти,"C");
    Строк =  Сред(ИмяОбласти,2,ПозицияС-2);
    Столбцов = Сред(ИмяОбласти,ПозицияС+1,СтрДлина(ИмяОбласти)-ПозицияС);
    
    Результат.ФиксацияСверху = Число(Строк);
    Результат.ФиксацияСлева = Число(Столбцов);
КонецПроцедуры
16 b-dm
 
27.02.14
15:03
(14)(15) - спасибо, сейчас посмотрю.

ДействияФормыЗафиксировать(Кнопка) в модуле формы добавить, процедура типовая ?
17 stepan73
 
27.02.14
15:12
если нужно автоматом закрепить шапку, то в процедуре ПриКомпоновкеРезультата нужно. Только там и формировать ПФ нужно будет.

типо этого

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

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

//Обозначим начало вывода
ПроцессорВывода.НачатьВывод();
ТаблицаЗафиксирована = Ложь;

ДокументРезультат.ФиксацияСверху = 0;
//Основной цикл вывода отчета
Пока Истина Цикл
    //Получим следующий элемент результата компоновки
    ЭлементРезультата = ПроцессорКомпоновки.Следующий();

    Если ЭлементРезультата = Неопределено Тогда
        //Следующий элемент не получен - заканчиваем цикл вывода
        Прервать;
    Иначе
        // Зафиксируем шапку
        Если  Не ТаблицаЗафиксирована
              И ЭлементРезультата.ЗначенияПараметров.Количество() > 0
              И ТипЗнч(КомпоновщикНастроек.Настройки.Структура[0]) <> Тип("ДиаграммаКомпоновкиДанных") Тогда

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

        КонецЕсли;
        //Элемент получен - выведем его при помощи процессора вывода
        ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
    КонецЕсли;
КонецЦикла;

ПроцессорВывода.ЗакончитьВывод();
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.