Інтеграція Odoo та 1C

3 квітня 2024 р. від
Інтеграція Odoo та 1C
LLC Netframe

Види обміну між системами 1С та Odoo.


В умовах глобалізації та швидкого розвитку технологій, ефективність бізнес-процесів є ключовим фактором успіху. У цьому контексті системи класу ERP (Enterprise Resource Planning) відіграють надзвичайно важливу роль. Одним з лідерів на ринку Європи є ERP Odoo. Odoo надає широкий спектр функцій для управління різними аспектами бізнесу. Водночас на ринку України все ще широко використовується 1С, особливо в сфері бухгалтерії та обліку. Чи може Odoo замінити 1С? Звичайно зможе! Але на то потрібне управлінське рішення і час.

А поки постає інше важливе питання - чи може Odoo інтегруватись з 1C? Яку інформацію та як може приймати та передавати? Про це і піде мова нижче. 

Інтеграція Odoo та 1C дозволяє централізувати бізнес-дані, що полегшує доступ до інформації, збільшує ефективність аналітики та прийняття рішень. Також інтегровані системи можуть автоматизувати рутинні задачі та оптимізувати бізнес-процеси. Наприклад, замовлення в Odoo може автоматично передаватися в 1C для ведення бухгалтерського обліку.

Нижче подані приклади можливих інтеграцій Odoo та 1С.

1. 1С – > Odoo
В 1С в ручному режимі (скриптами) формується файл для обміну, який обробляється в Odoo. Використовується для перенесення не широких наборів даних, які не потребують серйозної обробки зі сторони 1С. Варіант одноразовий, використовується як «костиль».

2. 1С – > Odoo
На стороні 1С створюється http сервіс, який отримує від Odoo http запит, в тілі якого міститься запит до БД 1С. 1С виконує запит до своєї БД, і відправляє дані  як JSON текст назад в Odoo в тілі відповіді. Odoo, відповідно, може передавати різні запити до одного http сервісу. Спосіб універсальний, приймає не складні запити.

Приклад Python коду

3. 1С < – > Odoo
На стороні 1С створюється спеціалізований http сервіс, який або отримує інформацію, обробляє її і записує в БД (змінює існуючі об*єкти), або відправляє назад запитану інформацію.

4. 1С  – > Odoo 
Повний перенос. На стороні 1С існуючими засобами формується xml файл з даними, який обробляється на стороні Odoo існуючими модулями (з “існуючими модулями” потрібно додатково розбиратись). Операція одноразова, потребує вивчення задачі.

5. 1С – > Odoo Live 
Операції проводяться повністю відповідно до пункту 2, але із тригерами обміну (або за розкладом) і таблицею, де будуть записані всі об’єкти, які потрібно вивантажити в Odoo.

Можливе використання існуючих обмінів, наприклад між системо 1С і сайтом. Також для співвідношення об’єктів в 1С і Odoo, в останній потрібно додати поле із ідентифікатором 1С.

Приклад поля для ідентифікатора 

Приклад обміну Odoo - > 1C
1. В кожному довіднику та документі, якими ми плануємо обмінюватися, створюємо поле з унікальним ідентифікатором, який буде однаковим як в Odoo, так і в 1С. Це потрібно для співвідношення відповідних елементів в різних системах.

2. В системі Odoo створюється сервіс, який відправляє потрібну інформацію на сторону 1С. Під інформацією розуміється документ, елемент довідника і т.д.
  def action_upload_partner(self):
​data = {'guid': self.GUID_1c, 'name': self.name}
​response = requests.post('http://10.0.8.110/BAScorpDemo/hs/OdooExchange/push_data',
​ json=data,
​​auth=('http_user', '123'),
​headers={'Content-Type': "application/json", 'Accept': "application/json"})

3. На стороні 1С пишемо http сервіс, який буде приймати нашу інформацію і записувати в базу.

Приклад обміну 1С -> Odoo.

  1. На стороні 1С створюється універсальний http сервіс, який отримує від Odoo http запит, в тілі якого міститься запит до БД 1С.

Приклад запиту в 1С

ВЫБРАТЬ
Контрагенты.Код КАК code,
Контрагенты.Наименование КАК name
ИЗ
Справочник.Контрагенты КАК Контрагенты
ГДЕ
НЕ Контрагенты.ЭтоГруппа

2. На стороні Odoo створюємо сервіс, який буде посилати запити в 1С, які вона потім виконає і поверне результат у вигляді json тексту.

Приклад коду на стороні Odoo 
  def action_get_any_data_by_query(self):
​query = 'ВЫБРАТЬ Контрагенты.Код КАК code, '\
​'Контрагенты.Наименование КАК name ' \
​'ИЗ Справочник.Контрагенты КАК Контрагенты ' \
​'ГДЕ НЕ Контрагенты.ЭтоГруппа'
​data = {'query': query}
​response = requests.get('http://10.0.8.110/BAScorpDemo/hs/OdooExchange/push_data',
​ json=data,
​auth=('http_user', '123'),
​headers={'Content-Type': "application/json", 'Accept': "application/json"})

Приклад формату отримання інформації з 1С
Висновок

Інтеграція між Odoo та 1С може стати суттєвим кроком на шляху до оптимізації бізнес-процесів та підвищення ефективності, враховуючи високу конкурентність на сучасному ринку. Це дозволить компаніям, які поки ще не готові повністю відмовитись від 1С зробити цей процес більш гнучким та використовувати на перехідному періоді переваги обох систем, забезпечуючи гнучкість, надійність та швидкість у веденні бізнесу. Netframe надає перевірені рішення з інтеграції Odoo та 1С для досягнення максимального результату та забезпечення стабільної роботи обох систем. 


в Odoo