Возможно ли в Bitrix получить значения пользовательского поля enumeration?

У меня есть поле в Bitrix (enumeration). введите сюда описание изображения

Я получаю данные в таком же виде, то есть "1 - 444", например, но Bitrix ожидает значение ID поля, а не строки. Поле сделки UF_CRM_..., которое как раз является списком (enumeration), возвращает значение 45 для "1 - 444" поля и 47 для поля "2 - 666". Как я по значению "1 - 444" могу получить его ID, чтобы передать в поле UF_CRM_... при создании новой сделки?

Пример тестовый, на самом деле значений по типу "1 - 444" больше и они периодически меняются. Каким методом можно получить ID по VALUE?

Использую python библиотеку fasr_bitrix24, либо же сам REST API, есть ли там такой метод?


Ответы (1 шт):

Автор решения: AnnaBazueva
  1. Получите список значений для поля:
    Используйте метод crm.deal.fields
    (Возвращает описание полей сделки - json <=> dict)
from fast_bitrix24 import Bitrix

# Ваш код ^^^^^^^

# Получите поля сделки
fields = bx.call('crm.deal.fields')

# Найдите ваше пользовательское поле
enum_field = fields['UF_CRM_YOUR_FIELD']  # Замените на ваше поле

# Создайте соответствие значений и ID
value_to_id = {item['VALUE']: item['ID'] for item in enum_field['items']}

# Пример значения, для которого нужно получить ID
value = "1 - 444"
id_value = value_to_id.get(value)

if id_value is not None:
    print(f"ID для '{value}': {id_value}")
else:
    print(f"Значение '{value}' не найдено.")
  1. Если используете REST API напрямую, вы можете выполнить аналогичные шаги,
    отправив запрос к методу crm.deal.fields
    URL для запроса будет выглядеть следующим образом:
https://your_bitrix24_domain/rest/crm.deal.fields.json?auth=your_access_token

Так Вы сможете динамически получать ID по значениям, которые могут меняться.

→ Ссылка