Windows下安装UNO,配置AEROO_REPORT (Openoffice4已经升级为Python2.7.5版)
-
下面的就没有翻译了,报歉。
Retrieving Data (取出数据)
When it is more or less clear, how to place a container, you would want to know, how to retrieve real data from objects. As it is always better to learn by example, we will use Partners model as referenced data in examples. This data model is almost always present in any database, and is populated with data, when demo setup has been created.
When creating report on any model, it is common to use default parser. Default parser provides several predefined variables:
objects – hold the data you create report on. It is a list of objects, so if you want to reference on all of the data selected, you have to place a loop on this variable;
o – if you know that only one object is selected, you may use this variable directly, without creating a loop;
data – data that comes from the wizard;
user – user which requests the report;
time – standard Python library for time manipulations;
company - ;
user - ;
report_xml - ;
user_lang - ;
logo - ;
For example, if you want to report name of the first partner you have selected, code would look:
<objects[0].name>
Here we reference predefined variable objects, use list index “0” (for information reference Python documentation), then take data from name field. Those who are not familiar with OpenObject ORM, for more information, take a look at “Administration/Customization/Database Structure/Objects” OpenERP objects and their relation listing.
You can reach any data from OpenObject ORM, just drill down step by step to the data you require.
For example, let's place currency of the company. The directive would look:
<user.company_id.currency_id.code>
Here we reference predefined variable user, take field company_id, which holds reference to the company, then currency_id for the default currency. Finally take field code which is of type text, so it can be directly reported on the template. -
Conditional Sections (条件选择篇)
Most generic directive for using conditional sections is “if”. For marking end of the conditional section use “/if”. Remember, this is paired directive, consisting of two containers and section between them.
If we want to print conditional text if the the partner is Customer, the directive would look:
<if test="objects[0].customer">
This text is being printed when partner is a customer.
</if>
Here we can see paired directive, so you have to place two separate containers, one for the opening part of directive (if test=”objects[0].customer”), the other for closing part (/if). All that is between them will be placed on final document, when check-box named “Customer” on Partner object is marked.
Similar to if-elif-else conditional section like it is in most programming languages, there is slightly complicated structure used instead. Consisting of “choose” paired directive, at least one “when” and one “otherwise” paired directives, it is possible to create switch like constructions.
Following example shows how to create such conditional section:
<choose>
<when test="objects[0].customer">
This text is being printed when partner is a customer.
</when>
<when test="objects[0].supplier">
This text is being printed when partner is a supplier.
</when>
<otherwise>
This text is being printed in all the other occasions.
</otherwise>
</choose> -
Loop Sections (循环篇)
Now when we want to report on several objects, we have create loop for each object in the list. For this task paired “for” directive is being used. Paired – means, one container for opening, another container for closing.
Remember example from Conditional Sections chapter. We will modify it to report all the customer names, from all selected partners.
<for each="one_partner in objects">
<if test="one_partner.customer">
<one_partner.name>
</if>
</for>
Please notice paired for directive with embedded conditional, if directive inside. Variable one_partner has been introduced, to hold temporary reference to each partner in objects list. -
Extra Functions (附加的功能)
There are set of embedded functions defined for user convenience. These represent generic functionality that is commonly used for creating reports. Listing of these functions is not to be considered as complete, we may introduce more functions over time. Do not hesitate to ask, if you want some function to appear among them. All requests will be treated as a wish-list, and if the requested function will appear as commonly required item we will gladly include it in the embedded function list. You may place your motivated request on launchpad project bugs/blueprints sections. You can use our dedicated forum, if you are not familiar with launchpad. Reports with attached source code will receive somehow better attention, so may be implemented more sooner.
You may vote for functionality by donating funds to this project and naming the functionality you would like to be implemented.
For better reference we decided to split listing of functions by domains.
Language related functions
setLang - sets default language on template;
gettext - gets translation for a given text;
_ - same as gettext;
getLang - gets current effective language of template;
currency_to_text - converts floating point currency to it's written form;
Mathematical functions
sum_field - returns sum of named field from all objects in a list;
sumif - returns sum of named field from conditionally selected objects in a list;
Parameters:
list_of_objects – list of objects that have field to sum;
field_name – name of the numeric field to sum, expressed as string;
condition – condition on which objects should be selected, expressed as string;
Return Values:
-
Description
Returns sum of named field from conditionally selected objects in a list.
Statistical functions
average - returns the average (arithmetic mean) of fields from all objects in a list;
count - returns total count of objects in a list;
count_blank - returns total count of objects in a list, where named field is empty;
countif - Returns count of objects from a list, where fields meet condition;
large - returns k-th largest numeric value in a list of objects;
max_field - returns largest numeric value in a list of objects;
min_field - returns smallest numeric value in a list of objects;
small - returns k-th smallest numeric value in a list of objects;
Time related functions
dec_to_time - converts time to hh:min representation;
time - time access and conversions;
Barcode related functions
barcode - converts code to barcode image;
Helper functions
asarray - returns named field from all objects as a list;
asimage - converts binary data to image;
bool_as_icon - translates boolean value to text string;
browse - returns list of objects;
chunks - splits list of objects into chunks;
debugit - helps debugging templates;
epl2_gw - insert EPL v2 'gw' command (use on Zebra & compatible printers);
field_accuracy - returns accuracy for the OpenERP object's field;
field_size - returns maximum size for named field;
get_attachments - returns attachment(s) from an object;
get_label - returns human readable name for the field;
get_log - ;
get_name - returns string representation for object;
get_selection_item - returns human readable name for selection field's code;
html_embed_image - embeds image on html templates
html_escape - escapes HTML unsafe characters (New in v1.1.)
http_builduri - builds string of URI attributes from dictionary(ies) (New in v1.1.)
http_prettyuri - converts string URI safe format (New in v1.1.)
include_document - ;
insert-subreport - inserts Open ERP sub reports;
itemize - Appends the given array with number of usefull attributes (New in v1.1.)
safe - tries to safely evaluate expression;
search - do a search returning list of OpenERP objects;
search_ids - do a search returning only list of OpenERP object ids; -
http://www.alistek.com/en/products-catalogue/4-product_single/222-aeroo-reports-for-openerp-version-7x.html
<pay with a tweet>
点击一下,帮开发做做广告就可以下载了。 可惜tweet不能直接访问,这个自己想办法吧。 -
谢谢楼主哦。
-
超赞的分享,收藏!
-nologo -nofirststartwizard -headless -norestore -invisible -accept=socket,host=localhost,port=8100,tcpNoDelay=1;urp;
这个启动参数看不懂,记录一下:<br / http://wiki.openoffice.org/wiki/Framework/Article/Command_Line_Arguments br / http://wiki.openoffice.org/wiki/Documentation/DevGuide/ProUNO/Opening_a_Connection br / http://wiki.openoffice.org/wiki/Uno/Remote/Specifications/Uno_Remote_Protocol br /> -
请教楼主:按楼主的步骤过了一遍,当然我的是openoffice4的,步骤有一些变通。安装report_aeroo和reprot_aeroo_sample两个模块皆无问题。但是安装reprot_aeroo_direct_print和openoffice Help Addons时报错:[b]Warning! Unmet python dependencies!No module named cups[/b];
谢谢