Я хочу добавить боковую панель или заголовок к некоторым своим отчетам в OpenERP. руководство пользователя (PDF) ReportLab описывает теги <frame>
и <nextFrame>
. Полностью ли они поддерживаются в OpenERP? Кое-что у меня получилось, но один кадр просто перетекает в другой, поэтому отчет, занимающий более одной страницы, заканчивается перекрывающимся текстом.
Поддерживает ли OpenERP-версия RML ReportLab фреймы?
Ответы (1)
После кучи копаний в коде у меня есть фреймы, работающие в OpenERP 5.0. Ключевой особенностью, которую мне нужно было найти, был атрибут last="true"
для определения фрейма. Это означает, что фрейм должен считаться последним фреймом на странице. Любой текст, выходящий за его пределы, переместится в первый фрейм новой страницы, а не в следующий фрейм на текущей странице. В итоге я установил его на всех своих кадрах. Чтобы увидеть пример с фреймами, вот несколько фрагментов из нашей балансовый отчет.
<template
pageSize="(8.5in,11in)"
title="Test"
author="Zaber Technologies Inc."
allowSplitting="20">
<pageTemplate id="first">
<frame
id="first"
x1="1.3cm"
y1="0.2cm"
height="27.5cm"
width="14.0cm"
last="true"/>
<frame
id="upper_right"
x1="14.1cm"
y1="21.53cm"
height="5.2cm"
width="5.0cm"
last="true"/>
</pageTemplate>
</template>
В этом разделе указывается макет страницы. По умолчанию текст будет начинаться с первого фрейма в списке. y1
– расстояние от нижней части страницы. Вы можете указать шаблон страницы в двух местах: в самом отчете или в заголовках, определенных в конфигурации компании. Если вы используете заголовок, шаблон первой страницы отчета будет заменен шаблоном страницы заголовка, поэтому шаблон отчета может быть просто тегом pageTemplate
с пустым тегом frame
в нем. Заголовки компании могут использовать только один шаблон страницы, но каждый отчет может определять более одного шаблона страницы.
Если вы хотите поместить что-то в один из других фреймов, используйте setNextFrame
и nextFrame
.
<setNextFrame name="upper_right"/>
<nextFrame/>
Вам не обязательно использовать фреймы по порядку. Вы можете переключиться на более ранний кадр в списке, и он не начнет новую страницу.
Дополнительные сведения об изменении заголовка см. в документации или вопрос о определяемых пользователем заголовках.