私のsale_order.rmlレポートをカスタマイズするために、まだ血なまぐさいOpenOffice Writerを使用しています。
私の販売注文には、配達までの 6 つの異なるリードタイムを持つ 6 つの注文明細があります。6 つの値の最大値を表示する必要があります。
多くの試みの後、私は reduce 関数の使用を断念しました。私はこのようなものを見たことがありません。
そこで、次のようなループをカプセル化する max を使用してみようと思いました。
[[ max(repeatIn(so.order_line.delay,'d')) ]]
私の最大リード タイムは 20 です。
戻る
{'d': 20.0}
少なくとも、私が求めている値が含まれています。しかし; この結果を操作しようとすると、完全に消えてしまいます。私が試してみました:
int(re.findall(r'[0-9]+', max(repeatIn(so.order_line.delay,'d')))[0])
これは、Python ウィンドウからはうまく機能しますが、OpenERP ではまったく何も返しません。
sale_order.py ファイルから re をインポートし、sale_order.pyo に再コンパイルしました。
import time
import re
from datetime import datetime, timedelta
from report import report_sxw
class order(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context=None):
super(order, self).__init__(cr, uid, name, context=context)
self.localcontext.update({
'time': time,
'datetime': datetime,
'timedelta': timedelta,
're': re,
})
もちろん、サーバーを何度も再起動しました。私のテスト インストールは Windows 上にあります。
Python からは動作させることができますが、OpenOffice Writer からは動作させることができないため、誰かが私が間違っていることを教えてもらえますか?
ご協力いただきありがとうございます!
編集1:
フォーマット
{'d': 20.0}
pythonによれば、辞書です。まだ Python では、辞書から整数を抽出するには、次のようにすることができます。
>>> dict={'d': 20.0}
>>> print(dict['d'])
20.0
しかし、どうすればこれを OpenERP ライターに転置できますか???