Блог Горошко Андрея 1C-Битрикс Создание своего типа Пользовательского поля (UserType) в Битрикс D7

Создание своего типа Пользовательского поля (UserType) в Битрикс D7

Битрикс предоставляет много типов полей (строка, список, файл), но иногда нужно что-то особенное: например, поле для выбора точки на Яндекс.Карте, привязка к конкретной внешней сущности или поле «Цвет» с палитрой.

Для этого можно создать свой тип UF.

Шаг 1: Класс обработчика поля

В D7 рекомендуется наследовать класс от \Bitrix\Main\UserField\Types\BaseType.
Создадим класс MyColorType в папке модуля или в local/php_interface.

namespace My\Module\UserField;

use Bitrix\Main\UserField\Types\BaseType;

class MyColorType extends BaseType
{
    public const USER_TYPE_ID = 'my_color_picker';

    // Описание поля для системы
    public static function getDescription(): array
    {
        return [
            'USER_TYPE_ID' => self::USER_TYPE_ID,
            'CLASS_NAME' => __CLASS__,
            'DESCRIPTION' => 'Выбор цвета (HTML5)',
            'BASE_TYPE' => \CUserTypeManager::BASE_TYPE_STRING,
        ];
    }

    // Тип колонки в БД
    public static function getDbColumnType(): string
    {
        return 'varchar(7)'; // Например, #FF0000
    }

    // HTML для формы редактирования (в админке)
    public static function getEditFormHTML(array $userField, ?array $htmlControl): string
    {
        $fieldName = $htmlControl['NAME'];
        $value = htmlspecialcharsbx($htmlControl['VALUE']);
        
        return '<input type="color" name="'.$fieldName.'" value="'.$value.'">';
    }

    // HTML для списка (в админке)
    public static function getAdminListViewHTML(array $userField, ?array $htmlControl): string
    {
        $value = htmlspecialcharsbx($htmlControl['VALUE']);
        if(!$value) return '';
        
        return '<div style="width:20px;height:20px;background-color:'.$value.';border:1px solid #000;"></div>';
    }
    
    // Метод для сохранения в БД (опционально, если нужна обработка)
    public static function onBeforeSave($userField, $value)
    {
        return $value;
    }
}

Шаг 2: Регистрация обработчика

Нужно подписаться на событие OnUserTypeBuildList модуля main.

В init.php:

use Bitrix\Main\EventManager;

EventManager::getInstance()->addEventHandler(
    'main',
    'OnUserTypeBuildList',
    ['\My\Module\UserField\MyColorType', 'getDescription']
);

Результат

Теперь при создании Пользовательского поля в админке (для пользователей, разделов или HL-блоков) в выпадающем списке «Тип данных» появится ваш вариант: «Выбор цвета (HTML5)». При редактировании элемента вы увидите нативный Color Picker браузера.

Что еще можно реализовать:

  • getSettingsHTML: Добавить настройки поля (например, «Цвет по умолчанию»).
  • getFilterHTML: Кастомный фильтр для списков.
  • checkFields: Валидация значения перед сохранением.

Вывод:
Собственные типы полей позволяют создавать удобные интерфейсы ввода данных для контент-менеджеров, инкапсулируя сложную логику отображения и сохранения внутри одного класса.

свой тип поля битрикс, UserType, OnUserTypeBuildList, BaseType, кастомное поле, пользовательское поле D7.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Добавить комментарий

Related Post

Оценка рисков использования нелицензионных (Nulled) модулей из Маркетплейс и ответственностьОценка рисков использования нелицензионных (Nulled) модулей из Маркетплейс и ответственность

Прозрачный расчет бюджета, честные сметы и понимание совокупной стоимости владения (TCO) — залог успешного сотрудничества и окупаемости инвестиций в веб-разработку на 1С-Битрикс. В статье «Оценка рисков использования нелицензионных (Nulled) модулей

Zhiznennyy Cikl Zaprosa: Руководство разработчикаZhiznennyy Cikl Zaprosa: Руководство разработчика

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Zhiznennyy Cikl Zaprosa: Руководство разработчика». Мы подготовили подробный разбор принципов работы и развернутые примеры интеграции.

Разработка интернет-магазина на 1С-Битрикс с продажей мерных товаров в погонных и квадратных метрахРазработка интернет-магазина на 1С-Битрикс с продажей мерных товаров в погонных и квадратных метрах

Внедрение функционала «с продажей мерных товаров в погонных и квадратных метрах» на платформе 1С-Битрикс позволяет существенно повысить средний чек, сократить операционные расходы и предоставить покупателям первоклассный сервис. точный пересчет стоимости