amocrm_api icon indicating copy to clipboard operation
amocrm_api copied to clipboard

Помогите с кастомными полями

Open Korliore opened this issue 1 year ago • 7 comments

Пытался решить проблему с помощью https://github.com/Krukov/amocrm_api/issues/90, но безуспешно.

Кусок кода: class Lead(_Lead): rasshifrovka = custom_field.UrlCustomField("Расшифровка", field_id=1400397)

( на самом деле кастомных полей больше)

existing_lead = Lead.objects.get(query=checkbox[0]) # Обновляем данные существующей сделки existing_lead.rasshifrovka = checkbox[12] existing_lead.price = convert_sum(checkbox[2]) existing_lead.save()

Если закомментировать строчки с кастомными полями и оставить только стандартные, то все заработает. Если есть кастомные поля(любые), то выпадет ошибка. Удивительно то, что все работает на моем аккаунте, но не работает на аккаунте заказчика. Создание новых сделок тоже работает отлично.

Ошибка Traceback (most recent call last): File "crmAPI.py", line 193, in <module> upd_lead(check_checkbox()) File "crmAPI.py", line 189, in upd_lead create_a_deal(checkbox) File "crmAPI.py", line 161, in create_a_deal existing_lead.update() File "/root/crm_integration/venv/lib/python3.6/site-packages/amocrm/v2/model.py", line 63, in update self._manager.update(self.id, self._get_updated_data()) File "/root/crm_integration/venv/lib/python3.6/site-packages/amocrm/v2/manager.py", line 19, in update return self._interaction.update(object_id=object_id, data=data or kwargs) File "/root/crm_integration/venv/lib/python3.6/site-packages/amocrm/v2/interaction.py", line 132, in update raise exceptions.ValidationError(response) amocrm.v2.exceptions.ValidationError: {'validation-errors': [{'request_id': '0', 'errors': [{'code': 'FieldNotExpected', 'path': 'custom_fields_values.0.is_computed', 'detail': 'This field was not expected.'}, {'code': 'FieldNotExpected', 'path': 'custom_fields_values.1.is_computed', 'detail': 'This field was not expected.'}, {'code': 'FieldNotExpected', 'path': 'custom_fields_values.2.is_computed', 'detail': 'This field was not expected.'}, {'code': 'FieldNotExpected', 'path': 'custom_fields_values.3.is_computed', 'detail': 'This field was not expected.'}, {'code': 'FieldNotExpected', 'path': 'custom_fields_values.4.is_computed', 'detail': 'This field was not expected.'}, {'code': 'FieldNotExpected', 'path': 'custom_fields_values.5.is_computed', 'detail': 'This field was not expected.'}, {'code': 'FieldNotExpected', 'path': 'custom_fields_values.6.is_computed', 'detail': 'This field was not expected.'}, {'code': 'FieldNotExpected', 'path': 'custom_fields_values.7.is_computed', 'detail': 'This field was not expected.'}, {'code': 'FieldNotExpected', 'path': 'custom_fields_values.8.is_computed', 'detail': 'This field was not expected.'}, {'code': 'FieldNotExpected', 'path': 'custom_fields_values.9.is_computed', 'detail': 'This field was not expected.'}]}], 'title': 'Bad Request', 'type': 'https://httpstatus.es/400', 'status': 400, 'detail': 'Request validation failed'}

Korliore avatar Apr 30 '23 12:04 Korliore

Быть может проблема в том, что field_id у заказчика и у Вас отличаются?

alex-msk avatar Apr 30 '23 13:04 alex-msk

Быть может проблема в том, что field_id у заказчика и у Вас отличаются?

нет, ошибка не в этом т.к я получил все новые поля с помощью

export AMOCRM_CLIENT_ID=xxx export AMOCRM_SECRET=xxx export AMOCRM_SUBDOMAIN=xxx export AMOCRM_REDIRECT_URL=xxx export AMOCRM_CODE=xxx # optional pyamogen > models.py

Как было выше сказано, создание новых сделок на аккаунте заказчика работает корректно

Korliore avatar Apr 30 '23 13:04 Korliore

Быть может проблема в том, что field_id у заказчика и у Вас отличаются?

ваш тикет я тоже изучил (https://github.com/Krukov/amocrm_api/issues/68) Добавил в код схожий костыль Вот полный код отвечающий за создание/обновление сделки: https://gist.github.com/IriskaID/ecb78e33191793ad6eed83d9e80699bf

Korliore avatar Apr 30 '23 13:04 Korliore

UPD: отписал в техническую поддержку. Код верный, иначе бы он на другом аккаунте не работал. Даже с новым тестовым полем выбивает эту же ошибку

Korliore avatar May 01 '23 06:05 Korliore

https://pastebin.pl/view/dd809566 отловил запросы, которые отправляет библиотека. Проблема остается

Korliore avatar May 03 '23 09:05 Korliore

Удалось исправить. Библиотека передавала лишний ключ is_computed. Проблема решилась модификацией функции update в файле interaction.py

https://pastebin.com/Y4VN1M1S

Korliore avatar May 03 '23 16:05 Korliore

А почему это поле на вашем акаунте не передавалось ?

Видимо в некоторых случаях апи амосрим на получении сушьности добавляет лишнее поля а выдачу апи которы не описаны в документации

Нужно поправить в библиотеке - убрать при формировании обновлении кастомного поле лишние поля ( брать только values, field_name, field_code

Krukov avatar Jun 03 '23 20:06 Krukov