Имя: Пароль:
1C
 
v8: СКД: Фиксация шапки
0 Лирик
 
06.04.10
07:45
Приветствую всех.
Подскажите можно стандартными средствами, без использования макетов оформления, закрепить шапку таблицы отчета?
Заранее спасибо.
1 Mitriy
 
06.04.10
08:10
после вывода в поле табдока...
2 Лирик
 
06.04.10
14:56
Еще раз спасибо, а по умолчанию как нитбудь не сделать? Лазить в Таблица->Вид постоянно приходится.
3 IronDemon
 
06.04.10
14:58
(2) Видимо код писАть нужно
4 Лирик
 
06.04.10
15:00
(3) Понятно. Халявы не будет, а жаль.
5 Макаров
 
06.04.10
15:00
Создаю форму отчета и в ней программно фиксирую нужное количество строк и колонок
6 Лирик
 
06.04.10
15:04
(5) А я лезу в настройки отчета и задаю 80 (утрирую) группировок. Не угадаешь какой высоты шапка будет.
7 mikecool
 
06.04.10
15:06
(6) все можно угадать программно...
8 IronDemon
 
06.04.10
15:38
9 sergeante
 
06.04.10
16:27
Самое простое что я смог придумать.
Фиксирует шапку при любых отборах.

Процедура скдФиксироватьШапкуОтчета(ТабДок, Фиксировать, Строка = "Номенклатура", Поправка = 0) Экспорт
   
   Если Фиксировать Тогда
       
       Область = ТабДок.НайтиТекст(Строка,,,,Истина);
       ТабДок.ФиксацияСверху = ?(ЗначениеЗаполнено(Область), Область.Верх + Поправка, 0);    
       
   Иначе
       
       ТабДок.ФиксацияСверху = 0;
       
   КонецЕсли;
   
КонецПроцедуры
10 gr13
 
06.04.10
16:29
(9) бест! зачет, а если большой отчет?
11 sergeante
 
06.04.10
16:43
(10) не вижу разницы. Работает впринципе везде корректно. Клавное колонку для поиска правильно указать.
12 gr13
 
06.04.10
16:46
(11) по скорости
13 sergeante
 
06.04.10
16:49
(12) У мну не было таких отчотов ещё, чтобы хоть как-то заметно задумывалось.
14 IronDemon
 
06.04.10
16:52
(9) А если Номенклатуру убрали из группировок?
15 sergeante
 
06.04.10
16:54
(14) тогда увы и ах! Будут, умники, жить без шапки.
16 Stim
 
06.04.10
17:23
17 Stim
 
06.04.10
17:24
+ кнопка "закрепить". Закрепляет шапку по текущую выделенную область. Самое простое, имхо.
18 AquaKosh
 
06.04.10
18:15
А посмотреть, как сделано в типовых?.....
19 gr13
 
06.04.10
18:20
(18) никак там не сделано и не фиксируется
20 i-rek
 
06.04.10
18:21
(19) в ЗУПе ВСЕ отчёты на СКД и все фиксируются
21 gr13
 
06.04.10
18:22
(20) например?
22 gr13
 
06.04.10
18:26
я имел ввиду как там сделано, приведи здесь - у меня нет типовой зуп
23 i-rek
 
06.04.10
18:34
(21) Хм. Посмотрел сам - вроде и правда не фиксируется. Значит где-то ещё видел
а конструкция такая должна быть:

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

   ТаблицаЗафиксирована = Ложь;
   Пока Истина Цикл
       ЭлементРезультата = ПроцессорКомпоновкиДанных.Следующий();
       Если ЭлементРезультата= Неопределено Тогда
           Прервать;    
       Иначе    
           ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
           Если Не ТаблицаЗафиксирована И ЭлементРезультата.ЗначенияПараметров.Количество() >  0 Тогда
               ТаблицаЗафиксирована = Истина;
               Таб.ФиксацияСверху = Таб.ВысотаТаблицы;
             КонецЕсли;
       КонецЕсли;
   КонецЦикла;
   ПроцессорВывода.ЗакончитьВывод();
24 gr13
 
07.04.10
10:28
(23) спасибо) добавил в базу знаний)
25 Kashemir
 
07.04.10
10:41
Процедура глВывестиРезультатКомпоновкиСАвтофиксациейСтрок( Таб,
                                                           ПроцессорКомпоновкиДанных,
                                                           ЭлементыРасшировки,
                                                           Знач МассивИгнорируемыхПолей = Неопределено,
                                                           РазрешитьПрерывание = Истина) Экспорт

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

КонецПроцедуры
26 mikeA
 
07.04.10
11:20
(2) вынеси кнопку "Зафиксировать шапку" на панель
(23)    Таб.ФиксацияСверху = Таб.ВысотаТаблицы - 1;