• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/bizprocdocument.php
  • Класс: BitrixDiskBizProcDocument
  • Вызов: BizProcDocument::getDocumentFieldTypes
static function getDocumentFieldTypes($documentType)
{
	global $USER_FIELD_MANAGER;
	$storageId = self::getStorageIdByType($documentType);
	if(!$storageId)
	{
		throw new CBPArgumentNullException('documentType');
	}

	$result = array(
		"string" => array("Name" => Loc::getMessage("DISK_DOC_TYPE_STRING"), "BaseType" => "string"),
		"text" => array("Name" => Loc::getMessage("DISK_DOC_TYPE_TEXT"), "BaseType" => "text"),
		"int" => array("Name" => Loc::getMessage("DISK_DOC_TYPE_INT"), "BaseType" => "int"),
		"double" => array("Name" => Loc::getMessage("DISK_DOC_TYPE_DOUBLE"), "BaseType" => "double"),
		"select" => array("Name" => Loc::getMessage("DISK_DOC_TYPE_SELECT"), "BaseType" => "select", "Complex" => true),
		"bool" => array("Name" => Loc::getMessage("DISK_DOC_TYPE_BOOL"), "BaseType" => "bool"),
		"date" => array("Name" => Loc::getMessage("DISK_DOC_TYPE_DATA"), "BaseType" => "date"),
		"datetime" => array("Name" => Loc::getMessage("DISK_DOC_TYPE_DATETIME"), "BaseType" => "datetime"),
		"user" => array("Name" => Loc::getMessage("DISK_DOC_TYPE_USER"), "BaseType" => "user"),
		"file" => array("Name" => Loc::getMessage("DISK_DOC_TYPE_FILE"), "BaseType" => "file"),
	);

	$ignoredUserTypes = array(
		'string',
		'double',
		'boolean',
		'crm',
		'crm_status',
		'integer',
		'datetime',
		'file',
		'enumeration',
		'video',
		'string_formatted',
		'webdav_element_history',
		'iblock_element',
		'iblock_section',
		'hlblock',
		'disk_file',
		'disk_version',
		'date',
		'vote',
		'url_preview'
	);

	$types = $USER_FIELD_MANAGER->getUserType();
	foreach ($types as $type)
	{
		if(in_array($type['USER_TYPE_ID'], $ignoredUserTypes))
		{
			continue;
		}
		if(empty($type['USER_TYPE_ID']))
		{
			continue;
		}
		if($type['BASE_TYPE'] === 'enum')
		{
			$type['BASE_TYPE'] = 'select';
		}
		if($type['USER_TYPE_ID'] === 'employee')
		{
			$type['BASE_TYPE'] = 'user';
		}
		$typeId = static::getPrefixForCustomType().$type['USER_TYPE_ID'];
		$result[$typeId] = array(
			'Name' => $type['DESCRIPTION'],
			'BaseType' => $type['BASE_TYPE'],
		);
		if ($type['USER_TYPE_ID'] === 'employee')
		{
			$result[$typeId]['typeClass'] = BitrixBizprocBaseTypeUser::class;
		}
	}
	return $result;
}