2013-01-16 29 views
6

मेरा प्रश्न थोड़ा जटिल है और Iपर नया है।OpenERP में साझेदारों को बाहरी आईडी जोड़ना एक नया मॉड्यूल

मेरे पास एक बाहरी डेटाबेस और ओपनरपी है। बाहरी एक PostgreSQL नहीं है। मेरा काम यह है कि मुझे भागीदारों को दो डेटाबेस में सिंक्रनाइज़ करने की आवश्यकता है। बाहरी एक और अधिक महत्वपूर्ण है। इसका अर्थ यह है कि अगर बाहरी व्यक्ति का डेटा बदलता है तो ओपनईआरपी करता है, लेकिन यदि ओपनईआरपी का डेटा बाहरी पर कुछ भी नहीं बदलता है।

  • मैं बाहरी डेटाबेस के लिए उपयोग कर सकते हैं, और XML आरसीपी का उपयोग कर रहा acces रूप में अच्छी तरह OpenERP के लिए है।

  • मैं एक्सएमएल आरसीपी के साथ बाहरी डेटाबेस से डेटा आयात कर सकता हूं लेकिन समस्या सिंक है।

  • मैं संशोधित भागीदार को केवल INSERT नहीं कर सकता और पुराना एक
    हटा सकता हूं क्योंकि मेरे पास पुराने की पहचान करने का कोई तरीका नहीं है।

  • मुझे इसे अद्यतन करने की आवश्यकता है। लेकिन फिर मुझे एक आईडी चाहिए जो कहती है कि कौन सा है। और बाहरी आईडी।

  • मेरे ज्ञान के लिए ओपनरपी बाहरी आईडी को संभाल सकता है।

यह कैसे काम करता है? और मैं इसका उपयोग कर अपने res.partner में एक बाहरी आईडी कैसे जोड़ सकता हूं?

मुझे बताया गया कि मैं अकेले इस के लिए एक नया मॉड्यूल नहीं बना सकता, मुझे आंतरिक आईडी कार्यों का उपयोग करने की आवश्यकता है।

उत्तर

5

लघु जवाब: जिस तरह से सीएसवी आयात और निर्यात विज़ार्ड काम पर एक नजर है - एक रिकॉर्ड स्वचालित रूप से निर्यात एक बाहरी पहचानकर्ता तो आप कर सकते हैं फिर से आयात कि एक ही CSV और रिकॉर्ड के बजाय अद्यतन किया जाएगा बनाता है फिर से बनाया।

लांग जवाब:
OpenERP ir.model.data तालिका में बाह्य ID है, जो आप सेटिंग्स मेनू 1 के माध्यम से यूजर इंटरफेस में उपयोग कर सकते हैं संग्रहीत करता है। यह सरल तालिका module_name.record_identifier रूप में एक "बाहरी पहचानकर्ता" को एक जोड़ी (model,res_id) पर वास्तविक तालिका और पंक्ति को इंगित करती है।

ये बाहरी आईडी डेटाबेस-स्थानीय पंक्ति को खोजने के लिए उपयोग की जाती हैं जो किसी बाहरी स्रोत द्वारा बनाए गए रिकॉर्ड से मेल खाती है: एक मॉड्यूल (इसलिए module-आधारित नामस्थान) या एक आयातित सीएसवी फ़ाइल, आमतौर पर।

उदाहरण के लिए बाहरी पहचानकर्ता base.EUR डाटाबेस में यूरो मुद्रा रखने वाले डेटाबेस रिकॉर्ड में नक्शे, और base मॉड्यूल के स्वामित्व में है।

संस्करण 6.1 के रूप में, OpenERP स्वचालित रूप से सभी OpenERP रिकॉर्ड हैं के लिए नए बाह्य पहचानकर्ता निर्यात साइडबार निर्यात विज़ार्ड का उपयोग कर बनाता है: वे id नाम के एक CSV कॉलम में निर्यात कर रहे हैं।

और अगर इस तरह के एक id स्तंभ एक CSV फ़ाइल है कि आयात जादूगर के माध्यम से आयातित में मौजूद है, OpenERP भी एक बाहरी पहचानकर्ता यह याद रखना पैदा करेगा। और जब बाहरी पहचानकर्ता पहले से मौजूद है, तो रिकॉर्ड बनाए जाने के बजाय अद्यतन किया जाता है।

सिद्धांत रूप में, तुम सब करने की (तुम भी वास्तविक डीबी आईडी इस्तेमाल कर सकते हैं) एक अतिरिक्त id स्तंभ 2 अपने मास्टर डेटाबेस से साथ एक उचित CSV फ़ाइल का उत्पादन, और OpenERP में आयात किया गया है। जब भी आप चाहें तो इस CSV फ़ाइल के अद्यतन संस्करणों को फिर से आयात करने में सक्षम होना चाहिए।

