На данный момент в системе Битрикс24 существует возможность добавить свои типы пользовательских полей, которые в свою очередь можно добавить к CRM-сущностям.
В недавней версии, развитие получила функциональность конвертации лида в различные сущности, однако на пользовательские поля это не распространяется.
Поясню: при разработке своего типа полей (наследуемого от другого простого типа) конвертация работает, но для всех полей НЕ относящихся к типам файл. Если отнаследоваться от поля типа файл, то результат не будет конвертирован (т.е. поле будет пустое).
Если копнуть проблему глубже (например с лидами), то "бага" кроется в классе \Bitrix\Crm\Conversion\LeadConversionWizard в методе prepareDataForEdit.
Примерно на 150 строчке есть следующей фрагмент:
// hack for UF
if($userField['USER_TYPE_ID'] === 'file') |
Если отнаследоваться от типа файл, создать кастомный обработчик и назвать тип file_extended, то для работы конвертации необходимо заменить следующим фрагментом (например):
if($userField['USER_TYPE_ID'] === 'file'||$userField['USER_TYPE_ID'] === 'file_extended') |
Предлагаю сделать либо костыль в виде функции обработчика для возможного расширения данного поля, либо (как правильнее) применить принципы ооп и проверить на абстрактный класс/интерфейс пользовательского поля-родителя.
P.S. Этот "хак" в ядре сотрудники ТП битрикса проигнорировали, сославшись на то, что конвертация "своих типов пользовательских полей не рассматривается в рамках техподдержки"