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

	if(mb_strpos($fields['type'], static::getPrefixForCustomType()) === 0)
	{
		$fields['type'] = mb_substr($fields['type'], 3);
	}

	$fieldsTmp = array(
		'USER_TYPE_ID' => $fields['type'],
		'FIELD_NAME' => 'UF_'.mb_strtoupper($fields['code']),
		'ENTITY_ID' => 'DISK_FILE_' . $storageId,
		'SORT' => 150,
		'MULTIPLE' => $fields['multiple'] == 'Y' ? 'Y' : 'N',
		'MANDATORY' => $fields['required'] == 'Y' ? 'Y' : 'N',
		'SHOW_FILTER' => 'E',
	);

	$fieldsTmp['EDIT_FORM_LABEL'][LANGUAGE_ID] = $fields['name'];
	$fieldsTmp['LIST_COLUMN_LABEL'][LANGUAGE_ID] = $fields['name'];
	$fieldsTmp['LIST_FILTER_LABEL'][LANGUAGE_ID] = $fields['name'];
	switch($fields['type'])
	{
		case 'select':
		case 'enumeration':
		{
			$fieldsTmp['USER_TYPE_ID'] = 'enumeration';

			if(!is_array($fieldsTmp['LIST']))
			{
				$fieldsTmp['LIST'] = array();
			}

			$options = isset($fields['options']) && is_array($fields['options']) ? $fields['options'] : array();
			if(!empty($options))
			{
				$i = 10;
				foreach($options as $k => $v)
				{
					$fieldsTmp['LIST']['n' . $i] = array(
						'XML_ID' => $k,
						'VALUE' => $v,
						'DEF' => 'N',
						'SORT' => $i
					);
					$i = $i + 10;
				}
			}
			break;
		}
		case 'text':
		{
			$fieldsTmp['USER_TYPE_ID'] = 'string';
			break;
		}
		case 'int':
		{
			$fieldsTmp['USER_TYPE_ID'] = 'integer';
			break;
		}
		case 'user':
		{
			$fieldsTmp['USER_TYPE_ID'] = 'employee';
			break;
		}
	}

	$userField = new CUserTypeEntity();
	$id = $userField->add($fieldsTmp);
	if($id > 0)
	{
		if($fieldsTmp['USER_TYPE_ID'] == 'enumeration' && is_array($fieldsTmp['LIST']))
		{
			$enum = new CUserFieldEnum();
			$res = $enum->setEnumValues($id, $fieldsTmp['LIST']);
		}
	}

	return $fieldsTmp['FIELD_NAME'];
}