2013-01-16 15 views
6

Câu hỏi của tôi hơi phức tạp và tôi mới đến OpenERP.Thêm Id bên ngoài vào Đối tác trong OpenERP với một mô-đun mới

Tôi có cơ sở dữ liệu bên ngoài và OpenERP. cái bên ngoài không phải là PostgreSQL. Công việc của tôi là tôi cần phải đồng bộ hóa các đối tác trong hai cơ sở dữ liệu. Bên ngoài là quan trọng hơn. Điều này có nghĩa là nếu dữ liệu của bên ngoài thay đổi thì OpenERP cũng vậy, nhưng nếu dữ liệu của OpenERP thay đổi thì không có gì thay đổi.

  • tôi có thể truy cập vào cơ sở dữ liệu bên ngoài, và sử dụng RCP XML Tôi có acces để OpenERP là tốt.

  • Tôi có thể nhập dữ liệu từ cơ sở dữ liệu bên ngoài chỉ bằng RCP XML nhưng sự cố là đồng bộ hóa.

  • Tôi không thể chỉ INSERT đối tác đã sửa đổi và xóa đối tượng cũ
    vì tôi không có cách nào để xác định hình ảnh cũ.

  • Tôi cần CẬP NHẬT nó. Nhưng sau đó tôi cần một id mà nói đó là cái nào. và ID bên ngoài.

  • Với kiến ​​thức của tôi, OpenERP có thể xử lý các ID bên ngoài.

Tính năng này hoạt động như thế nào? và làm thế nào tôi có thể thêm một ID bên ngoài vào res.partner của tôi bằng cách sử dụng này?

Tôi được thông báo rằng tôi không thể tạo mô-đun mới cho riêng mình, tôi cần sử dụng ID nội bộ hoạt động.

Trả lời

5

Câu trả lời ngắn: có một cái nhìn tại đường CSV Import và Thuật sĩ Export wizard công việc - xuất khẩu kỷ lục tự động tạo một nhận dạng bên ngoài vì vậy bạn có thể tái nhập khẩu cùng CSV và hồ sơ sẽ được cập nhật hơn được tạo lại.

Long trả lời:
OpenERP lưu trữ ID bên ngoài trong bảng ir.model.data, mà bạn có thể truy cập vào giao diện người dùng thông qua Cài đặt đơn 1. Bảng đơn giản này ánh xạ một "Định danh bên ngoài" dưới dạng module_name.record_identifier đến một cặp (model,res_id) trỏ đến bảng và hàng thực tế.

Các ID bên ngoài này được sử dụng để tìm hàng cơ sở dữ liệu tương ứng với bản ghi được tạo bởi một số nguồn bên ngoài: một mô-đun (do đó không gian tên dựa trên module) hoặc tệp CSV được nhập.

Ví dụ: số nhận dạng bên ngoài base.EUR ánh xạ tới bản ghi cơ sở dữ liệu chứa tiền EUR trong cơ sở dữ liệu và được sở hữu bởi mô-đun base.

Tính đến phiên bản 6.1, OpenERP tự động tạo định danh bên ngoài mới cho tất cả các hồ sơ OpenERP có xuất khẩu sử dụng thanh bên Xuất thuật sĩ: họ đang xuất khẩu trong một cột CSV tên id.

Và nếu một cột id như hiện diện trong một tập tin CSV mà là nhập khẩu qua thuật sĩ Import, OpenERP cũng sẽ tạo ra một định danh bên ngoài để ghi nhớ nó. Và khi số nhận dạng bên ngoài đã tồn tại, bản ghi được cập nhật thay vì được tạo.

Về lý thuyết, tất cả các bạn phải làm là tạo ra một tập tin CSV thích hợp với một phụ id cột 2 từ cơ sở dữ liệu tổng thể của bạn (thậm chí bạn có thể sử dụng thực tế DB ID), và nhập nó trong OpenERP. Sau đó, bạn có thể nhập lại các phiên bản cập nhật của tệp CSV này bất cứ khi nào bạn muốn.

Tài liệu tham khảo:

  • Các nhậpXuất trình thuật sĩ cơ bản gọi các phương pháp API export_dataimport_data, vì vậy bạn có thể kịch bản này qua XML-RPC nếu cần thiết.
  • Mô hình ir.model.data lưu trữ số nhận dạng bên ngoài (trước đây được gọi là ID XML vì nó tương ứng với trường id của bản ghi XML trong tệp dữ liệu mô-đun).

1 Trong OpenERP 6.1 nó nằm dưới Settings> Configuration> Sequences & định danh> nhận dạng bên ngoài, và trong OpenERP phiên bản 7 dưới Cài đặt> Kỹ thuật> Sequences & định danh> nhận dạng bên ngoài .

2 thể được bất kỳ chuỗi không có dấu chấm "." nhân vật trong nó: nó sẽ được lưu trữ trong một không gian tên __export__ mô-đun đặc biệt)

+0

Nội dung của cột 'id' trên mỗi hàng có thể là một id hàng bên ngoài? hoặc id đó được thiết lập bởi OpenERP? – NaGeL182

0

Thêm trường số nguyên trong bảng đối tác res để lưu trữ id bên ngoài trên cả hai cơ sở dữ liệu. Khi dữ liệu được lấy từ máy chủ bên ngoài và thêm vào cơ sở dữ liệu mở của bạn, lưu trữ id bên ngoài trong hồ sơ của đối tác res trong máy chủ cục bộ và cũng lưu id của bản ghi đối tác mới được tạo trong bản ghi đối tác của máy chủ bên ngoài. Vì vậy, lần sau khi bản ghi đối tác bên ngoài được cập nhật, chúng tôi có thể tìm kiếm id bên ngoài trong máy chủ cục bộ của chúng tôi và cập nhật bản ghi đó. Vui lòng kiểm tra module base_synchronization của openerp và đọc các mã, sẽ hữu ích cho bạn.

+0

nhưng thêm một lĩnh vực có nghĩa là làm cho một addon, đúng không? Ngoài ra tôi không thể tìm thấy bất kỳ base_synchronization trong 7.0 ... – NaGeL182

+0

Nevermind. Các đơn đặt hàng mới từ trên cao: tôi cần phải chuẩn bị một mô-đun OpenERP liên quan đến tính năng đồng bộ hóa. cảm ơn yoou cho sự giúp đỡ dù sao. – NaGeL182

+1

@Anoma: theo dõi các số nhận dạng bên ngoài cho các bản ghi cơ sở dữ liệu là một tính năng tích hợp của khung công tác OpenERP, không cần thêm cột hoặc mô-đun cho việc này. Nó hoạt động ngoài hộp cho dữ liệu mô-đun hoặc các tệp CSV được nhập/xuất chẳng hạn. – odony

3

nội dung cột của 'id' mỗi hàng có thể còn một id hàng bên ngoài? hoặc id đó được thiết lập bởi OpenERP?

Id được thiết lập bởi OpenERP nếu không có, nếu không nó sẽ sử dụng bất kỳ id hàng bên ngoài nào bạn đặt trong đó.

Tôi không thấy một ir.model.data trong 7,0

ir.model.data luôn luôn ở đó phiên bản 7.0 - làm thế nào được bạn tìm kiếm nó?

cũng không phải thanh bên Trình hướng dẫn xuất.

Tại phiên bản 7, bây giờ bạn cần phải bật xuất/nhập.

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

+0

thật tuyệt vời! hơn nếu tôi chỉ sử dụng các mô-đun nhập khẩu với CSV và tự động hóa nó tôi có thể syncro hai cơ sở dữ liệu khác nhau! Cảm ơn bạn! – NaGeL182

+0

Cuối cùng tôi đã tìm thấy ir_model_data, cảm ơn. –

Các vấn đề liên quan