akopdev / bitrix24-python-rest Goto Github PK
View Code? Open in Web Editor NEWAPI wrapper for working with Bitrix24 REST API over webhooks.
Home Page: https://pypi.org/project/bitrix24-rest/
License: MIT License
API wrapper for working with Bitrix24 REST API over webhooks.
Home Page: https://pypi.org/project/bitrix24-rest/
License: MIT License
I went to https://training.bitrix24.com/rest_help/crm/deals/crm_deal_productrows_set.php and tried using this library like so:
bx24.callMethod(
'crm.deal.productrows.set',
id=order_id,
rows=[
{'PRODUCT_ID': 12, 'QUANTITY': 1, 'PRICE': 100}
],
)
This wasn't working, just removing all product rows from deal. Also response == True
, so bitrix wasn't giving much useful info there.
I realised that in https://github.com/akopkesheshyan/bitrix24-python-rest/blob/master/bitrix24/bitrix24.py#L85 p
was like
id=540&[rows][PRODUCT_ID]=12...
however bitrix expected
id=540&rows[PRODUCT_ID]=12...
I solved my problem by passing a dict to rows:
bx24.callMethod(
'crm.deal.productrows.set',
id=order_id,
rows={
0: {'PRODUCT_ID': 12, 'QUANTITY': 1, 'PRICE': 100}
},
)
and got
id=540&rows[PRODUCT_ID]=12...
then my product rows were added to my deal.
Suggestion: refactor https://github.com/akopkesheshyan/bitrix24-python-rest/blob/master/bitrix24/bitrix24.py#L47-L72 to enable this workflow:
It will probably break backward compatibility though.
Метод REST API catalog.price.list(select, filter, order, navigation) [https://dev.1c-bitrix.ru/rest_help/catalog/price/catalog_price_list.php] похоже не работает.
Он не ждет start, а использует другой параметр navigation и при попытке получить все цены (без фильтра) дает неверный результат. Конкретно у меня без указания productId дает всего одну запись. Если запрашивать для одного товара - выдает.
Есть еще методы с аналогичным типом выдачи в REST API.
Hi. IM and chats won't work for me Tried
bx24.callMethod('im.message.add', fields={'DIALOG_ID': '4', 'MESSAGE': 'Bla-bla-bla'})
bx24.callMethod('im.notify', fields={'TO': '4', 'MESSAGE': 'Bla-bla-bla'})
bx24.callMethod('im.notify.personal.add', fields={'USER_ID': '4', 'MESSAGE': 'Bla-bla-bla'})
always retuns "bitrix24.exceptions.BitrixError: User ID can't be empty"
All other methods like post new tasks or seaching by fields in client cards work like charm.
Any advice?
Hello! I use this type of code to change product rows in a deal:
bx24.callMethod( "crm.deal.productrows.set", id = 1, rows= [{"PRODUCT_ID": 3, "PRICE": 100.00, "QUANTITY": 4}, {"PRODUCT_ID": 3, "PRICE": 200.00, "QUANTITY": 4}])
But it seems that it only deletes product rows because crm.deal.productrows.get returns nothing.
What am I doing wrong?
Hi. I tried to use tasks.task.list method? but i got this error. Traceback:
In [7]: get_task_list(btx24)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-7-9e55fd6134a9> in <module>
----> 1 get_task_list(btx24)
~/projects/bitrix_plus_backend/server/apps/bitrix_fetcher/helpers/tasks.py in get_task_list(bitrix_instanse)
7
8 def get_task_list(bitrix_instanse):
----> 9 return bitrix_instanse.callMethod('tasks.task.list')
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
~/projects/bitrix_plus_backend/.venv/lib/python3.7/site-packages/bitrix24/bitrix24.py in callMethod(self, method, **params)
102 if 'next' in r and r['total'] > params['start']:
103 params['start'] += 50
--> 104 return r['result'] + self.callMethod(method, **params)
105 return r['result']
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
I need update deal and upload file (png)?
For php
$base64 = base64_encode(file_get_contents('/dir/data/name_file.pdf'));
$DEAL_ID = 1;
CRest::call('crm.deal.update',
[
'id' => $DEAL_ID,
'fields' => [
// Upload one file
"UF_CRM_1234567890" => [
'fileData' => ["name_file.pdf", $base64]
],
// Upload multiple files
"UF_CRM_1234567890" => [
[
'fileData' => ["file-1.pdf", $base64]
],
[
'fileData' => ["file-2.pdf", $base64]
]
],
],
'params' => [
"REGISTER_SONET_EVENT" => "Y"
]
]
);
I add
encoded = base64.b64encode(open("3658.png", "rb").read())
bx24.callMethod("crm.deal.update", id=3658, fields={ "TITLE": 'new3 name', "UF_CRM_1604413825641": encoded }, params={ "REGISTER_SONET_EVENT": "Y" });
https://github.com/akopkesheshyan/bitrix24-python-rest/blob/master/bitrix24/bitrix24.py#L87
Let's say I'm calling crm.deal.add
. method.rsplit('.', 1)[0]
will compute to crm.deal
.
Looks like this is not breaking stuff, since Bitrix accepts GET requests even for methods like crm.deal.add
and crm.deal.productrows.set
.
My suggestions:
A: Embrace it. Always use GET for all methods since it works. Remove POST-specific code.
B: Fix it. Check method.rsplit('.', 1)[1]
. Also add data=p.encode('utf-8')
to post version since it doesn't work with cyrillic symbols.
I don't feel competent enough to chose between these options though.
Hi, first of all, thank you for making this, really making life easier for all of us trying to use the API. I am trying to create new contacts, companies, and new deals using the python code, however, one problem I am running into is that I can not connect the contacts with the deals or companies, because the "Contact_ID" field is read-only and it is an integer, so I am wondering is there a possible way to connect them through code rather than going to bittrix24 and link them one by one.
try:
bx24.callMethod("crm.deal.update", { 'id': 3794, fields: { "TITLE": 'new name' }, params: { "REGISTER_SONET_EVENT": "Y" } });
except BitrixError as message:
print(message)
NameError: name 'fields' is not defined
how to send a file with the disk.folder.uploadfile method
the file is stored in the same folder as the python script.
special emphasis on how I should put the "fileContent" section
Hi,
I was trying to get a deal list with their products names and prices.
I can get the product list for one ID. ('crm.deal.productrows.get')
Is there anyway to get a list of every deal (ID) with their products?
thanks
When I try to send super long array of 1000+ string 7 symbols each, I get
File "/home/haska/PycharmProjects/parser_test/venv/lib/python3.8/site-packages/bitrix24/bitrix24.py", line 93, in callMethod if r['error'] not in 'QUERY_LIMIT_EXCEEDED': UnboundLocalError: local variable 'r' referenced before assignment
When I send the same array using php curl, it sends successfully
Cant download history of lead stages. Could you help me with downloading the history of changes leads stages?
Thanks
the method call asks me for the START_TIME field.
The date is structured as "2021-04-05T14: 00: 00-00: 00" which is the way indicated by the REST api, however when executing it, the activity arrives but not its start date or its deadline.
Clarify that the date is formatted as str
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.