- Создаешь в папке /bitrix/php_interface свою папку с названием user_fields или другим, на свой вкус;
- Копируешь туда файл /bitrix/modules/main/classes/general/usertypeenum.php и соответствующий языковой файл. Не обязательно сохранять именно это имя файла, можно переименовать на свой вкус;
- В файле определен класс, необходимо его переименовать. Кроме того, в последней функциональной строке файла происходит регистрация типа свойства, который и описывает этот класс — там тоже необходимо указать новое имя класса;
- В классе определен ряд методов, каждый из которых вызывается в соответствующий момент ядром Битрикса, потому очень важно сохранить название методов такими, как они есть. Каждый метод отвечает за одну конкретную задачу: один за HTML-код для занесения свойства в фильтр, другой, за HTML-код для фильтра в списке пользователей, третий, за сохранение данных, поступивших от пользователя и так далее. По названию и содержимому методов вполне понятно, кто и за что отвечает, так что, нужно лишь соответствующим образом изменить эти методы и получится совершенно новый тип пользовательского свойства, с уникальным интерфейсом и т.п. По факту, не обязательно даже работать с таблицами Битрикс, предоставляемый набор методов вполне позволяет использовать таблицы собственных модулей;
- По окончанию модификации следует убедиться, что языковой файл подключается правильно, а так же, что ключи, которые определены для языкового массива являются уникальными.
Итак, новый тип пользовательского свойства готов. Теперь необходимо рассказать Битриксу, что он существует. Для этого необходимо убедиться в существовании файла init.php в папке /bitrix/php_interface, и если его нет, создать. Далее, где-нибудь вначале файла следует функцией require_once подключить файл с новым типом свойства. Собственно, если все было сделано правильно, после этого новое свойство появится в списке типов при создании свойства пользователя...