dictionnaire de séquence de mise à jour de l'élément de #0 a pour longueur 3; 2 est requis
Je veux ajouter des lignes à l'objet account.bank.statement.line
à travers un autre objet Mais j'obtiens l'erreur suivante:
"dictionnaire de séquence de mise à jour de l'élément de #0 a pour longueur 3; 2 est requis"
Voici mon code:
def action_account_line_create(self, cr, uid, ids):
res = False
cash_id = self.pool.get('account.bank.statement.line')
for exp in self.browse(cr, uid, ids):
company_id = exp.company_id.id
#statement_id = exp.statement_id.id
lines = []
for l in exp.line_ids:
lines.append((0, 0, {
'name': l.name,
'date': l.date,
'amount': l.amount,
'type': l.type,
'statement_id': exp.statement_id.id,
'account_id': l.account_id.id,
'account_analytic_id': l.analytic_account_id.id,
'ref': l.ref,
'note': l.note,
'company_id': l.company_id.id
}))
inv_id = cash_id.create(cr, uid, lines,context=None)
res = inv_id
return res
Je l'ai changé sur, mais je suis tombé sur cette erreur:
File "C:\Program Files (x86)\OpenERP 6.1-20121029-003136\Server\server\.\openerp\workflow\wkf_expr.py", line 68, in execute
File "C:\Program Files (x86)\OpenERP 6.1-20121029-003136\Server\server\.\openerp\workflow\wkf_expr.py", line 58, in _eval_expr
File "C:\Program Files (x86)\OpenERP 6.1-20121029-003136\Server\server\.\openerp\tools\safe_eval.py", line 241, in safe_eval
File "C:\Program Files (x86)\OpenERP 6.1-20121029-003136\Server\server\.\openerp\tools\safe_eval.py", line 108, in test_expr
File "<string>", line 0
^
SyntaxError: unexpected EOF while parsing
Code:
def action_account_line_create(self, cr, uid, ids, context=None):
res = False
cash_id = self.pool.get('account.bank.statement.line')
for exp in self.browse(cr, uid, ids):
company_id = exp.company_id.id
lines = []
for l in exp.line_ids:
res = cash_id.create ( cr, uid, {
'name': l.name,
'date': l.date,
'amount': l.amount,
'type': l.type,
'statement_id': exp.statement_id.id,
'account_id': l.account_id.id,
'account_analytic_id': l.analytic_account_id.id,
'ref': l.ref,
'note': l.note,
'company_id': l.company_id.id
}, context=None)
return res
- Quel est votre objet/classe? Voulez-vous créer une ligne directement ou vous souhaitez ajouter ligne one2many dans votre objet? Ici, le problème est que vous ne pouvez pas vous passer de la liste à créer(). Vous devez passer dictionnaire.
- merci pour votre réponse, j'ai changé le hr_expense_expense ajouter ligne directement sur la table account_bank_statement_line après l'etat: "confirmer"
Vous devez vous connecter pour publier un commentaire.
Cette erreur parce que vous tentez de mettre à jour
dict
objet en utilisant une mauvaise séquence (list
outuple
) de la structure.cash_id.create(cr, uid, lines,context=None)
d'essayer de convertirlines
dans dict objet:Supprimer le deuxième zéro à partir de ce n-uplet de bien de le convertir en un dict objet.
Pour tester votre auto, essayez ceci en python shell:
Je recevais ce message d'erreur lorsque j'ai été mise à jour le dictionnaire avec le mauvais syntaxe:
Essayer avec ces:
au lieu de
L'un des moyens rapides pour créer un dict de l'égalité de longueur n-uplets: