У меня есть сценарий, в котором мне нужно прочитать / получить элементы из openerp / odoo по внешнему идентификатору, используя xml-rpc. Я использую технологию php.
Вот мой код функции чтения / извлечения данных из odoo:
public function read($ids, $fields, $model_name, $context=array() ) {
$client = new xmlrpc_client($this->server."object");
// ['execute','userid','password','module.name',{values....}]
$client->return_type = 'phpvals';
$id_val = array();
$count = 0;
foreach ($ids as $id)
$id_val[$count++] = new xmlrpcval($id, "int");
$fields_val = array();
$count = 0;
foreach ($fields as $field)
$fields_val[$count++] = new xmlrpcval($field, "string");
$msg = new xmlrpcmsg('execute');
$msg->addParam(new xmlrpcval($this->database, "string")); //* database name */
$msg->addParam(new xmlrpcval($this->uid, "int")); /* useid */
$msg->addParam(new xmlrpcval($this->password, "string"));/** password */
$msg->addParam(new xmlrpcval($model_name, "string"));/** model name where operation will be held * */
$msg->addParam(new xmlrpcval("read", "string"));/** method which u like to execute */
$msg->addParam(new xmlrpcval($id_val, "array"));/** ids of record which to be updated...This array must be xmlrpcval array */
$msg->addParam(new xmlrpcval($fields_val, "array"));/** parameters of the methods with values....*/
//values added
$ctx = array();
foreach($context as $k=>$v){
$ctx[$k] = new xmlrpcval( xmlrpc_get_type($v) );
}
//end
if(!empty($context)){
// $msg->addParam(new xmlrpcval(array("lang" => new xmlrpcval("nl_NL", "string"),'pricelist'=>new xmlrpcval($context['pricelist'], xmlrpc_get_type($context['pricelist']) )) , "struct"));
}
$resp = $client->send($msg);
print_r($resp);
if ($resp->faultCode())
return -1; /* if the record is not writable or not existing the ids or not having permissions*/
else
return $resp->value();
}
Он дает только идентификатор и имя, которое с моей стороны не дает мне конкретного внешнего идентификатора данных в odoo, которые я пытался прочитать из odoo.
В оду ir_model_data это модель, которая хранит внешний идентификатор, модель вместе с идентификатором базы данных.
попробуйте найти внешний идентификатор из ir_model_data после получения идентификатора записи от поиск результат вы можете читать эта запись, чтобы получить идентификатор базы данных этой записи.
Других решений пока нет …