0

以下は私がする必要があることです

(Condition A and Condition B) or Condition C

(partner_id = partner_id **and** user_ids = context.get(uid)) **or** userid = 1

私が試した可能性のあるドメインフィルターは次のとおりです

domain="['|',('user_ids','=',1),'&',('partner_id','=',partner_id),('user_ids','=',context.get('uid'))]"

domain="['|','&',('partner_id','=',partner_id),('user_ids','=',context.get('uid')),('user_ids','=',1)]"

何もうまくいかず、エラーは以下のとおりです

 File "D:\workspace\Techtalk\openerp\modules\loading.py", line 76, in <lambda>
   load_data = lambda *args: _load_data(cr, *args, kind='data')
 File "D:\workspace\Techtalk\openerp\modules\loading.py", line 124, in _load_data
   tools.convert_xml_import(cr, module_name, fp, idref, mode, noupdate, report)
 File "D:\workspace\Techtalk\openerp\tools\convert.py", line 941, in convert_xml_import
   doc = etree.parse(xmlfile)
 File "lxml.etree.pyx", line 2698, in lxml.etree.parse (src/lxml/lxml.etree.c:49590)
 File "parser.pxi", line 1513, in lxml.etree._parseDocument (src/lxml/lxml.etree.c:71423)
 File "parser.pxi", line 1543, in lxml.etree._parseFilelikeDocument (src/lxml/lxml.etree.c:71733)
 File "parser.pxi", line 1426, in lxml.etree._parseDocFromFilelike (src/lxml/lxml.etree.c:70648)
 File "parser.pxi", line 997, in lxml.etree._BaseParser._parseDocFromFilelike (src/lxml/lxml.etree.c:67944)
 File "parser.pxi", line 539, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:63820)
 File "parser.pxi", line 625, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:64741)
 File "parser.pxi", line 565, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:64084)
XMLSyntaxError: xmlParseEntityRef: no name, line 144, column 12

私が参照したリンクは

http://help.openerp.com/question/2170/domain-notation-using-multiple-and-nested-and/

OpenERP ver 7 より多くの条件を持つドメインフィルター

追記事項 openerp ソースで & 演算子を使用した単一ドメイン フィルターが見つかりませんでした。

何か不足していますか?よろしくお願いします。御時間ありがとうございます。

4

1 に答える 1

4

このエラー メッセージは、XML に無効なエンティティ (アンパサンド&文字のみ) が含まれていることを示しています。これは定義済みの XML エンティティであるため、 としてエスケープする必要があります&amp;

&OpenERP ソース コードで使用されているドメインがあまり見当たらない理由は、AND (&)演算子がデフォルトのものであり、ほとんどの場合、完全に省略できるためです。これは、エスケープの問題があるため便利です。それでも、OR/AND 演算子を組み合わせる場合は必要になる場合があるため、こちらのように同じドメイン構文を使用する高度なセキュリティ ルールの例を見つけることができます。

一般に、必要に応じ(A and B) or Cて、実際に次のように書くことができます。

   ['|',C,'&',A,B]

つまり、XML ファイルには以下が含まれている必要があります。

   ['|',C,'&amp;',A,B]
于 2013-10-16T09:40:21.537 に答える