Можно ли зафиксировать шапку таблицы отчета до начала следующей таблицы

1. machneff 44 11.06.19 15:47 Сейчас в теме
Есть задача закрепить шапку таблицы отчета пока не начнется следующая. Это вообще возможно?
Прикрепленные файлы:
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
4. alex-l19041 8 11.06.19 17:14 Сейчас в теме
(1)
пока не начнется следующая
- т.е. потом закрепить шапку второй таблицы и т.д. ? такого нет...
5. machneff 44 11.06.19 17:42 Сейчас в теме
2. SGordon1 11.06.19 15:55 Сейчас в теме
3. machneff 44 11.06.19 15:59 Сейчас в теме
(2) можно и там, в принципе не важно, интересно просто - существует такая возможность или нет...
7. tusv 210 11.06.19 18:05 Сейчас в теме
(3)Почему бы нет. Есть такой метод НачатьВывод(). Раньше часто использовался. Ну тут пробить Отладчиком. Узнать какой макет выводит вторую таблицу
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	Настройки = КомпоновщикНастроек.ПолучитьНастройки();	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);
	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки, Истина);
	
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
	
	ПроцессорВывода.НачатьВывод(); 
	Зафиксировали = Ложь;
	Пока Истина Цикл 
		
		ЭлементРезультата = ПроцессорКомпоновки.Следующий(); 
		
		Если ЭлементРезультата = Неопределено Тогда 
			Прервать; 
		КонецЕсли;
		
		ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
		//"Макет5" у меня вторая таблица
		Если не ЭлементРезультата.ЗначенияПараметров.Количество() = 0  и не Зафиксировали и ЭлементРезультата.Макет = "Макет5" Тогда
			Зафиксировали = Истина;
			ДокументРезультат.ФиксацияСверху = ДокументРезультат.ВысотаТаблицы-1;
		КонецЕсли; 
	КонецЦикла; 
	ПроцессорВывода.ЗакончитьВывод();
	
КонецПроцедуры
Показать
8. Sashares 34 11.06.19 18:50 Сейчас в теме
(7)ну зафиксируете вы шапку верхней таблицы. А дальше то что?
9. tusv 210 11.06.19 18:52 Сейчас в теме
(8) Так то фиксируется вторая таблица. Ну в общем зависит от имени макета
10. Sashares 34 11.06.19 18:57 Сейчас в теме
(9)не заработает. Программно нельзя зафиксировать табдок на высоте большей, чем выводится на форму. Хочется так
Прикрепленные файлы:
Screencast 2016-07-22.mp4
11. tusv 210 11.06.19 19:46 Сейчас в теме
(10)Ну если стрелками, а не полосой прокрутки и не PgDN, то через табличную часть Отчета, можно получить номера строк фиксации и на клиенте обрабатывать
НомерСтроки = 0;
Пока Истина Цикл 
	
	ЭлементРезультата = ПроцессорКомпоновки.Следующий(); 
	
	Если ЭлементРезультата = Неопределено Тогда 
		Прервать; 
	КонецЕсли;
	
	ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
	//Первая таблица
	Если не ЭлементРезультата.ЗначенияПараметров.Количество() = 0  и НомерСтроки = 0  и ЭлементРезультата.Макет = "Макет2" Тогда
	    НоваяСтрока = ТаблицаФиксация.Добавить();
		НоваяСтрока.НомерФиксированнойСтроки = ДокументРезультат.ВысотаТаблицы-1;
		НомерСтроки=НомерСтроки+1;
	КонецЕсли;
	//Вторая таблица
	Если не ЭлементРезультата.ЗначенияПараметров.Количество() = 0  и НомерСтроки=1 и ЭлементРезультата.Макет = "Макет5" Тогда
		НоваяСтрока = ТаблицаФиксация.Добавить();
		НоваяСтрока.НомерФиксированнойСтроки = ДокументРезультат.ВысотаТаблицы-1;
		НомерСтроки=НомерСтроки+1;
	КонецЕсли;
КонецЦикла;
ДокументРезультат.ФиксацияСверху = ТаблицаФиксация[0].НомерФиксированнойСтроки;
ПроцессорВывода.ЗакончитьВывод();
Показать

А в Форме
&НаКлиенте
Процедура РезультатПриАктивизацииОбласти(Элемент)
	Строки = Отчет.ТаблицаФиксация.НайтиСтроки(Новый Структура("НомерФиксированнойСтроки",Элемент.ТекущаяОбласть.Верх));
	Если Строки.Количество() Тогда
		Результат.ФиксацияСверху = Элемент.ТекущаяОбласть.Верх;
	КонецЕсли;	
КонецПроцедуры

Работает
12. Sashares 34 11.06.19 22:04 Сейчас в теме
(11) Если работает, идея интересная.
Но минус большой - прокрутить вниз условно говоря получится, вверх уже не нет=)
Предложу альтернативу.
В таблице, например, ТаблицаФиксация в соседнем реквизите хранить адрес табличного документа каждой из секций отчета.
Вместо вывода полного результата отчета при выборе строки таблицы выводить его на форму из временного хранилища выбранной строки.
Можно сразу при выводе устанавливать фиксацию шапки выбранной секции.
14. tusv 210 16.06.19 20:49 Сейчас в теме
(12)
Но минус большой - прокрутить вниз условно говоря получится, вверх уже не нет=)

Эт почему? Я показал простенький алгоритм, но можно жеж не на равенство проверять, а на ближайшую точку, что меньше ТекущаяОбласть.Вверх. Тогда и PgDN, PgUp будет работать. Увы. полоса прокрутки в пролете. Хотя можно и свою прикрутить. полосой регулировки. Приблизительно, как во тут у меня
6. Sashares 34 11.06.19 17:57 Сейчас в теме
13. user613191_olgargor 12.06.19 19:59 Сейчас в теме
нет такой возможности
Оставьте свое сообщение
Вакансии
Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день

Программист 1C
Волгоград
зарплата от 200 000 руб.
Полный день

Аналитик
Санкт-Петербург
зарплата от 200 000 руб. до 250 000 руб.
Полный день