Пользовательские типы полей в CRM
Выберите инструмент для разработки с AI-агентом:
- используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
- используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации
Статья объясняет, как приложение регистрирует свой тип поля, как создать поле этого типа в карточке CRM и как разобрать типовые ошибки. Работа обработчика внутри поля описана в статье Пользовательские типы полей: обзор методов.
Быстрый переход: все методы
Пользовательская документация: Пользовательские поля в CRM
Стандартные и пользовательские типы
Поле CRM может иметь стандартный или пользовательский тип:
- стандартные типы — строка, число, дата, список, адрес, ссылка, файл и другие. Их полный список возвращает метод crm.userfield.types
- пользовательские типы — типы, которые приложение регистрирует методом userfieldtype.add. Поле такого типа показывает в карточке CRM интерфейс приложения — это встройка
Если значение — обычный текст, число, дата или выбор из списка, подойдет стандартный тип. Пользовательский тип нужен, если поле должно:
- выводить данные, для которых не подходят стандартные типы. Значение хранится в Битрикс24, а приложение показывает его и при необходимости дополняет данными своего сервиса
- выводить элементы управления, например кнопки приложения
- подгружать данные внешнего сервиса: при каждом открытии карточки поле запрашивает обработчик приложения
Как работает пользовательский тип поля
- Приложение регистрирует тип методом userfieldtype.add: передает код типа
USER_TYPE_IDи адрес обработчикаHANDLER. Код типа сохраняется строчными буквами:MyFieldпревратится вmyfield. - Поле этого типа создают с полным кодом
rest_<APP_ID>_<USER_TYPE_ID>, гдеAPP_ID— значениеIDиз ответа метода app.info. - Когда пользователь открывает карточку, Битрикс24 загружает
HANDLERво фрейме поля и передает данные поля и элемента вPLACEMENT_OPTIONS. - Обработчик передает значение в форму карточки командой
setValueчерез BX24.placement.call. Значение запишется в Битрикс24, когда пользователь сохранит карточку.
Методы userfieldtype.* работают только в контексте приложения: при вызове через вебхук они возвращают ошибку WRONG_AUTH_TYPE. Вызывать их может только администратор. Для создания поля эти условия не действуют. Поле по полному коду типа можно создать через вебхук или из другого приложения — нужны только права и scope из раздела Как создать поле пользовательского типа.
Как создать поле пользовательского типа
Поле создают универсальным методом userfieldconfig.add или методом crm.*.userfield.add нужного объекта.
Методы crm.*.userfield.add устарели, но поля с типами приложений создают. Методы REST 3.0 crm.<тип>.field.custom.add, которые их заменяют, такие поля не создают.
|
Объект |
Метод создания поля |
|
Только userfieldconfig.add |
|
|
Только userfieldconfig.add |
В методах crm.*.userfield.add полный код передают в fields.USER_TYPE_ID, в userfieldconfig.add — в field.userTypeId. Например, для приложения с ID: 123 и типа userfield1 код будет rest_123_userfield1.
Методам crm.*.userfield.add нужен scope crm, методу userfieldconfig.add — scope userfieldconfig и crm. Всем этим методам нужно право «Разрешить изменять настройки» в CRM.
Ошибки при работе с пользовательскими типами полей
Ошибка 400 при создании поля
При создании поля с пользовательским типом можно получить ошибку Error! 400: ERROR_CORE: Указан неверный пользовательский тип. (400).
-
Выполните метод userfieldtype.list из того приложения, которое регистрировало тип: метод возвращает только типы вызывающего приложения.
-
Если в списке есть нужный тип, сверьте код в запросе на создание поля. Нужен полный код
rest_<APP_ID>_<USER_TYPE_ID>, гдеUSER_TYPE_ID— значение из ответаuserfieldtype.list. Если код верный, переходите к пункту 2. -
Если нужный тип поля не найден, зарегистрируйте новый тип методом userfieldtype.add.
-
-
Выполните метод app.info. Метод возвращает флаг
INSTALLED— признак завершенной установки.-
Если метод вернул
INSTALLED = true, приложение установлено корректно. -
Если метод вернул
INSTALLED = false, вызовите на странице приложения функцию BX24.installFinish. Она завершит установку приложения с интерфейсом.BX24.init(function(){ BX24.installFinish(); });
-
Обработчик не открывается в поле
Если поле создано, но обработчик в нем не открывается или показывает ошибку:
-
Проверьте URL обработчика
HANDLER, указанный при регистрации типа поля, методом userfieldtype.list. Чтобы изменитьHANDLER, используйте метод userfieldtype.update. -
Убедитесь, что обработчик доступен из интернета:
-
не используйте локальные адреса: localhost, 192.168.* и другие адреса, доступные только из локальной сети
-
проверьте, что адрес
HANDLERоткрывается с устройства вне вашей сети
-
-
Проверьте:
-
что SSL-сертификат обработчика корректный
-
что в .htaccess и firewall на сервере обработчика нет блокировок
-
Требования и рекомендации
-
Обработчик должен открываться по HTTPS: страница Битрикс24 открыта по HTTPS, и браузер блокирует загрузку фрейма по HTTP.
-
Давайте понятные названия типам полей: учитывайте назначение поля и связь с приложением.
-
Код типа
USER_TYPE_IDпосле регистрации не меняется:userfieldtype.updateизменяет только название, описание и обработчик. Для нового кода удалите тип и зарегистрируйте заново.
Обзор методов
Scope:
placementКто может выполнять методы: администратор, только в контексте приложения
|
Метод |
Описание |
|
Регистрирует новый тип пользовательского поля |
|
|
Изменяет параметры существующего типа поля |
|
|
Возвращает типы полей, которые зарегистрировало вызывающее приложение |
|
|
Удаляет зарегистрированный тип поля |