Перейти к содержанию

Создание UF свойств кодом

Для создания UF свойств есть старый способ через CUserTypeEntity, а есть новый через Bitrix\Main\UserField\Dispatcher::class

В новом диспетчере кроме стандартных полей добалено требование поля FIELD. На форме создания UF свойства этого поля нет.

Как обычно, у Битров предусмотрен статичный метод instance(), который создаёт объект и прописывает его в свойство $instance. Но нигде нет обращения к этому объекту именно через статичное свойство. Конструктор так же не закрыт. Думаю, для создания можно использовать просто конструктор:

$fields = [/* поля для создания UF свойства */];
$dispatcher = new \Bitrix\Main\UserField\Dispatcher;
$dispatcher->createField($fields);

Список полей

Список полей можно посмотреть в методе \Bitrix\Main\UserField\Dispatcher::createNewField:

$fields = [
    'ENTITY_ID'    => 'CRM_DEAL',     // Поле Entity на форме создания
    'FIELD_NAME'   => 'UF_MY_FIELD',  // Поле Field ID (only for new field):
    'FIELD'        => 'My field',     // API требует это значение
    'USER_TYPE_ID' => 'string',       // Поле Data type (only for new field)
    'MULTIPLE'     => 'N',            // множественное
    'MANDATORY'    => 'N',            // обязательное
    'SHOW_FILTER'  => 'N',
    'XML_ID'       => 'UF_MY_FIELD',  // Поле XML_ID:

    // Указание подписей
    'EDIT_FORM_LABEL'   => [    // 1 колонка
        'ru' => 'Client title',
        'en' => 'Client title',
    ],
    'LIST_COLUMN_LABEL' => [    // 2 колонка
        'ru' => 'Client title',
        'en' => 'Client title',
    ],
    'LIST_FILTER_LABEL' => [    // 3 колонка
        'ru' => 'Client title',
        'en' => 'Client title',
    ],
    'HELP_MESSAGE' => [         // 5 колонка
        'ru' => 'Client title',
        'en' => 'Client title',
    ]
];