• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/bizprocdocumentcompatible.php
  • Класс: BitrixDiskBizProcDocumentCompatible
  • Вызов: BizProcDocumentCompatible::getUserTypeFields
static function getUserTypeFields($storageId)
{
	$fields = array();
	/** @var CAllUserTypeManager */
	global $USER_FIELD_MANAGER;
	foreach($USER_FIELD_MANAGER->getUserFields('DISK_FILE_' . $storageId, 0, LANGUAGE_ID) as $fieldName => $userField)
	{
		$editable = array();

		if($userField['USER_TYPE']['USER_TYPE_ID'] == 'boolean')
		{
			$type = static::getPrefixForCustomType() . "boolean";
			$editable = $userField['SETTINGS'];
		}
		else
		{
			if(in_array($userField['USER_TYPE']['USER_TYPE_ID'], array(
				'string',
				'double',
				'boolean',
				'integer',
				'datetime',
				'file',
			)))
			{
				if($userField['USER_TYPE']['BASE_TYPE'] == 'enum')
				{
					$userField['USER_TYPE']['BASE_TYPE'] = 'select';
				}
				$type = $userField['USER_TYPE']['USER_TYPE_ID'];

				if($type === 'datetime')
				{
					$userField['SETTINGS']['EDIT_IN_LIST'] = $userField['EDIT_IN_LIST'];
					$editable = $userField['SETTINGS'];
				}
			}
			else
			{
				$userTypeId = $userField['USER_TYPE']['USER_TYPE_ID'];
				if($userTypeId == 'enumeration')
				{
					$type = 'select';
				}
				else
				{
					$type = static::getPrefixForCustomType() . $userTypeId;
				}
				$editable = array();
				if('iblock_element' == $userTypeId || 'iblock_section' == $userTypeId)
				{
					$editable = $userField['SETTINGS'];
				}
			}
		}

		$fieldTitle = trim($userField['EDIT_FORM_LABEL']) !== '' ? $userField['EDIT_FORM_LABEL'] : $userField['FIELD_NAME'];

		//this means uf converted from iblock property (webdav)
		if(mb_strpos($userField['XML_ID'], 'PROPERTY_') === 0)
		{
			$fields[$userField['XML_ID']] = array(
				'Name' => $fieldTitle,
				'Options' => $editable,
				'Type' => $type,
				'Filterable' => $userField['MULTIPLE'] != 'Y',
				'Editable' => true,
				'Multiple' => $userField['MULTIPLE'] == 'Y',
				'Required' => $userField['MANDATORY'] == 'Y',
			);
		}

		if($userField['USER_TYPE']['USER_TYPE_ID'] === 'enumeration')
		{
			$fields[$fieldName . '_PRINTABLE'] = array(
				'Name' => $fieldTitle . ' (' . (isset($arOptions['PRINTABLE_SUFFIX']) ? $arOptions['PRINTABLE_SUFFIX'] : 'text') . ')',
				'Options' => $editable,
				'Type' => $type,
				'Filterable' => $userField['MULTIPLE'] != 'Y',
				'Editable' => true,
				'Multiple' => $userField['MULTIPLE'] == 'Y',
				'Required' => false,
			);
		}
		else
		{
			$fields[$fieldName] = array(
				'Name' => $fieldTitle,
				'Options' => $editable,
				'Type' => $type,
				'Filterable' => $userField['MULTIPLE'] != 'Y',
				'Editable' => true,
				'Multiple' => $userField['MULTIPLE'] == 'Y',
				'Required' => $userField['MANDATORY'] == 'Y',
			);
		}
	}

	return $fields;
}