Как добавить внешний идентификатор задним числом?

У меня есть экземпляр SugarCRM и OpenERP, и мне нужно синхронизировать состояния (которые сильно меняются), клиентов, организации и некоторые продукты.

Некоторые из вышеперечисленных записей созданы при установке OpenERP, некоторые были импортированы из CSV, а некоторые были введены вручную через страницы администрирования. Это оставило нечестивую мешанину из разных и отсутствующих внешних идентификаторов в записях (например, состояниях).

Есть ли способ очистить эти внешние идентификаторы? Я не вижу способа сделать это через страницы администратора, так есть ли способ через API? Могу ли я загрузить состояние «Алабама» и сообщить OpenERP, что «внешний идентификатор для этой записи теперь US-AL»?

Аналогично, при создании новых состояний через API (у нас есть глобальный список, который все время растет), можно ли установить внешний ID в момент его создания?


person Jason    schedule 22.07.2014    source источник


Ответы (1)


Вы можете редактировать внешние идентификаторы, как с базой данных, так и с интерфейсом. Перейдите в «Настройки» -> «Технические» -> «Последовательности и идентификаторы» -> «Внешние идентификаторы», и вот оно. Это модель ir.model.data, поэтому вы найдете ее в соответствующей таблице базы данных.

О создании - никогда не слышал, никогда не пробовал.

person Mariusz Mizgier    schedule 22.07.2014
comment
Это достаточно близко, спасибо. Я не буду возиться с базой данных напрямую — в моделях завязано слишком много бизнес-логики, которую можно было бы пропустить, если бы я это сделал. Я также обнаружил, что при экспорте записей автоматически создаются внешние идентификаторы для записей, у которых их нет. Нет [полезного] контроля над форматами этих идентификаторов, но я согласен с тем, что такой точный контроль будет затруднен в OpenERP/ODoo. Это означает сохранение внешних идентификаторов в исходной системе при регулярной синхронизации контактов и т. д. - person Jason; 23.07.2014