protected static function prepareUFInfo()
 {
     if (is_array(self::$arUFId)) {
         return;
     }
     self::$arUFId = array('TASKS_TASK');
     /** @global string $DBType */
     /** @global CUserTypeManager $USER_FIELD_MANAGER */
     global $DBType, $USER_FIELD_MANAGER;
     $dbType = ToUpper(strval($DBType));
     $allowedUserTypes = array('disk_file', 'crm');
     self::$ufInfo = array();
     self::$ufEnumerations = array();
     foreach (self::$arUFId as $ufId) {
         $arUserFields = $USER_FIELD_MANAGER->GetUserFields($ufId, 0, LANGUAGE_ID);
         if (is_array($arUserFields) && count($arUserFields) > 0) {
             foreach ($arUserFields as $field) {
                 if (isset($field['FIELD_NAME']) && substr($field['FIELD_NAME'], 0, 3) === 'UF_' && isset($field['USER_TYPE_ID']) && in_array($field['USER_TYPE_ID'], $allowedUserTypes, true)) {
                     if ($field['FIELD_NAME'] === 'UF_TASK_WEBDAV_FILES') {
                         $field['EDIT_FORM_LABEL'] = $field['LIST_COLUMN_LABEL'] = $field['LIST_FILTER_LABEL'] = GetMessage('TASKS_REPORT_UF_TASK_WEBDAV_FILES');
                     }
                     self::$ufInfo[$ufId][$field['FIELD_NAME']] = $field;
                     if ($field['USER_TYPE_ID'] === 'datetime' && $field['MULTIPLE'] !== 'Y') {
                         self::$ufInfo[$ufId][$field['FIELD_NAME'] . self::UF_DATETIME_SHORT_POSTFIX] = $field;
                     }
                     if (($dbType === 'ORACLE' || $dbType === 'MSSQL') && $field['MULTIPLE'] === 'Y') {
                         self::$ufInfo[$ufId][$field['FIELD_NAME'] . self::UF_TEXT_TRIM_POSTFIX] = $field;
                     }
                     if ($field['USER_TYPE_ID'] === 'enumeration' && isset($field['USER_TYPE']) && is_array($field['USER_TYPE']) && isset($field['USER_TYPE']['CLASS_NAME']) && !empty($field['USER_TYPE']['CLASS_NAME']) && is_callable(array($field['USER_TYPE']['CLASS_NAME'], 'GetList'))) {
                         self::$ufEnumerations[$ufId][$field['FIELD_NAME']] = array();
                         $rsEnum = call_user_func_array(array($field['USER_TYPE']['CLASS_NAME'], 'GetList'), array($field));
                         while ($ar = $rsEnum->GetNext()) {
                             self::$ufEnumerations[$ufId][$field['FIELD_NAME']][$ar['ID']] = $ar;
                         }
                         unset($rsEnum, $ar);
                     }
                 }
             }
         }
     }
 }