Страница 1 из 2

Создание многостраничных отчетов с Rich-текст

Добавлено: 13 янв 2010, 09:41
fantomus
Здравствуйте.

Есть необходимость создать отчет типа договора.
Много страниц с форматированием, списками и пр.
Сам договор есть в RTF-файле.
Попробовал загрузить через "Открыть отчет...".
Результат импорта совершенно неудовлетворительный - непонятные размеры страниц, съехавшие бэнды и текстовые поля за пределами страниц...
Ну да ладно.

Осталось 2 варианта - использовать Rich-текст и загрузить в него весь файл или разбить вручную файл на страницы и на каждой разместить по одному Rich-текст.
В первом случае формирование очень медленное, да и редактировать не удобно.
Во втором случае работает заметно быстрее, но есть неудобства в связи с разбиением на страницы.
Во-первых, в случае модификации отчета (добавлении нового абзаца на первой странице, например) может понадобиться переделка всех страниц отчета.
Во-вторых, в Rich-текст есть поля данных (ФИО, должность, сумма прописью и пр.) с переменной длинной. В этом случае Rich-текст может расти в высоту и выйти за пределы одной страницы.
Кроме того, внутри такого отчета может быть таблица (график погашения кредита, например), после которой нужно продолжить текст договора.
Основная задача в том, что-бы документ получился сплошным, без полупустых страниц. Ну и удобство дизайна, конечно...

Подскажите, пожалуйста, как с вашей точки зрения лучше создавать такие отчеты?
Может в сторону подотчетов смотреть...

Спасибо.

Создание многостраничных отчетов с Rich-текст

Добавлено: 13 янв 2010, 11:38
Edward
Здравствуйте,

Если документ довольно статичен, то можно располагать RichText компоненты прямо на странице.

Если элементы договора меняются динамично по условиям, то можно расположить DataBand компоненты с CountData = 1, расположенные друг за другом.

CanBreak и CanGrow свойства у DataBand и RichText компонентов желательно установить в true.

Это базовые концепции которые работают для простейших отчетов, конвертируемых из Rtf.

Если у Вас какие-то специфические задачи для автоматизации работы с этим договором, дайте о них знать, постараемся помочь.

Спасибо.

Создание многостраничных отчетов с Rich-текст

Добавлено: 13 янв 2010, 12:06
fantomus
Спасибо за ответ.

Но в моем случае нет особой специфики или изменяемых данных по условиям...
Интересует принцип «макетирования» подобного рода отчетов.
Вот более простой и конкретный пример.
Отчет имеет следующую структуру:
- полторы страницы Rtf текста
- дальше таблица, которая может перейти на вторую страницу
- дальше сразу после окончания таблицы еще несколько страниц Rtf текста

Подскажите, как быть в таком случае?

Если разбивать отчет на 3 страницы – получается разрыв между таблицей и продолжением отчета.
Все разместить на одной странице не всегда получается, да и медленно работает.

Создание многостраничных отчетов с Rich-текст

Добавлено: 13 янв 2010, 12:28
fantomus
Я нашел свойство страницы "Печатать на предыдущей странице".
Не могу добиться адекватной работы.
Если на страницах нет датабэндов - страница с включеной этой опцией не формируется.
Если датабэнды есть - нужные страницы есть но на отдельных страницах и еще вставляются пустые страницы...

Создание многостраничных отчетов с Rich-текст

Добавлено: 13 янв 2010, 12:47
fantomus
На простейшем примере работает...
Буду разбираться...

Создание многостраничных отчетов с Rich-текст

Добавлено: 14 янв 2010, 05:12
fantomus
Удалось добиться приемлемого результата для отчета типа «Договор».
1. Разбиваем отчет на страницы (приблизительно)
2. На каждой странице размещаем датабэнд (обязательно) и Rich-текст (можно один) с форматированным текстом. Обращаем внимание на их размеры.
3. На первой странице размещаем заголовок и подвал страницы
4. Для каждой страницы (кроме первой) устанавливаем
Print on Previous Page = true
Print Headers and Footers from Previous Page = true
5. Для каждого датабэнда и Rich-текста устанавливаем
Can Break = true

В этом случае шаблон достаточно удобен для редактирования и отчет нигде не разрывается при наличии динамического содержимого или внесения мелких изменений.

Создание многостраничных отчетов с Rich-текст

Добавлено: 14 янв 2010, 10:45
Edward
Здравствуйте,
Я нашел свойство страницы "Печатать на предыдущей странице".
Не могу добиться адекватной работы.
Если на страницах нет датабэндов - страница с включеной этой опцией не формируется.
Если датабэнды есть - нужные страницы есть но на отдельных страницах и еще вставляются пустые страницы...
Дело в том что статическое размещение (когда бэнды не используются, а компоненты лежат прямо на странице), отличается от динамического (это когда все компоненты располагаются на бэндах).

Свойство PrintOnPreviousPage работает для динамического размещения и только с бэндами.

Moжно обойтись и без PrintOnPreviousPage если установить у страницы свойство LargeHeight в true и также свойство LargeHeightFactor позволяет контролировать, во сколько раз должна быть увеличена высота страницы. Высота страницы будет увеличена только в дизайнере и позволит разместить все бэнды с одинаковыми PageHeader и PageFooter на одной странице в шаблоне.

С разрывами страниц помогут справится свойства бэндов NewPageBefore и NewPageAfter.

Спасибо.

Создание многостраничных отчетов с Rich-текст

Добавлено: 15 янв 2010, 10:21
fantomus
Большое спасибо!

Large Height - то что надо.
Главное - не бросать в один Rich-текст весь договор, а разбить на несколько контролов.
А то прилично тормозит.

Создание многостраничных отчетов с Rich-текст

Добавлено: 15 янв 2010, 11:17
Edward
Здравствуйте,

Дайте знать, если понадобится дополнительная помощь.

Спасибо.

Создание многостраничных отчетов с Rich-текст

Добавлено: 15 янв 2010, 11:21
fantomus
Да, при загрузке в Rich-текст файла с 10 страницами генерация выполняется ОЧЕНЬ медленно.
Это можно ускорить?