Нумерация страниц и содержание
Прембула :
Три датасета. DS1, DS11, DS12. Последние два завязаны к первому через Master/Detail.
В отчете они соответственно привязаны чере МастерДата и пару ДетайлДата. МастерДата начинает новую страницу.
Амбула :
Для каждого "шага" МастерДата на страницах надо начинать нумерацию заново. Это решаемо, через переменную. Но надо так же на страницах выводить количество сгенеренных ДетаилДата-ми страниц.
Что то вроде:
1/2
2/2
1/3
2/3
3/3
и т.д
Заведомо их количество неизвестно (число строк в detail каждый раз разное, высота строк варьируется от длинн текстов).
Подскажите - какие варианты возможны? (двухпроходником не получилось - появляется несколько копий отчетов. видимо из-за нюансов то ли Master/Detail связки, то ли из-за особенностей доп кода внутри... делать внешним кодом после PrepareReport? ...? )
Хуже еще то, что помимо этого надо до этих страниц эдакое содержание, в коем надо указать в числе прочего все те самые 1/2, 2/2 ... 3/3. Как быть с этим?
заранее благодарю за идеи...
Три датасета. DS1, DS11, DS12. Последние два завязаны к первому через Master/Detail.
В отчете они соответственно привязаны чере МастерДата и пару ДетайлДата. МастерДата начинает новую страницу.
Амбула :
Для каждого "шага" МастерДата на страницах надо начинать нумерацию заново. Это решаемо, через переменную. Но надо так же на страницах выводить количество сгенеренных ДетаилДата-ми страниц.
Что то вроде:
1/2
2/2
1/3
2/3
3/3
и т.д
Заведомо их количество неизвестно (число строк в detail каждый раз разное, высота строк варьируется от длинн текстов).
Подскажите - какие варианты возможны? (двухпроходником не получилось - появляется несколько копий отчетов. видимо из-за нюансов то ли Master/Detail связки, то ли из-за особенностей доп кода внутри... делать внешним кодом после PrepareReport? ...? )
Хуже еще то, что помимо этого надо до этих страниц эдакое содержание, в коем надо указать в числе прочего все те самые 1/2, 2/2 ... 3/3. Как быть с этим?
заранее благодарю за идеи...
Комментарии
DS1.onBeforePrint:
Set('myTotalPages', 0);
DS1_footer.onBeforePrint:
//Устанавливаем новое значение TotalPages
Аналогично с детейлами. Более точно не подскажу, т.к. не экспериментировал. У меня была другая ситуация - когда надо продублировать нумерацию на повторяющихся страницах - то есть идут 20 страница с нумерацией от 1 до 20, затем столько же таких же (ну почти таких же) и опять нумерация от 1 до 20. Специфика, как понимаете, другая. Но методы, в принципе, одни и те же.
Увеличение страниц, например, можно сделать так:
Если я верно понял - то вы предлагаете следующее:
- завести переменную, например, myTotalPages
- и в футере мастердетайла делать
смысл?
- чем set отличается от просто? - если делать так (через set ли, через присвоение ли), то myTotalPages изменится, но уже для последующих страниц... а мне надо, как бы, перед очередным "шагом" мастердетайла понять сколько страниц нагенерили детайлы (допустим N шутк) (это понятно как сделать), вернуться к этим страницам и на них проставить рядом с их нумерацией, что их было N штук.
Если сделать PrepareReport, то потом можно пробежаться по страницам, и откорректировать нумерацию. Однако если сделать функцию, которая б вызывалась при завершении шага МастерДетайла и корректировала заданное количество предыдущих страниц - то балалайка. функция вызывается, всё находит и корректирует, однако на отображении в готовом отчете - её корректировки не проходят...
пробовал... но, так сказать, - не сильно . после ряда неудачных попыток - бросил это дело... или я чего в в двухпроходнике не понимаю, или не походит он в моем случае...
пока остановился на дураццком, но работающем варианте (сроки жгут... проект ждут... разбираться не всегда есть время) - предварительно генерю упрощенные некоторые странички, смотрю на кол-во страниц в них, храню в доп поле одного из датасетов и потом - выдаю "нагора" и содержание, и требуемый мне функционал с нумерацией...
понятно, но такой подход не гибок, но вполне шустр.