Создание 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',
]
];