संदर्भ:

  • आयात और निर्यात जादूगरों मूल रूप से एपीआई तरीकों export_data और import_data फोन है, तो आप अगर जरूरत XML-RPC के माध्यम से इस स्क्रिप्ट कर सकते हैं।
  • ir.model.data मॉडल बाहरी पहचानकर्ताओं को संग्रहीत करता है (ऐतिहासिक रूप से एक्सएमएल आईडी कहा जाता है क्योंकि यह मॉड्यूल डेटा फ़ाइलों में XML रिकॉर्ड्स के id फ़ील्ड से मेल खाता है)।

1 OpenERP 6.1 में यह सेटिंग> विन्यास> दृश्यों & पहचानकर्ता के नीचे स्थित है> बाहरी पहचानकर्ता, और OpenERP संस्करण 7 के अंतर्गत सेटिंग> तकनीकी> दृश्यों & पहचानकर्ता> बाहरी पहचानकर्ता में ।

2 में कोई डॉट "." चरित्र के साथ कोई भी स्ट्रिंग हो सकते हैं: यह एक विशेष __export__ मॉड्यूल नाम स्थान में संग्रहीत किया जाएगा)

+0

प्रति पंक्ति 'आईडी' कॉलम की सामग्री भी बाहरी पंक्ति आईडी हो सकती है? या वह आईडी OpenERP द्वारा सेट की गई है? – NaGeL182

0

दोनों डेटाबेस पर बाहरी आईडी संग्रहीत करने के लिए res पार्टनर तालिका में एक पूर्णांक फ़ील्ड जोड़ें। जब बाहरी सर्वर से डेटा पुनर्प्राप्त किया जाता है और आपके ओपनरप डेटाबेस में जोड़ दिया जाता है, तो बाहरी सर्वर को स्थानीय सर्वर में पुनर्विक्रेता के रिकॉर्ड में संग्रहीत करें और बाहरी सर्वर के साझेदार रिकॉर्ड में नए बनाए गए साथी रिकॉर्ड की आईडी को भी सहेजें। तो अगली बार जब बाहरी साझेदार रिकॉर्ड अपडेट किया जाता है, तो हम अपने स्थानीय सर्वर में बाहरी आईडी खोज सकते हैं और उस रिकॉर्ड को अपडेट कर सकते हैं। कृपया openerp मॉड्यूल base_synchronization की जांच करें और कोड पढ़ें, जो आपके लिए सहायक होगा।

+0

लेकिन एक क्षेत्र को जोड़ने के कोई एडऑन बनाने का मतलब है, यह नहीं है? इसके अलावा मैं 7.0 में कोई base_synchronization नहीं ढूंढ सकता ... – NaGeL182

+0

कभी नहीं। ऊपर से नए आदेश: मुझे एक ओपनईआरपी मॉड्यूल को क्रेट करने की आवश्यकता है जो सिंक्रो से संबंधित है। फिर भी मदद के लिए धन्यवाद। – NaGeL182

+1

@ एनोमा: डेटाबेस रिकॉर्ड्स के लिए बाहरी पहचानकर्ताओं का ट्रैक रखना ओपनरपी फ्रेमवर्क की एक अंतर्निहित सुविधा है, इसके लिए अतिरिक्त कॉलम या मॉड्यूल की आवश्यकता नहीं है। यह उदाहरण के लिए मॉड्यूल डेटा या आयातित/निर्यातित CSV फ़ाइलों के लिए बॉक्स के बाहर काम करता है। – odony

3

'आईडी' स्तंभ के प्रति पंक्ति सामग्री भी एक हो सकता है बाहरी पंक्ति आईडी? या वह आईडी OpenERP द्वारा सेट की गई है?

आईडी ओपनईआरपी द्वारा सेट की गई है यदि यह मौजूद नहीं है, अन्यथा यह आपके द्वारा रखी गई बाहरी पंक्ति आईडी का उपयोग करता है।

मैं में 7,0

ir.model.data एक ir.model.data नहीं दिख रहा है संस्करण 7.0 पर है - आप इसके लिए कैसे खोज कर रहे थे?

और न ही साइडबार निर्यात विज़ार्ड।

संस्करण 7 पर, अब आपको निर्यात/आयात करने में सक्षम होना चाहिए।

http://forum.openerp.com/forum/topic35830.html

+0

कि कमाल है! अगर मैं सिर्फ CSV के साथ आयात मॉड्यूल का उपयोग करता हूं और इसे स्वचालित करता हूं तो मैं दो अलग-अलग डेटाबेस सिंक्रो कर सकता हूं! धन्यवाद! – NaGeL182

+0

मुझे अंततः ir_model_data मिला, धन्यवाद। –