This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
it:openerp:general [2025/10/05 07:31] 47.128.119.51 old revision restored (2025/09/03 14:05) |
it:openerp:general [2025/10/09 15:30] (current) 47.128.112.132 old revision restored (2025/09/25 02:48) |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== OpenERP ====== | ====== OpenERP ====== | ||
- | ====== Standardmäßig extended view für admin setzen | + | |
+ | ====== OpenERP Entwicklung ====== | ||
+ | |||
+ | ===== Standardmäßig extended view für admin setzen ===== | ||
<code xml> | <code xml> | ||
<!-- Set Extended View for Administrator --> | <!-- Set Extended View for Administrator --> | ||
Line 9: | Line 12: | ||
</ | </ | ||
- | ====== Felder anhand von Status sperren | + | ===== Felder anhand von Status sperren ===== |
<code python> | <code python> | ||
' | ' | ||
Line 15: | Line 18: | ||
| | ||
| | ||
- | ====== Spalten Create_Date und Write_Date einblenden: | + | ===== Spalten Create_Date und Write_Date einblenden: ===== |
<code python> | <code python> | ||
_columns = { | _columns = { | ||
Line 23: | Line 26: | ||
</ | </ | ||
- | ====== Encoding | + | ===== Encoding ===== |
Unbedingt alle Python Dateien mit UTF-8 explizit kodieren, um ASCII-Konvertierungsfehler zu vermeiden. | Unbedingt alle Python Dateien mit UTF-8 explizit kodieren, um ASCII-Konvertierungsfehler zu vermeiden. | ||
<code python> | <code python> | ||
Line 29: | Line 32: | ||
</ | </ | ||
- | ====== Domain Filter auf one2many Spalte | + | ===== Domain Filter auf one2many Spalte ===== |
[[http:// | [[http:// | ||
- | ====== Active Spalte | + | ===== Active Spalte ===== |
Legt man eine Bool-Spalte namens " | Legt man eine Bool-Spalte namens " | ||
- | ====== Message an ui ====== | + | ===== Message an ui ===== |
Line 46: | Line 49: | ||
</ | </ | ||
- | ===== Übersetzung der message | + | === Übersetzung der message === |
In der .po Datei | In der .po Datei | ||
< | < | ||
Line 59: | Line 62: | ||
"die Produktmengeneinheit (ME) des Einkaufs befindet" | "die Produktmengeneinheit (ME) des Einkaufs befindet" | ||
</ | </ | ||
- | + | ===== einen String übersetzen ===== | |
- | ====== einen String übersetzen | + | |
<code python> | <code python> | ||
from tools.translate import _ | from tools.translate import _ | ||
Line 68: | Line 70: | ||
</ | </ | ||
- | ====== summmen von float fields im tree ==== | + | ===== summmen von float fields im tree ==== |
<code xml> | <code xml> | ||
<field name=" | <field name=" | ||
</ | </ | ||
- | ====== ein browse-objekt per xml-id holen ====== | + | ===== ein browse-objekt per xml-id holen ===== |
<code python> | <code python> | ||
print pool.get(" | print pool.get(" | ||
</ | </ | ||
- | ====== kontextsensitive Suchformulare | + | ===== kontextsensitive Suchformulare ===== |
< | < | ||
Line 103: | Line 105: | ||
return{' | return{' | ||
</ | </ | ||
- | + | ==== Context => auf übergeordnete Felder zugreifen === | |
- | ====== Context => auf übergeordnete Felder zugreifen | + | |
<code xml> | <code xml> | ||
<field name=" | <field name=" | ||
Line 122: | Line 123: | ||
</ | </ | ||
- | ====== Spezifischen View in Field durch context verwenden | + | ===== Spezifischen View in Field durch context verwenden ===== |
<code xml> | <code xml> | ||
#zur Verfügung stehen search_view_ref, | #zur Verfügung stehen search_view_ref, | ||
Line 128: | Line 129: | ||
</ | </ | ||
- | ====== Filter durch Context setzen | + | ===== Filter durch Context setzen ===== |
<code xml> | <code xml> | ||
Line 138: | Line 139: | ||
# 1 = filter an, 0 = filter aus | # 1 = filter an, 0 = filter aus | ||
</ | </ | ||
- | + | ===== SQL Constraints ===== | |
- | ====== SQL Constraints | + | |
Im Modul res.groups habe folgende Anweisung entdeckt: | Im Modul res.groups habe folgende Anweisung entdeckt: | ||
Line 151: | Line 151: | ||
und nicht zwei. | und nicht zwei. | ||
- | ====== xml_id in id umwandeln | + | ===== xml_id in id umwandeln ===== |
<code xml> | <code xml> | ||
<record id=" | <record id=" | ||
Line 171: | Line 171: | ||
- | ====== domain in action window mit xml_id | + | ===== domain in action window mit xml_id ===== |
<code xml> | <code xml> | ||
<field name=" | <field name=" | ||
</ | </ | ||
- | ====== lambda Ausdrücke in defaults columns | + | ===== lambda Ausdrücke in defaults columns ===== |
<code python> | <code python> | ||
Line 198: | Line 198: | ||
} | } | ||
</ | </ | ||
- | + | ===== defaults überschreiben ===== | |
- | ====== defaults überschreiben | + | |
Hiermit wird der default Wert des Feldes date überschrieben. | Hiermit wird der default Wert des Feldes date überschrieben. | ||
<code xml> | <code xml> | ||
<field name=" | <field name=" | ||
</ | </ | ||
- | + | ==== Praktische Parameter der openerp_server.py ==== | |
- | ====== Praktische Parameter der openerp_server.py | + | |
Um nur ein spezifisches Modul beim start neu zu laden: | Um nur ein spezifisches Modul beim start neu zu laden: | ||
Line 211: | Line 209: | ||
| | ||
----------------- | ----------------- | ||
- | + | ===== Felder: one2many - was wird angezeigt ===== | |
- | ====== Felder: one2many - was wird angezeigt | + | |
Wenn das Feld related auf ein one2many Feld zeigt, dann wird dort das erste Element verwendet | Wenn das Feld related auf ein one2many Feld zeigt, dann wird dort das erste Element verwendet | ||
unter Beachtund der Sortierung (_order). | unter Beachtund der Sortierung (_order). | ||
- | ====== Erweitern von Standard Selection Fields | + | ===== Erweitern von Standard Selection Fields ===== |
Beispielsweise gibt es bei res.partner ein Auswahlfeld für den Adresstyp. Um diesen | Beispielsweise gibt es bei res.partner ein Auswahlfeld für den Adresstyp. Um diesen | ||
Line 237: | Line 234: | ||
</ | </ | ||
- | ====== Feldattribute in Abhängigkeit vom Status setzen, z.B. readonly nur bei Draft ====== | + | ===== Feldattribute in Abhängigkeit vom Status setzen, z.B. readonly nur bei Draft ===== |
<code python> | <code python> | ||
Line 247: | Line 244: | ||
<group attrs=" | <group attrs=" | ||
</ | </ | ||
- | + | ==== Many2Many Felder Füllen ==== | |
- | ====== Many2Many Felder Füllen | + | |
< | < | ||
Note: The type of field values to pass in vals for relationship fields is specific: | Note: The type of field values to pass in vals for relationship fields is specific: | ||
Line 320: | Line 316: | ||
- | ====== Aus einem Tree oder From View einen anderen View per Python-Code öffnen | + | ===== Aus einem Tree oder From View einen anderen View per Python-Code öffnen ===== |
Line 331: | Line 327: | ||
return { | return { | ||
' | ' | ||
- | ' | ||
' | ' | ||
- | ' | + | ' |
' | ' | ||
- | ' | + | ' |
' | ' | ||
' | ' | ||
' | ' | ||
- | #weitere parameter: | ||
- | ' | ||
- | ' | ||
} | } | ||
} | } | ||
Line 348: | Line 340: | ||
</ | </ | ||
- | <note tip> | + | ===== Old-Style Wizards ===== |
- | + | ||
- | <note warning> | + | |
- | + | ||
- | ====== Old-Style Wizards | + | |
<code xml> | <code xml> | ||
<!-- wizard definieren --> | <!-- wizard definieren --> | ||
Line 360: | Line 348: | ||
<button string=" | <button string=" | ||
</ | </ | ||
- | ====== Message an UI ====== | + | ===== Message an UI ===== |
<code python> | <code python> | ||
raise osv.osv.except_osv(" | raise osv.osv.except_osv(" | ||
</ | </ | ||
- | ====== Events in Feldern | + | ===== Events in Feldern ===== |
Felder in Views haben ein " | Felder in Views haben ein " | ||
[[http:// | [[http:// | ||
Line 385: | Line 373: | ||
- | ====== Objekt-ID per XML-ID holen ====== | + | ===== Objekt-ID per XML-ID holen ===== |
<code python> | <code python> | ||
xml_id = " | xml_id = " | ||
try: | try: | ||
- | _, id = self.pool.get(' | + | _, id = self.pool.get(' |
except: | except: | ||
id = None | id = None | ||
Line 395: | Line 383: | ||
@Miki: wo ist die get_object Methode??? | @Miki: wo ist die get_object Methode??? | ||
- | ====== menue.xml | + | ===== menue.xml ===== |
<code xml> | <code xml> | ||
< | < | ||
Line 424: | Line 412: | ||
</ | </ | ||
- | ====== view.xml | + | ===== view.xml ===== |
<code xml> | <code xml> | ||
< | < | ||
Line 502: | Line 490: | ||
</ | </ | ||
- | ====== Action-Button und Methode aus Model ====== | + | ===== Action-Button und Methode aus Model ===== |
**Methode in Model**: | **Methode in Model**: | ||
Line 508: | Line 496: | ||
def assign_task_to_me(self, | def assign_task_to_me(self, | ||
- | ======= | + | ====== |
| | ||
</ | </ | ||
Line 516: | Line 504: | ||
<button name=" | <button name=" | ||
</ | </ | ||
- | ====== Kontextbezogenes Editieren | + | ===== Kontextbezogenes Editieren ===== |
<code xml> | <code xml> | ||
<field name=" | <field name=" | ||
</ | </ | ||
- | ====== SQL Constraints in Python-Klassen | + | ===== SQL Constraints in Python-Klassen ===== |
<code python> | <code python> | ||
| | ||
Line 532: | Line 520: | ||
</ | </ | ||
- | ====== Tree Farben | + | ===== Tree Farben ===== |
<code xml> | <code xml> | ||
<tree colors=" | <tree colors=" |