Поддерживает ли OpenERP-версия RML ReportLab фреймы?

Я хочу добавить боковую панель или заголовок к некоторым своим отчетам в OpenERP. руководство пользователя (PDF) ReportLab описывает теги <frame> и <nextFrame>. Полностью ли они поддерживаются в OpenERP? Кое-что у меня получилось, но один кадр просто перетекает в другой, поэтому отчет, занимающий более одной страницы, заканчивается перекрывающимся текстом.


person Don Kirkby    schedule 02.10.2012    source источник


Ответы (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/>

Вам не обязательно использовать фреймы по порядку. Вы можете переключиться на более ранний кадр в списке, и он не начнет новую страницу.

Дополнительные сведения об изменении заголовка см. в документации или вопрос о определяемых пользователем заголовках.

person Don Kirkby    schedule 02.10.2012