Krukov / amocrm_api

Python amocrm API wrapper
MIT License
103 stars 55 forks source link

Как создавать и изменять кастомные поля #81

Closed Samolyotik closed 2 years ago

Samolyotik commented 2 years ago

Подскажите пожалуйста как создавать и изменять кастомные поля. Если создаю новый класс с custom_fields, то при создании экземпляра ничего не происходит. Если сначала создаю класс без кастомных полей, а потом добавляю через 'название экземпляра'.'название кастомного поля' = , то выдает ошибку

amocrm.v2.exceptions.ValidationError: {'validation-errors': [{'request_id': '0', 'errors': [{'code': '36b4f074-7403-11ea-af30-00163e2085ae', 'path': 'custom_fields_values.0', 'detail': 'You should use "field_id" or "field_code" to identify custom field.'}]}], 'title': 'Bad Request', 'type': 'https://httpstatus.es/400', 'status': 400, 'detail': 'Request validation failed'}

Понятно, что нужно использовать field_id, но куда его вставить и откуда взять?

PS Получилось через передачу в create {"custom_fields_values": [ { "field_id": , "values": [ { "value": } ] } ] }

Samolyotik commented 2 years ago

Разобрался как создавать кастомные поля и думал, что менять из примерно так же. Но вот уже кажется перепробовал все варианты, но ничего не получается. Помогите пожалуйста

Krukov commented 2 years ago

https://github.com/Krukov/amocrm_api#%D0%BA%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%BD%D1%8B%D0%B5-%D0%BF%D0%BE%D0%BB%D1%8F

А то что тут описано и команда pyamogen не помогает ?

Вы просто создаете наследника от нужного класс с определяете поля которое соотвествуют названию кастомного поля, при желании в кастомные поля можно указывать конкретный field_id если знаете где его смотреть в АМО:

from amocrm.v2 import  Contact as _Contact, custom_field

class Contact(_Contact):
    phone = custom_field.ContactPhoneField("Телефон")  # поле так и называется Телефон
    email = custom_field.ContactEmailField("Email", field_id=123456)

и работаете с ней как описано в документации

Samolyotik commented 2 years ago

Я это конечно же пробовал, и field_id я тоже указывал. Попробую сделать всё через обычные запросы api, наверное я просто ещё не дорос до уровня, когда приходится дебажить ошибки, про которые почти ничего не говорится. А так, большое спасибо за библиотеку, она действительно упрощает многие моменты.