• Модуль: bizproc
  • Путь к файлу: ~/bitrix/modules/bizproc/lib/usertype/userfieldbase.php
  • Класс: BitrixBizprocUserTypeUserFieldBase
  • Вызов: UserFieldBase::renderControlSingle
static function renderControlSingle(FieldType $fieldType, array $field, $value, $allowSelection, $renderMode)
{
	global $USER_FIELD_MANAGER, $APPLICATION;

	$selectorValue = null;
	$typeValue = [];
	if (!is_array($value) || CBPHelper::isAssociativeArray($value))
	{
		$value = [$value];
	}

	foreach ($value as $v)
	{
		if (CBPActivity::isExpression($v))
		{
			$selectorValue = $v;
		}
		else
		{
			$typeValue[] = is_array($v) && isset($v['VALUE']) ? $value['VALUE'] : $v;
		}
	}

	$sType = static::getUserType($fieldType);
	$value = $typeValue;

	$arUserFieldType = $USER_FIELD_MANAGER->GetUserType($sType);

	$userField = [
		'ENTITY_ID' => sprintf('%s_%s',
			mb_strtoupper($fieldType->getDocumentType()[0]),
			mb_strtoupper($fieldType->getDocumentType()[2])
		),
		'FIELD_NAME' => static::generateControlName($field),
		'USER_TYPE_ID' => $sType,
		'SORT' => 100,
		'MULTIPLE' => $fieldType->isMultiple() ? 'Y' : 'N',
		'MANDATORY' => $fieldType->isRequired() ? 'Y' : 'N',
		'EDIT_IN_LIST' => 'Y',
		'EDIT_FORM_LABEL' => $arUserFieldType['DESCRIPTION'],
		'VALUE' => $value,
		'USER_TYPE' => $arUserFieldType,
		'SETTINGS' => [],
		'ENTITY_VALUE_ID' => 1,
	];

	if ($sType == 'boolean' && ($userField['VALUE'] == "Y" || $userField['VALUE'] == "N"))
	{
		$userField['VALUE'] = ($userField['VALUE'] == "Y") ? 1 : 0;
	}

	$userField['SETTINGS'] = $fieldType->getSettings();

	if (in_array($sType, ['iblock_element', 'iblock_section', 'boolean']) && ($renderMode & FieldType::RENDER_MODE_DESIGNER))
	{
		//TODO: fix checkboxes values
		$userField['SETTINGS']['DISPLAY'] = 'LIST';
	}
	elseif ($sType == 'crm' && empty($userField['SETTINGS']))
	{
		$userField['SETTINGS'] = ['LEAD' => 'Y', 'CONTACT' => 'Y', 'COMPANY' => 'Y', 'DEAL' => 'Y'];
	}
	elseif ($sType === 'iblock_element' && $renderMode & FieldType::RENDER_MODE_PUBLIC)
	{
		$userField['SETTINGS']['DISPLAY'] = 'UI';
	}

	ob_start();
	$APPLICATION->IncludeComponent(
		'bitrix:system.field.edit',
		$sType,
		[
			'arUserField' => $userField,
			'bVarsFromForm' => false,
			'form_name' => $field['Form'],
			'FILE_MAX_HEIGHT' => 400,
			'FILE_MAX_WIDTH' => 400,
			'FILE_SHOW_POPUP' => true
		],
		false,
		['HIDE_ICONS' => 'Y']
	);

	$renderResult = ob_get_clean();

	if ($allowSelection)
	{
		$renderResult .= static::renderControlSelector($field, $selectorValue, true, '', $fieldType);
	}

	return $renderResult;
}