Блог Горошко Андрея 1C-Битрикс Подключение Пользовательских полей (UF) к своим ORM-сущностям

Подключение Пользовательских полей (UF) к своим ORM-сущностям

Мы привыкли, что пользовательские поля можно добавлять к разделам, пользователям или Highload-блокам.

Но что, если вы создали свою таблицу (ORM-сущность) и хотите дать администраторам возможность добавлять к ней новые поля (строки, списки, файлы) прямо из админки, без программирования?

Битрикс позволяет «подключить» механизм UF к любой сущности.

Шаг 1: Доработка ORM-сущности

В ваш класс Table (наследник DataManager) нужно добавить всего один метод — getUfId().

namespace My\Module;

use Bitrix\Main\Entity;

class MyCustomTable extends Entity\DataManager
{
    public static function getTableName()
    {
        return 'my_custom_table';
    }

    public static function getMap()
    {
        return [
            new Entity\IntegerField('ID', ['primary' => true, 'autocomplete' => true]),
            new Entity\StringField('NAME'),
            // ... другие поля
        ];
    }

    // --- Магия здесь ---
    public static function getUfId()
    {
        // Придумываем уникальный идентификатор для нашей сущности
        // Обычно: МОДУЛЬ_ИМЯСУЩНОСТИ
        return 'MY_MODULE_CUSTOM_ENTITY';
    }
}

Шаг 2: Добавление полей в админке

  1. Перейдите в Настройки -> Настройки продукта -> Пользовательские поля.
  2. Нажмите «Добавить поле».
  3. В URL браузера вы увидите параметр ENTITY_ID=…. Подмените его на ваш код: ENTITY_ID=MY_MODULE_CUSTOM_ENTITY и нажмите Enter.
  4. Теперь вы создаете поле для своей сущности! Создайте, например, поле UF_COMMENT.

Альтернатива: Создайте поле программно через CUserTypeEntity, указав ‘ENTITY_ID’ => ‘MY_MODULE_CUSTOM_ENTITY’.

Шаг 3: Использование в коде

Теперь D7 ORM автоматически «подхватит» эти поля.

// Добавление записи с UF-полем
MyCustomTable::add([
    'NAME' => 'Тест',
    'UF_COMMENT' => 'Это работает!'
]);

// Выборка
$result = MyCustomTable::getList([
    'select' => ['ID', 'NAME', 'UF_COMMENT'] // Поле доступно в select!
]);

Отображение в админке

Чтобы вывести эти поля в стандартной форме редактирования (CAdminForm), используйте CUserTypeManager.

// В файле редактирования edit.php
global $USER_FIELD_MANAGER;
$USER_FIELD_MANAGER->EditFormShowTab('MY_MODULE_CUSTOM_ENTITY', $arResult['ID']);

Вывод:
Метод getUfId() превращает вашу обычную таблицу в расширяемую сущность.

Это позволяет использовать мощь системных типов данных (Файл, Привязка к элементам, Видео) в ваших собственных разработках.

пользовательские поля для своих таблиц, getUfId, CUserTypeManager, свои UF поля, ORM UF, расширение таблиц.

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

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

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

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

Related Post

Интеграция сайта Битрикс с сервисом опросов и NPS-оценки клиентовИнтеграция сайта Битрикс с сервисом опросов и NPS-оценки клиентов

Бесшовная интеграция сайта на 1С-Битрикс с внешними системами — это ключевое условие автоматизации продаж и масштабирования бизнеса. Услуга «Интеграция сайта Битрикс с сервисом опросов и NPS-оценки клиентов» обеспечивает автоматический сбор

Верстка адаптивной шапки сайта с закреплением при прокрутке и компактным мобильным видомВерстка адаптивной шапки сайта с закреплением при прокрутке и компактным мобильным видом

Профессиональный frontend-инжиниринг и адаптивная верстка макетов под 1С-Битрикс являются ключевыми факторами высокой конверсии и удержания покупателей. Услуга «Верстка адаптивной шапки сайта с закреплением при прокрутке и компактным мобильным видом» обеспечивает

Suschnosti: Руководство разработчикаSuschnosti: Руководство разработчика

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