- Модуль: 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'];
}