5

オブジェクトのフィールドを計算して、新しいフィールドに保存しようとしています。fileds.functionの簡単な使用例から始めていますが、openerpにログインしようとすると、ユーザーまたはパスワードが正しくないというエラーが発生します。

私のクラスでは、フィールドを追加します。

      'a' : fields.integer('A'),
      'b' : fields.integer('B'),
      'total' : fields.function(fnct, method=True, string='Tot',type='integer'),

関数の定義:

       def fnct(self, cr, uid, ids, fields, arg, context):

          x = {}

          for record in self.browse(cr, uid, ids):

              x[record.id] = record.a + record.b

          return x

どうか、誰か助けてもらえますか?ありがとう

4

3 に答える 3

4

OpenERP Login での Function Filed の接続はありません。

そのため、間違ったユーザー ID またはパスワードを提供している可能性があります。

関数フィールドの主な用途は次のとおりです。

他のフィールドに基づいてフィールドの値を自動計算します。

つまり、合計 = フィールド 1 + フィールド 2 + フィールド 3

例: 'total' : fields.function(get_total, method=True, string='Total',type='integer'),

関数の定義方法:

def get_total(self, cr, uid, ids, fields, arg, context):

    x={}

    for record in self.browse(cr, uid, ids):

        x[record.id]= record.field1 + record.field2 + record.field3

    return x
于 2012-05-10T04:51:32.530 に答える
2

その問題を修正するために、何らかの意図を確認し、関数の定義は fields の宣言の前にある必要があります。

于 2012-05-10T12:03:45.943 に答える
0
def fnct(self, cr, uid, ids, fields, arg, context):

    x = {}

    for record in self.browse(cr, uid, ids):

    x[record.id] = record.a - record.b

if x[record.id]<0:

    raise osv.except_osv(("Warning"),("You Cant Subtract %s ")%(record.a - record.b))

else:


return x

    "a":fields.integer('A'),
    "b":fields.integer('B'),


 "total":fields.function(fnct, method=True, string='Total',type='integer'),
于 2015-04-06T07:03:30.117 に答える