1. machnef 12 11.06.19 15:47 Сейчас в теме

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

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

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

Работает
12. Sashares 17 11.06.19 22:04 Сейчас в теме
(11) Если работает, идея интересная.
Но минус большой - прокрутить вниз условно говоря получится, вверх уже не нет=)
Предложу альтернативу.
В таблице, например, ТаблицаФиксация в соседнем реквизите хранить адрес табличного документа каждой из секций отчета.
Вместо вывода полного результата отчета при выборе строки таблицы выводить его на форму из временного хранилища выбранной строки.
Можно сразу при выводе устанавливать фиксацию шапки выбранной секции.
6. Sashares 17 11.06.19 17:57 Сейчас в теме
13. user613191_olgargor 12.06.19 19:59 Сейчас в теме
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Бобров
зарплата от 100 000 руб. до 150 000 руб.
Временный (на проект)

Студент (стажер) 1С
Нижний Новгород
зарплата от 25 000 руб.
Полный день

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

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

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